2017-04-25 121 views
0

我想訓練給定的數據df X and Y; X是功能,而Y是目標變量。ValueError:設置數組元素的序列clf.fit

首先打開DF到數組

X = X1.values 
Y = Y1.values 

print(type(X)) 
<class 'numpy.ndarray'> 

print(type(Y)) 
<class 'numpy.ndarray'> 

這是X和Y看起來像前兩行:

print(X) 

[[1 100.0 10 -8.465 0 0.332 0.0565 0.47100000000000003 0.696 0.521 292987 
    4.0 0.302 0.0 [1, 2] [1] [1, 1, 1, 1] [0, 0, 1, 1, 0, 1, 0, 0]] 
[1 175.483 6 -8.205 0 0.364 0.128 0.564 0.504 0.705 239320 4.0 0.0752 0.0 
    [1, 2] [1] [1, 1, 1, 1] [0, 1, 0, 0, 0, 0, 0, 1]] 


print(Y) 

[1 0] 

然而,當我試圖訓練數據:clf.fit(X,Y) 這樣的錯誤:

ValueError: setting an array element with a sequence. 

我覺得問題來自矢量裏面X;我能解決什麼問題? 謝謝!

============================================== === 或者我認爲問題是: 如何處理包含浮點數和向量以便進行數據培訓的數據框?

   Col_A   Col_B   Col_C 
0    0.0   [1, 2]   [1]  
1    0.0   [1, 2]   [1] 
+1

什麼是X和Y的奇怪格式?混合數組和浮點數? – languitar

+0

是的,這看起來不正確。爲什麼你的X中有嵌套數組? –

+0

大家好,看看我的編輯吧!基本上我的問題是我的數據幀包含浮點數和向量。我應該怎麼做來處理這個數據訓練? – user815408

回答

0

在將值傳遞給學習者之前,您需要將包含數組的列分成單獨的列。一個簡單的(手動)方式是:

In [18]: df 
Out[18]: 
    Col_A Col_B 
0  0 [1, 2] 
1  0 [3, 4] 

In [19]: pd.concat([df['Col_A'], df['Col_B'].apply(pd.Series)], axis=1).values 
Out[19]: 
array([[0, 1, 2], 
     [0, 3, 4]]) 
+0

基本上我在做NLP,將文本轉換成矢量;所以[1,2]代表,例如,音樂類型;是否真的可以打破清單並與其他物品混合進行訓練? – user815408

+0

一個普通的分類器只接受一個普通向量作爲每個項目的特徵。所以你必須提出這樣一種表述,平面表示中所包含的信息仍然是一樣的。 – languitar

+0

這很有道理謝謝! – user815408

相關問題