【问题标题】:ValueError: setting an array element with a sequence when clf.fitValueError:在 clf.fit 时使用序列设置数组元素
【发布时间】:2023-04-02 00:35:01
【问题描述】:

我想训练给定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]  

【问题讨论】:

  • X 和 Y 的奇怪格式是什么?混合数组和浮点数?
  • 是的,这看起来不对。为什么你的 X 中有嵌套数组?
  • 大家好,请看我的编辑!基本上我的问题是我的数据框同时包含浮点数和向量。我应该怎么做才能处理这个数据训练?

标签: python arrays numpy vectorization


【解决方案1】:

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

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]])

【讨论】:

  • 基本上我在做NLP,将文本转换成向量;所以[1,2]代表例如音乐类型;打破清单和其他项目混合训练真的可以吗?
  • 普通分类器只接受一个普通向量作为每个项目的特征。所以你必须想出这样一个表示,而平面表示中包含的信息仍然是一样的。
猜你喜欢
  • 2011-06-08
  • 2018-08-04
  • 2019-08-04
相关资源
最近更新 更多