2017-10-13 35 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

在大量的教程,文檔等可用於瞭解基礎知識,任何建議開始自動裁決?至於第二種表達方式,向後學習就是答案。 –

相關問題