python - 逻辑回归返回太多系数
问题描述
当使用该linear_model.LogisticRegression()
函数针对因变量 (y) 获得 3 个预测变量 (X) 的 3 个回归系数时,我调用该logref.coef_
函数来查看每个系数,而是出现了大约 200 个值。它是如何成功注册比我最初输入的更多的功能的?我知道我只打算有 3 个与每个预测变量对应的变量。
Image1显示了以下的输出:dataframe.head()
图 2显示了 的输出:print(logreg.coef_)
import pandas as pd
import numpy as np
from scipy import stats
from sklearn import linear_model
data = pd.read_excel('DATASET')
dataframe = data[['GNIpc','Marriage female', 'waged male','waged female']].replace('..',
np.nan).dropna()
X = dataframe[['Marriage female', 'waged male','waged female']]
y = dataframe[['GNIpc']]
logreg = linear_model.LogisticRegression()
logreg.fit(X, y)
print(logreg.coef_)
>>> [[-0.0532999 0.0282386 -0.36440672]
[-0.03349039 -0.09097408 0.0516077 ]
[ 0.02133783 -0.10573915 0.03944377]
[-0.02723709 -0.09365962 0.0625376 ]
[-0.02377661 0.10073943 -0.6386778 ]
[-0.0162161 -0.05130708 -0.21533241]
[-0.09565614 0.03214048 -0.12573514]
[-0.11774399 0.04124659 -0.08295302]
[ 0.01697128 -0.3196196 0.18449796]
[-0.03153424 -0.09193552 0.02516725]
[ 0.00496581 -0.297038 0.17636911]
[ 0.02503764 -0.13152531 -0.36763286]
[-0.52025686 0.3663963 -0.46018477]
[ 0.12337318 -0.41343403 -0.83253983]
[-0.01623575 -0.02691109 -0.06407165]
[-0.01307591 -0.10721795 0.06188949]
[-0.08106017 0.02097464 -0.06847169]
[-0.03246505 -0.12340276 0.03465779]
[-0.03058392 -0.17116052 0.13834497]
[-0.04529128 -0.08847383 0.06050442]
[ 0.00324746 -0.70348851 0.5887903 ]
[-0.0730169 0.04685963 -0.17306655]
[-0.20895759 0.21741604 -0.2835841 ]
[-0.04765593 -0.02911799 -0.04101694]
[-0.06553731 0.01516212 -0.10556077]
[-0.17959739 0.39386919 -0.97548649]
[-0.03869242 -0.12421051 0.0962199 ]
[-0.02286379 -0.10571808 0.02182333]
[-0.91660719 0.3343537 -0.31409916]
[-0.09193558 -0.06053258 0.04748263]
[-0.10195001 0.07841969 -0.16552518]
[-0.36625827 -0.46961584 0.43743011]
[-0.49169925 0.01808853 -0.00918122]
[-0.30465374 0.09363753 -0.09558291]
[-0.06388412 -0.05418759 0.0341766 ]
[-0.10131437 -0.00557687 -0.00839488]]
X.shape
>>> (42, 3)
y.shape
>>> (42, 1)
解决方案
如果您查看您正在使用的LogisticRegression类的文档,您将看到:
当给定问题是二元问题时,coef_ 的形状为 (1, n_features)。
你给定的问题,因为它被放入分类器,不是二元的。
另外,如果你仔细检查你的 coef_,你会看到你有一个列表作为输出。每个内部列表具有三个元素,它们对应于二元决策问题的模型的三个系数。这也在文档中进行了解释,引用:
在多类情况下,如果 'multi_class' 选项设置为 'ovr',则训练算法使用 one-vs-rest (OvR) 方案,如果 'multi_class' 选项设置为 'multinomial,则使用交叉熵损失'。
我建议阅读线性/逻辑回归的基础知识、Python 列表以及如何处理多类问题的策略,例如使用One-vs-the-rest (OvR) 多类/多标签策略。
推荐阅读
- excel - 发送多个电子邮件通知时出现运行时错误 462
- templates - 如果用户没有角色,如何在 TWIG 中添加条件?
- firefox-addon-webextensions - 如何在企业环境中更新与 Firefox 一起部署的 Firefox WebExtensions?
- php - $this->genlib->ajaxOnly(); 是什么?意思是?
- javascript - node.js 中的缓冲区和 URL 编码
- scala - 如何配置 IntelliJ 以在“优化导入”上为 Scala 代码库使用短包名称?
- c++ - 使用 ffmpeg 将实际时间戳添加到 mp4
- sql - 查找引用不存在表的过程
- sql-server - 如何将下拉列表中的 SSMS 连接复制到新计算机?
- javascript - 从文件夹回调推送文件列表