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?