2017-10-13 34 views
1

时,这是行:的Python: “ValueError异常:设置与一个序列的阵列元素” 使用sklearn


from sklearn import tree 


X = [[181,80,44], [177, 70, 43], [160, 60, 38], 154, 54, 37], 
[166,64,40], [190,90,47], [175,64,39],[177,70,40],[159,55,37], 
[171,75,42],[181,85,43] 

Y = ['male', 'female', 'female', 'female', 'male', 'male', 'male', 
'female', 'male', 'female', 'male'] 

clf = tree.DecisionTreeClassifier() 

clf = clf.fit(X,Y) 

prediction = clf.predict([[182,78,43]]) 

print (prediction) 

结果:

Traceback (most recent call last): 


File "C:\Python\code\test.py", line 14, in <module> 
clf = clf.fit(X,Y) 
File "C:\Python\lib\site-packages\sklearn\tree\tree.py", line 790, in fit 
X_idx_sorted=X_idx_sorted) 
File "C:\Python\lib\site-packages\sklearn\tree\tree.py", line 116, in fit 
X = check_array(X, dtype=DTYPE, accept_sparse="csc") 
File "C:\Python\lib\site-packages\sklearn\utils\validation.py", line 402, 

in check_array 
array = np.array(array, dtype=dtype, order=order, copy=copy) 
in check_array 
array = np.array(array, dtype=dtype, order=order, copy=copy) 
ValueError: setting an array element with a sequence. 
[Finished in 0.5s] 

预期结果:

应该显示性别从身体测量预测:"182,78,43"

实施例:男性或女性

运行与Python 3.6使用sklearn,numpy的+ MKL和SciPy的上升华。

该代码最初来自:https://www.youtube.com/watch?v=T5pRlIbr6gg。 在整个YouTube的评论部分没有答案。 欣赏如果答案可以在这里找到,找不到任何答案。

回答

1

如果这真的是你的代码,问题就在从头开始:

X = [[181,80,44], [177, 70, 43], [160, 60, 38], 154, 54, 37], 
[166,64,40], [190,90,47], [175,64,39],[177,70,40],[159,55,37], 
[171,75,42],[181,85,43] 

是创造一些很远很远被使用:

print(X) 
# ([[181, 80, 44], [177, 70, 43], [160, 60, 38], 154, 54, 37],) 

因此,有每个方位的一个支架(如果你不明白:阅读sklearn关于数据格式的文档:shape的二维数组(n_samples,n_features);也可以阅读一些关于numpy的介绍,这些词的形状来自于 - >内部一切都是numpy - 基于):

X = [[181,80,44], [177, 70, 43], [160, 60, 38], [154, 54, 37], # before 154 
[166,64,40], [190,90,47], [175,64,39],[177,70,40],[159,55,37], 
[171,75,42],[181,85,43]]          # at end 

我不得不承认:这是应该马上找到的东西,我不明白为什么有人会投入时间为SO创建一个帖子,但不投入时间来检查简单数组创建的语法。为了公平起见:我认为它不会经过语法检查(这是一个非常奇怪的结构)。为了公平起见#2:在这个链接的视频中它真的很糟糕......我不确定该怎么想(对于这项任务,使用DTree可能已经很疯狂了,甚至LinearRegression似乎更可行)!

是的,代码预测male之后,校正已完成如上!

+0

开始时的初始方法与我所能想象的一样,就像视频中所解释的依赖(sklearn)需要有坚实的基础来工作,并且检索到的内容也很容易与此现象相关。感谢您在陈述中能够简洁明了。我从中学到了! –

+0

一定要抓住基础:numpy,sklearn。这一点很重要。我不认为这个视频通道一见钟情(破碎的代码,有趣的算法,这个概念,介绍,尤其是关于页面)!我不得不承认:没有检查python的文档,我并不真正了解你的X是什么(外层结构是一个元组),但它并不重要,因为它没有遵循所需的假设。 – sascha

+0

在大量的教程,文档等可用于了解基础知识,任何建议开始自动裁决?至于第二种表达方式,向后学习就是答案。 –

相关问题