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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/50123260/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-19 19:23:58  来源:igfitidea点击:

Python: ValueError: setting an array element with a sequence

pythonnumpyscikit-learnpreprocessor

提问by Sophia Zhang

I'm trying to use scikit-learnto do some ML.

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

I am using the preprocessingmodule to prep my data. The data are of type float.

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

From reading other questions regarding this issue: ValueError: setting an array element with a sequence, it's either due to wrong structure of my data or because my data is of type string. Neither seem to be the case here.

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

Please let me know if you have any idea how to solve this issue or what it even means. Thank you.

如果您有任何想法如何解决这个问题或者它意味着什么,请告诉我。谢谢你。

The code:

编码:

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)

print(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]]

The Error:

错误:

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.

回答by jpp

Your input array X is malformed. There are 59 elements in row 1, and 58 in rows 2 & 3. When you convert to a numpyarray it becomes an array of shape (3,)with dtype=Object.

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

The solution is to check and fix your input data. Each row in X must be the same length.

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