我是机器学习的新手。
我创建了一组数据,两组随机数。我正在尝试如何找到样本,但是在进行以下操作时,我的准确度得分非常低:
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%?拜托,能用最简单的方式向我解释。我真的很感激。
答案 0 :(得分:1)
通过执行y = np.arange(len(c))
,您有c
个不同的类(此处为200个类),每个类只有一个示例。在这样的设置中学习最近的邻居没有任何意义。
你想要什么(如果我猜对了)是为数据a
创建一个类,为数据b
创建另一个类。
将y
更改为:
y = np.concatenate([[0] *len(a), [1] *len(b)])
您将看到获得1.0的准确度分数,这意味着您已成功对所有测试示例进行分类。