如何将数据帧转换为1D数组?

时间:2017-04-19 13:40:49

标签: python pandas dataframe scikit-learn

首先道歉。我是熊猫,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列。

请告诉我如何更正此功能。

提前致谢! 拉吉

2 个答案:

答案 0 :(得分:0)

感谢Vivek和Thornhale

确实我做了两件坏事。

  1. 正如你们所指出的那样,我应该使用1,0而不是Y, N.
  2. 我给函数分数提供了错误的参数。它应该是 accuracy = neigh.score(t,actual),其中t是测试特征集和 实际是测试标签信息。

答案 1 :(得分:-1)

你可以转换你的系列,这是你做的事情"测试[COLUMN_NAME]"像这样的数组:

actual.reshape(1, 612) # <- Could be the other way around as well.

要重新塑造一个np数组,你可以使用这个命令:

{{1}}

你的主要问题是你的系列必须是布尔值(如0,1)。