如何确定sklearn多项Logistic回归coef_系数对应的因变量类别
查看系数与类别对应关系的方法
训练完成的逻辑回归模型自带classes_属性,存储了模型内部使用的类别顺序,clf.coef_返回的系数数组行顺序和classes_的顺序完全一一对应,即系数数组第i行,对应clf.classes_[i]类别的概率方程参数。
直接运行以下代码即可输出明确的映射关系:
clf = LogisticRegression(random_state=0).fit(X_train, y_train) # 遍历输出类别与对应系数 for cls, coef in zip(clf.classes_, clf.coef_): print(f"类别 {cls} 对应系数:{coef}")
默认类别排序规则
模型拟合阶段会自动对输入的标签y做字典序升序排列,该排序和类别在训练集中出现的先后顺序无关,排序后的结果存入classes_属性,作为系数输出、概率预测的固定索引顺序。
针对你使用的鸢尾花物种数据集,三个类别按字典序排序结果为['setosa', 'versicolor', 'virginica'],和你输出的三行系数完全对应:
- 第一行系数
[-0.45372332, 0.91746178, -2.43353375, -1.05051338]对应setosa类 - 第二行系数
[ 0.63563613, -0.43787842, -0.19664149, -1.01769015]对应versicolor类 - 第三行系数
[-0.18191282, -0.47958336, 2.63017524, 2.06820352]对应virginica类
补充提示:sklearn的多分类逻辑回归默认采用对称参数化规则,所有类别对应同一个特征的系数之和为0,你可以将三行系数同列相加验证,结果会无限趋近于0。
内容的提问来源于stack exchange,提问作者Mangooo
相关产品推荐
相关产品推荐

