我在数据集上使用scikit-learn LogisticRegression
,其中因变量是具有10个可能值(标记为1到10)的分类变量。我的统计知识是相当严谨的。
每个输出值的概率固有地受到它们必须求和到1
的要求的约束,而我对数学的理解是需要有reference category
(例如最可能的类别)并且相对于参考类别的概率表示其他9个结果中的每一个的概率,因此每个解释变量有效地存在9个系数(而不是10个)。
我不清楚这是由LogisticRegression.fit()
方法自动完成的,如果是这样,它会假设第一个类别是引用(1
)?
或者我是否需要以某种方式处理输入数据,因此只有9个类别?
或者我忽略了这一点,并在输出时使用10个系数?
答案 0 :(得分:2)
scikit-learn
的{{1}}实现会使用LogisticRegression
方法自动处理幕后的所有内容。这是它是如此有用的模块的主要原因。它们的拟合/变换/预测API直观且易于使用,隐藏了用户的所有算法复杂性。
他们的实施是One-vs-Rest方案,其中对于每个类别,训练分类器以在该类别中识别具有一定置信水平的值。为了进行预测,比较分类器(在您的情况下为10个分类器)的各种置信度,并选择具有最高置信度的类。为了计算概率,这个置信度向量归一化为1,以解释预测中的任何潜在错误。
还有一个.fit()
关键字参数,它使用交叉熵损失直接用一个分类器同时预测所有10个类的概率。这可能更类似于您已经阅读的实现,但multiclass
实施的文档很少。