我正在尝试理解和使用scikit learn网站上的这段代码:
我已经将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# 在这里定义你的X和yclf = neighbors.KNeighborsClassifier(5)clf.fit(X, y)result = clf.predict([140,85])
分类器的参数(在我的例子中是5)描述了在预测时应考虑多少个邻居。调整这个数字,直到你得到满意的结果。