【发布时间】:2017-09-15 18:51:55
【问题描述】:
首先道歉。我对 pandas、scikit learn 和 python 很陌生。所以我确信我在做一些愚蠢的事情。让我介绍一下背景。
我正在尝试从 scikit learn (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:无法将字符串转换为浮点数:N
我检查了实际和预测,它们具有以下数据类型和内容
actual
Out[161]:
Target_Column
0 Y
1 N
:
[614 rows x 1 columns]
pred
Out[162]:
array(['Y', 'N', .....'N'], dtype=object)
注意:pred 有 614 个值。
我尝试将“实际”变量转换为一维数组我可能能够执行该函数,但是我没有成功。
我认为我需要做以下两件事,但是无法做到(在谷歌搜索之后)
1) 将实际转换为一维数组 2) 由于 pred 有 614 列,因此对 1Dimen 数组进行转置。
请告诉我如何更正该功能。
提前致谢! 拉杰
【问题讨论】:
-
不,你必须将 Y 和 N 转换为 1 和 0
-
请注意:我也试过 neigh.score(y,actual) 但出现以下错误:ValueError: could not convert string to float: N
标签: python pandas dataframe scikit-learn