我正在使用scikit learn的Logistic回归来解决多类问题。
logit = LogisticRegression(penalty='l1')
logit = logit.fit(X, y)
我对推动此决定的哪些功能感兴趣。
logit.coef_
以上为我提供了(n_classes, n_features)
格式的精美数据框,但所有类和功能名称都消失了。有了功能,这没关系,因为假设它们的索引方式与我传递它们的方式相同似乎是安全的......
但是对于类,这是一个问题,因为我从未以任何顺序明确地传入类。那么哪个类做系数集(数据帧中的行)0,1,2和3属于哪个?
答案 0 :(得分:9)
顺序与logit.classes_
返回的顺序相同(classes_是拟合模型的属性,表示y中存在的唯一类),并且大多数字符串将按字符串排列。
为了解释它,我们在LogisticRegression的随机数据集上提到了上述标签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'依此类推。
希望它有所帮助。