2017-04-25 34 views
3

我正在使用scikit學習的Logistic迴歸多類問題。哪些係數在scikit的多類邏輯迴歸中學到哪個類?

logit = LogisticRegression(penalty='l1') 
logit = logit.fit(X, y) 

我對想要哪種功能正在驅動此決定感興趣。

logit.coef_ 

以上爲我提供了(n_classes, n_features)格式的數據幀美麗的,但所有的類和功能名稱都沒有了。有了功能,那也沒關係,因爲做的假設,他們索引以同樣的方式,因爲我通過他們似乎是安全...

但帶班,這是一個問題,因爲我從來沒有在類中明確傳遞任何訂購。那麼係數集(數據框中的行)0,1,2和3屬於哪個類?

+0

它會簡單地從指數0責令'n_classses-1'。你通過數字或字符串'y'?如果字符串那麼將使用LabelEncoder將其轉換爲數字形式。你能在這裏展示你的'y'嗎? –

+0

字符串。標籤是:''GR3','GR4','SHH','GR3','GR4','SHH','GR4','SHH','GR4', 'WNT','GR3 '','GR4','GR3','SHH','SHH','GR3','GR4','SHH', 'GR4','GR3','SHH','GR3','SHH' ,'GR4','SHH','GR3','GR4', 'GR4','SHH','GR4','SHH','GR4','GR3','GR3','WNT', 'SHH', 'GR4','SHH','SHH','GR3','WNT','GR3','GR4','GR3','SHH'],dtype = object)類'0,1,2,3'。哪個對應哪個? –

+0

有沒有辦法訪問LogisticRegression對象內的LabelEncoder對象? –

回答

5

訂單將與logit.classes_(類別_是擬合模型的屬性,它表示y中存在的唯一類)的返回值相同,並且大多數情況下它們將在字符串的情況下按字母順序排列。

爲了解釋它,我們上述標籤Y對邏輯迴歸的隨機數據集:

import numpy as np 
from sklearn.linear_model import LogisticRegression 

X = np.random.rand(45,5) 
y = np.array(['GR3', 'GR4', 'SHH', 'GR3', 'GR4', 'SHH', 'GR4', 'SHH', 
       'GR4', 'WNT', 'GR3', 'GR4', 'GR3', 'SHH', 'SHH', 'GR3', 
       'GR4', 'SHH', 'GR4', 'GR3', 'SHH', 'GR3', 'SHH', 'GR4', 
       'SHH', 'GR3', 'GR4', 'GR4', 'SHH', 'GR4', 'SHH', 'GR4', 
       'GR3', 'GR3', 'WNT', 'SHH', 'GR4', 'SHH', 'SHH', 'GR3', 
       'WNT', 'GR3', 'GR4', 'GR3', 'SHH'], dtype=object) 

lr = LogisticRegression() 
lr.fit(X,y) 

# This is what you want 
lr.classes_ 

#Out: 
# array(['GR3', 'GR4', 'SHH', 'WNT'], dtype=object) 

lr.coef_ 
#Out: 
# array of shape [n_classes, n_features] 

所以在coef_矩陣,行中的索引0表示「GR3」(第一中classes_類陣列,1 =「GR4」等等。

希望它能幫助。

+0

非常感謝Vivek! –