2017-04-25 123 views
0

我想训练给定的数据df X and Y; X是功能,而Y是目标变量。ValueError:设置数组元素的序列clf.fit

首先打开DF到数组

X = X1.values 
Y = Y1.values 

print(type(X)) 
<class 'numpy.ndarray'> 

print(type(Y)) 
<class 'numpy.ndarray'> 

这是X和Y看起来像前两行:

print(X) 

[[1 100.0 10 -8.465 0 0.332 0.0565 0.47100000000000003 0.696 0.521 292987 
    4.0 0.302 0.0 [1, 2] [1] [1, 1, 1, 1] [0, 0, 1, 1, 0, 1, 0, 0]] 
[1 175.483 6 -8.205 0 0.364 0.128 0.564 0.504 0.705 239320 4.0 0.0752 0.0 
    [1, 2] [1] [1, 1, 1, 1] [0, 1, 0, 0, 0, 0, 0, 1]] 


print(Y) 

[1 0] 

然而,当我试图训练数据:clf.fit(X,Y) 这样的错误:

ValueError: setting an array element with a sequence. 

我觉得问题来自矢量里面X;我能解决什么问题? 谢谢!

============================================== === 或者我认为问题是: 如何处理包含浮点数和向量以便进行数据培训的数据框?

   Col_A   Col_B   Col_C 
0    0.0   [1, 2]   [1]  
1    0.0   [1, 2]   [1] 
+1

什么是X和Y的奇怪格式?混合数组和浮点数? – languitar

+0

是的,这看起来不正确。为什么你的X中有嵌套数组? –

+0

大家好,看看我的编辑吧!基本上我的问题是我的数据帧包含浮点数和向量。我应该怎么做来处理这个数据训练? – user815408

回答

0

在将值传递给学习者之前,您需要将包含数组的列分成单独的列。一个简单的(手动)方式是:

In [18]: df 
Out[18]: 
    Col_A Col_B 
0  0 [1, 2] 
1  0 [3, 4] 

In [19]: pd.concat([df['Col_A'], df['Col_B'].apply(pd.Series)], axis=1).values 
Out[19]: 
array([[0, 1, 2], 
     [0, 3, 4]]) 
+0

基本上我在做NLP,将文本转换成矢量;所以[1,2]代表,例如,音乐类型;是否真的可以打破清单并与其他物品混合进行训练? – user815408

+0

一个普通的分类器只接受一个普通向量作为每个项目的特征。所以你必须提出这样一种表述,平面表示中所包含的信息仍然是一样的。 – languitar

+0

这很有道理谢谢! – user815408

相关问题