2017-08-03 52 views
0

我是機器學習的新手,我試圖對我的示例數據集應用邏輯迴歸我有一個包含數字列表並希望預測的單個功能類。邏輯迴歸=> ValueError:設置數組元素的序列

下面是我的代碼

from sklearn.linear_model import LogisticRegression 
a = [[1,2,3], [1,2,3,4,5,6], [4,5,6,7], [0,0,0,7,1,2,3]] 
b = [0,1,0, 0] 
p = [[9,0,2,4]] 

clfModel1 = LogisticRegression(class_weight='balanced') 
clfModel1.fit(a,b) 
clfModel1.predict(p) 

我收到以下錯誤

Traceback (most recent call last): 
    File "F:\python_3.4\NLP\t.py", line 7, in <module> 
    clfModel1.fit(a,b) 
    File "C:\Python34\lib\site-packages\sklearn\linear_model\logistic.py", line 1173, in fit 
    order="C") 
    File "C:\Python34\lib\site-packages\sklearn\utils\validation.py", line 521, in check_X_y 
    ensure_min_features, warn_on_dtype, estimator) 
    File "C:\Python34\lib\site-packages\sklearn\utils\validation.py", line 382, in check_array 
    array = np.array(array, dtype=dtype, order=order, copy=copy) 
ValueError: setting an array element with a sequence. 
>>> 

是否有某種方式來改變,這樣我可以在應用分類和預測結果的數據

+0

你的'a'不是一個有效的輸入 - 它是一個交錯的「矩陣」。在邏輯迴歸中,每個特徵需要是一個數字,而不是一個列表。這是如何與邏輯迴歸配合使用的? –

+0

我以爲同樣的事情,有沒有辦法,請幫忙 – M2skills

+0

這聽起來更像是一個CrossValidated的問題。 –

回答

2

邏輯迴歸是一種形式函數的估計量:

R^d -> [0,1] 

但是,您的數據顯然不是R^d的子集,因爲a中的每個樣本具有不同的長度(維數),因此無法應用。

另一個問題是,p也應該是樣本的列表,而不是單個樣本(當然它也必須有d維)。

沒有「解決這個問題」這簡直是一個錯誤的想法。什麼是一個典型的解決方案,用「奇」數據工作:

  • 您預定義自己,自定義映射(特徵提取步驟),該給定的變化長度的點輸出固定長度表示(所以輸出d號碼)。沒有這樣做的一般方式 - 一切都取決於數據。
  • 有一些模型可以處理不同長度的輸入,例如LSTMs,但它是從邏輯迴歸到循環神經網絡的巨大跳躍。
  • 使用基於相似性的方法(如kNN),並簡單地定義您自己的度量,以表明兩個「數字列表」是相似的。

沒有其他的方法 - 重新思考數據的表示或改變方法。

+0

我明白了你的意思,我已經按照你的建議改變了p,但是仍然沒有辦法輸入交錯的數據作爲分類器的輸入。謝謝 – M2skills

+0

事實上,正如答案的第一部分所述,LR不能應用於這些數據。問題與p是一件小事。 – lejlot

相關問題