我对python知之甚少但是对于我的班级我必须进行KNN分类,我需要得到所有邻居(不仅仅是通过多数投票预测的那些)并获得每个邻居的百分比(百分比)发生的机会)。例如我的火车数据如下:
zip lat long
77339 73730.689 -990323.6834
77339 73731.699 -990323.6834
77345 71679.54137 -998244.7071
77346 71679.54137 -998245.7071
我的测试数据是:
77388 55410.72694 -994507.7348
77389 60816.86756 -990211.3075
77396 68641.10762 -997071.3902
77380 48762.26134 -978612.6912
其中zip是预测所需的类。我为火车和测试集制作了两个文件。我的目标是获取每个测试实例的邻居列表。所以,如果大多数投票说测试集中的zip 77388的预测拉链是77380(k = 3),那么我想知道77380以及该拉链的其他邻居的百分比是多少(其他2个邻居可能是77388) ,77389)。
我借助此链接http://alexhwoods.com/k-nearest-neighbors-in-scikit-learn/尝试了以下代码。
import pandas as pd
import numpy as np
train =pd.read_csv('C:\\train.csv')
test =pd.read_csv('C:\\test.csv')
from sklearn.neighbors import KNeighborsClassifier
cols=['lat','long']
cols2=['tweetzip']
trainArr=train.as_matrix(cols) #trainArr= has training numeric feature (location)
trainRes=train.as_matrix(cols2) # trainRes= contains the correct zip for training data
testArr=test.as_matrix(cols) ##testArr= has location of test data
testRes=test.as_matrix(cols2) # ##testRes= has correct tweetzip for test tada
knn =KNeighborsClassifier(n_neighbors=3,weights='uniform')
knn.fit(trainArr,trainRes.ravel())
output=knn.predict(testArr)
knn.kneighbors(testArr, return_distance=False) ### is it the same as previous line?
tweezip=[]
predictzip=[]
correct=0.0
for i in range(len(output)):
if testRes[i][0]==output[i]:
correct+=1
tweezip.append(testRes[i][0])
predictzip.append(output[i])
print tweezip
print predictzip
print 'correct',correct/len(output)
我试图找到一些但却找不到对我有帮助的东西。谢谢。
答案 0 :(得分:0)
graphlab可以轻松实施,免费用于学术学习。关于ML的结帐课程,包括聚类和graphlab here
的介绍我发现machine learning mastery上的这个链接也更容易理解和实现,只是用python编写的更简单的应用程序。