scikit-learn 中的最近邻分类

Nearest Neighbors Classification in scitkit-learn

我正在尝试理解和使用 this code from the scikit learn site:

我已将 X 更改为

X = [[ 170,  70 ], [ 180,  80  ], [ 190,  90 ], [ 200,  100], [ 172,  80 ], [ 182,  72 ], [ 185,  95 ], [ 184,  74 ], [ 184,  80 ], [ 177,  67 ], [ 177,  77 ], [ 177,  87 ],
     [ 190,  85 ], [ 190,  86  ], [ 190,  97 ], [ 190,  82 ], [ 190,  84 ], [ 195,  85 ], [ 185,  92 ], [ 185,  77 ], [ 183,  87 ], [ 183,  77 ], [ 183,  78 ], [ 182,  88 ],
     [ 177,  78 ], [ 177,  82  ], [ 176,  70 ], [ 172,  65 ], [ 170,  62 ], [ 170,  68 ], [ 173,  65 ], [ 173,  64 ], [ 168,  71 ], [ 169,  62 ], [ 174,  80 ], [ 173,  65 ],
     [ 180,  100], [ 180,  60  ], [ 170,  90 ], [ 170,  55 ], [ 180,  68 ], [ 175,  92 ], [ 168,  100], [ 177,  110], [ 180,  110], [ 186,  65 ], [ 186,  145], [ 190,  120],
     [ 175,  55 ], [ 182,  65  ], [ 195,  70 ], [ 173,  90 ], [ 175,  50 ], [ 182,  130], [ 183,  65 ], [ 150,  82 ], [ 155,  80 ], [ 200,  70 ], [ 185,  110], [ 176,  100]]

这是作为训练数据集的身高和体重。

我也将 y 更改为

y = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

这是可以接受的-不可以接受的,我的两个类。

如何测试像 [140, 85] 这样的新案例,看看它是 1 还是 0?

Z = clf.predict(np.c_[xx.ravel(), yy.ravel()]) 

示例中使用与训练数据相同的数据,它的计算基于训练数据集的最小值、最大值和步长,这令人困惑。请帮忙。

您链接的示例非常复杂,因为它还创建了您在网站上看到的情节。

没有情节就像打电话一样简单

result = clf.predict([140,85])

获取新样本 [140, 85] 的结果。

总而言之,您真正需要的是以下内容:

from sklearn import neighbors

# Define your X and y here

clf = neighbors.KNeighborsClassifier(5)
clf.fit(X, y)
result = clf.predict([140,85])

分类器的参数(在我的示例 5 中)描述了预测应考虑多少邻居。玩这个数字,直到你得到一个不错的结果。