首先道歉。我是熊猫,scikit learn和python的新手。所以我相信我做的事情很傻。让我给一点背景。
我正在尝试从scikit学习(python)运行KNeighborsClassifier 以下是我的策略
#Reading the Training set
data = pd.read_csv('Path_TO_File\\Train_Set.csv', sep=',') # reading CSV File
X = data[['Attribute 1','Attribute 2']]
y = data['Target_Column'] # the output is a Dataframe of single column with many rows
neigh = KNeighborsClassifier(n_neighbors=3)
neigh.fit(X,y)
接下来我尝试阅读测试数据
test = pd.read_csv('PATH_TO_FILE\\Test.csv', sep=',')
t = test[['Attribute 1','Attribute 2']]
pred = neigh.predict(t)
actual = test['Target_Column']
接下来,我尝试通过跟随抛出错误的函数来检查准确性。
accuracy=neigh.score(actual,pred)
错误:ValueError:无法将字符串转换为float:N
我检查了实际和预测两者,它们具有以下数据类型和内容
actual
Out[161]:
Target_Column
0 Y
1 N
:
[614 rows x 1 columns]
pred
Out[162]:
array(['Y', 'N', .....'N'], dtype=object)
N.B:pred有614个值。
我试图将“实际”变量转换为1D数组我可能能够执行该功能但是,我没有成功。
我认为我需要做两件事,但是,无法这样做(谷歌搜索后)
1)将实际转换为1Dimen数组 2)进行1Dimen数组的转置,因为pred有614列。
请告诉我如何更正此功能。
提前致谢! 拉吉
答案 0 :(得分:0)
感谢Vivek和Thornhale
确实我做了两件坏事。
答案 1 :(得分:-1)
你可以转换你的系列,这是你做的事情"测试[COLUMN_NAME]"像这样的数组:
actual.reshape(1, 612) # <- Could be the other way around as well.
要重新塑造一个np数组,你可以使用这个命令:
{{1}}
你的主要问题是你的系列必须是布尔值(如0,1)。