簡體   English   中英

在scikit-learn中實現K Neighbors Classifier,每個對象有3個特征

[英]Implement K Neighbors Classifier in scikit-learn with 3 feature per object

我想用scikit-learn模塊實現一個KNeighborsClassifier( http://scikit-learn.org/dev/modules/generated/sklearn.neighbors.KNeighborsClassifier.html

我從我的圖像中檢索堅固性,伸長率和Humoments功能。 我如何准備這些數據進行培訓和驗證? 我必須為從我的圖像中檢索到的每個對象創建一個包含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並現在采樣?

您的第一段代碼定義了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

第二部分代碼實際上對scikit-learn有很好的指導:

在下面的示例中,我們從表示數據集的數組構造一個NeighborsClassifier類,並詢問誰是[1,1,1]的最近點

>>> samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]]
>>> from sklearn.neighbors import 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方法,則應使用KNeighborsClassifier 您可能想要構建特征向量X並標記y ,如下所示:

X = [ [h1, e1, s1], 
      [h2, e2, s2],
      ...
    ]
y = [label1, label2, ..., ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM