6

scikit-learnモジュールを使用してKNeighborsClassifierを実装したいと思います(http://scikit-learn.org/dev/modules/generated/sklearn.neighbors.KNeighborsClassifier.html

画像の堅牢性、伸び、ヒューモメントの特徴から取得します。トレーニングと検証のためにこれらのデータを準備するにはどうすればよいですか?画像から取得したすべてのオブジェクトについて、3つの機能[Hm、e、s]を含むリストを作成する必要があります(1つの画像からより多くのオブジェクトがあります)?

私はこの例を読みました(http://scikit-learn.org/dev/modules/generated/sklearn.neighbors.KNeighborsClassifier.html):

X = [[0], [1], [2], [3]]
y = [0, 0, 1, 1]
from sklearn.neighbors import KNeighborsClassifier
neigh = KNeighborsClassifier(n_neighbors=3)
neigh.fit(X, y) 

print(neigh.predict([[1.1]]))
print(neigh.predict_proba([[0.9]]))

Xとyは2つの機能ですか?

samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]]
from sklearn.neighbors import NearestNeighbors
neigh = NearestNeighbors(n_neighbors=1)
neigh.fit(samples) 

print(neigh.kneighbors([1., 1., 1.])) 

なぜ最初の例でXとyを使用し、次にサンプルを使用するのですか?

4

1 に答える 1

13

コードの最初のセグメントは、1dデータの分類子を定義します。

X特徴ベクトルを表します。

[0] is the feature vector of the first data example
[1] is the feature vector of the second data example
....
[[0],[1],[2],[3]] is a list of all data examples, 
  each example has only 1 feature.

yラベルを表します。

以下のグラフはアイデアを示しています。

ここに画像の説明を入力してください

  • 緑のノードはラベル0のデータです
  • 赤いノードはラベル1のデータです
  • 灰色のノードは、ラベルが不明なデータです。
    print(neigh.predict([[1.1]]))

これは、のラベルを予測するように分類器に要求していx=1.1ます。

    print(neigh.predict_proba([[0.9]]))

これは、分類器に各ラベルのメンバーシップ確率の推定値を与えるように求めています。

両方の灰色のノードが緑色の近くにあるため、以下の出力は理にかなっています。

    [0] # green label
    [[ 0.66666667  0.33333333]]  # green label has greater probability

コードの2番目のセグメントには、実際には次のような適切な指示がありますscikit-learn

次の例では、データセットを表す配列からNeighborsClassifierクラスを作成し、[1,1,1]に最も近いポイントを尋ねます。

>>>サンプル=[[0.、0.、0.]、[0.、.5、0.]、[1.、1.、.5]]
>>> sklearn.neighborsから、NearestNeighborsをインポートします
>>> neigh = NearestNeighbors(n_neighbors = 1)
>>> neigh.fit(samples)
NearestNeighbors(algorithm ='auto'、leaf_size = 30、...)
>>> print(neigh.kneighbors([1.、1.、1.]))
(array([[0.5]])、array([[2]] ...))

NearestNeighborsこれはクラスのみであり、分類子ではないため、ここにはターゲット値はありません。したがって、ラベルは必要ありません。

あなた自身の問題のために:

分類子が必要なので、アプローチKNeighborsClassifierを使用する場合はに頼る必要があります。以下のようKNNに、特徴ベクトルXとラベルを作成することをお勧めします。y

X = [ [h1, e1, s1], 
      [h2, e2, s2],
      ...
    ]
y = [label1, label2, ..., ]
于 2013-01-24T21:41:05.457 に答える