sklearn.KNeighborsClassifier给出了非常低的准确度分数

时间:2017-05-16 12:48:37

标签: python scikit-learn

我是机器学习的新手。

我创建了一组数据,两组随机数。我正在尝试如何找到样本,但是在进行以下操作时,我的准确度得分非常低:

from random import randint as R
from matplotlib import pyplot as plt
import numpy as np

from sklearn.neighbors import KNeighborsClassifier as KNC
from sklearn.cross_validation import train_test_split as tts
from sklearn.metrics import accuracy_score


a = [R(100,200) for x in range(100)] 

b = [R(1000,2000) for x in range(100)] 

c = a+b 

X = np.array(c).reshape(len(c),1) 
y = np.arange(len(c)) 


train_X, test_X, train_y,test_y = tts(X,y,test_size=0.4)



mimi = KNC()
mimi.fit(train_X, train_y) 

y__pred = mimi.predict(train_X)
print(accuracy_score(train_y,y__pred))
print(mimi.score(train_X,train_y))

我收到了0.18的结果......这究竟是什么意思?预测分数仅为18%?拜托,能用最简单的方式向我解释。我真的很感激。

1 个答案:

答案 0 :(得分:1)

通过执行y = np.arange(len(c)),您有c个不同的类(此处为200个类),每个类只有一个示例。在这样的设置中学习最近的邻居没有任何意义。

你想要什么(如果我猜对了)是为数据a创建一个类,为数据b创建另一个类。 将y更改为:

y = np.concatenate([[0] *len(a), [1] *len(b)])

您将看到获得1.0的准确度分数,这意味着您已成功对所有测试示例进行分类。