Python:ValueError:使用序列设置数组元素

Posted

技术标签:

【中文标题】Python:ValueError:使用序列设置数组元素【英文标题】:Python: ValueError: setting an array element with a sequence 【发布时间】:2018-10-11 21:23:54 【问题描述】:

我正在尝试使用 scikit-learn 来做一些机器学习。

我正在使用 预处理 模块来准备我的数据。数据的类型为 float

通过阅读有关此问题的其他问题:ValueError: setting an array element with a sequence,这要么是由于我的数据结构错误,要么是因为我的数据是字符串类型。这里似乎都不是这样。

如果您知道如何解决此问题或它的含义,请告诉我。谢谢你。

代码:

print(X)

pred_X = np.array(pred_X)
pred_Y = np.array(pred_Y)
X = np.array(X)
Y = np.array(Y)

X = preprocessing.scale(X)
pred_X = preprocessing.scale(pred_X)

打印(x):

[[547180.0, 120.0, 113.0, 456701.0, 1.0, 6.43, -1.0, 0.313, 0.42, 0.267 3.0, 11800.0, 607208.0, 120.0, 113.0, 456701.0, 1.0, 0.273, 0.331, 0.154, 6.0, 10300.0, 458015.0, 113.0, 120.0, 45328 6.0, 1.0, 2.54, -1.0, 0.32, 0.443, 0.257, 3.0, 92000.0, 543685.0, 120.0, 113.0, 456701.0, 1.0, 6.43, 1.0, 0.296, 0.4, 0.234, 2.0, 8800.0, 594809.0, 475582.0, 120.0, 113.0, 456701.0, 1.0, 1.0, 0.295, 0.384, 0.264, 4.0, 7700.0], 
[547180.0, 120.0, 113.0, 456701.0, 1.0, 6.43, -1.0, 0.313, 0.42, 0.267, 3.0, 11800.0, 607208.0, 120.0, 113.0, 456701.0, 1.0, 0.273, 0.331, 0.154, 6.0, 10300.0, 458015.0, 113.0, 120.0, 453286.0, 1.0, 2.54, -1.0, 0.32, 0.443, 0.257, 3.0, 92000.0, 543685.0, 120.0, 113.0, 456701.0, 1.0, 6.43, 1.0, 0.296, 0.4, 0.234, 2.0, 8800.0, 594809.0, 435062.0, 120.0, 113.0, 456701.0, 1.0, 1.0, 0.312, 0.364, 0.154, 5.0, 6900.0], 
[547180.0, 120.0, 113.0, 456701.0, 1.0, 6.43, -1.0, 0.313, 0.42, 0.267, 3.0, 11800.0, 607208.0, 120.0, 113.0, 456701.0, 1.0, 0.273, 0.331, 0.154, 6.0, 10300.0, 458015.0, 113.0, 120.0, 453286.0, 1.0, 2.54, -1.0, 0.32, 0.443, 0.257, 3.0, 92000.0, 543685.0, 120.0, 113.0, 456701.0, 1.0, 6.43, 1.0, 0.296, 0.4, 0.234, 2.0, 8800.0, 594809.0, 446308.0, 120.0, 113.0, 456701.0, 1.0, 0.0, 0.221, 0.28e, 0.115, 8.0, 6400.0]]

错误:

Traceback (most recent call last):
  File "sampleSVM.py", line 46, in <module>
    X = preprocessing.scale(X)
  File "/home/user/.local/lib/python3.5/site-packages/sklearn/preprocessing/data.py", line 133, in scale
    dtype=FLOAT_DTYPES)
  File "/home/user/.local/lib/python3.5/site-packages/sklearn/utils/validation.py", line 433, in check_array
    array = np.array(array, dtype=dtype, order=order, copy=copy)
ValueError: setting an array element with a sequence.

【问题讨论】:

45328 6.0 这样的元素阻止我复制粘贴你的X 下面的答案有帮助吗?随意接受答案(左侧的绿色勾号),或要求澄清。 【参考方案1】:

您的输入数组 X 格式错误。第 1 行有 59 个元素,第 2 行和第 3 行有 58 个元素。当您转换为 numpy 数组时,它会变成形状为 (3,)dtype=Object 的数组。

解决方案是检查并修复您的输入数据。 X 中的每一行的长度必须相同。

【讨论】:

以上是关于Python:ValueError:使用序列设置数组元素的主要内容,如果未能解决你的问题,请参考以下文章

ValueError:使用序列设置数组元素

SKLearn ValueError:使用序列设置数组元素

了解 scikit-learn ValueError:由于数据形状而设置具有序列的数组元素

ValueError:在 TFIDF 上训练 KD TRee 时使用序列设置数组元素

ValueError:使用序列设置数组元素(LogisticRegression with Array based feature)

python错误使用序列设置数组元素