Scikit/Numpy/Pandas ValueError:使用序列设置数组元素

Posted

技术标签:

【中文标题】Scikit/Numpy/Pandas ValueError:使用序列设置数组元素【英文标题】:Scikit/Numpy/Pandas ValueError: setting an array element with sequence 【发布时间】:2016-01-21 00:19:39 【问题描述】:

我有一个 pandas 数据框,其中包含 0-9 的字符串作为列名:

working_df = pd.DataFrame(np.random.rand(5,10),index=range(0,5), columns=[str(x) for x in range(10)])
working_df.loc[:,'outcome'] = [0,1,1,0,1]

然后我想将所有这些数字的数组放在一列中,所以我这样做了:

array_list = [Y for Y in x[[str(num) for num in range(10)]].values]

这给了我:

[array([ 0.0793451 ,  0.3288617 ,  0.75887129,  0.01128641,  0.64105905,
         0.78789297,  0.69673768,  0.20354558,  0.48976411,  0.72848541]),
 array([ 0.53511388,  0.08896322,  0.10302786,  0.08008444,  0.18218731,
         0.2342337 ,  0.52622153,  0.65607384,  0.86069294,  0.8864577 ]),
 array([ 0.82878026,  0.33986175,  0.25707122,  0.96525733,  0.5897311 ,
         0.3884232 ,  0.10943644,  0.26944414,  0.85491211,  0.15801284]),
 array([ 0.31818888,  0.0525836 ,  0.49150727,  0.53682492,  0.78692193,
         0.97945708,  0.53181293,  0.74330327,  0.91364064,  0.49085287]),
 array([ 0.14909577,  0.33959452,  0.20607263,  0.78789116,  0.41780657,
         0.0437907 ,  0.67697385,  0.98579928,  0.1487507 ,  0.41682309])]

然后我使用以下方法将它附加到我的数据框:

working_df.loc[:,'array_list'] = pd.Series(array_list)

然后我设置我的rf_clf = RandomForestClassifier() 并尝试设置rf_clf.fit(working_df['array_list'][1:].values, working_df['outcome'][1:].values),结果是ValueError: setting an array element with sequence

是不是配件中的数组有问题?感谢您的任何见解。

【问题讨论】:

请您在您的问题中显示完整的错误回溯,以便我们可以查看引发异常的确切位置 【参考方案1】:

问题在于 scikit-learn 需要一个二维数组作为输入。您正在传递一个一维对象数组(每个对象本身都是一个一维数组)。

一个快速的解决办法是这样做:

X = np.array(list(working_df['array_list'][1:]))
y = working_df['outcome'][1:].values
rf_clf.fit(X, y)

更好的解决方法是不要将二维特征数组存储在一维 pandas 列中。

【讨论】:

谢谢!你的视频是我开始学习 scikit-learn 的原因。谢谢你的提示

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

C# JSON 将字典序列化为 key:value, ... 而不是 key:key, value:value, ...

@size(max = value) 与 @min(value) 和 @max(value) 之间的区别

Excel中,如何随机返回一个值,从已有的数组里,如从(value1,value2,value3,value4,value5,value6....)中取一

如何在 post 请求中将 value1 分配给 value2?

js中$value = $("#value")和_value = $("#value")这种赋值有啥区别

html中value的作用