ValueError:在clf.fit时设置一个带有序列的数组元素

时间:2017-04-25 15:18:14

标签: python arrays numpy vectorization

我想训练给出df X and Y的数据; X是功能,而Y是目标变量。

首先将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 个答案:

答案 0 :(得分: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]])