Python:如何使用 SKlearn 使用多项逻辑回归

数据挖掘 Python 数据挖掘 逻辑回归 scikit-学习
2021-10-14 13:45:20

我有一个测试数据集和训练数据集,如下所示。我提供了带有最少记录的样本数据,但我的数据有超过 1000 条记录。如果您看到这里E是我需要使用算法预测的目标变量。它只有四个类别,如 1、2、3、4。它只能采用这些值中的任何一个。

训练数据集:

A    B    C    D    E
1    20   30   1    1
2    22   12   33   2
3    45   65   77   3
12   43   55   65   4
11   25   30   1    1
22   23   19   31   2
31   41   11   70   3
1    48   23   60   4

测试数据集:

A    B    C    D    E
11   21   12   11
1    2    3    4
5    6    7    8 
99   87   65   34 
11   21   24   12

由于E只有 4 个类别,我想使用多项逻辑回归(1 vs Rest Logic)来预测这一点。我正在尝试使用 Python 来实现它。

我知道我们需要在变量中设置这些目标并使用算法来预测这些值中的任何一个的逻辑:

output = [1,2,3,4]

但是我被困在如何使用python(sklearn)循环这些值以及我应该使用什么算法来预测输出值?任何帮助将不胜感激。

1个回答

将训练数据放入两个 numpy 数组中:

import numpy as np

# data from columns A - D
Xtrain = np.array([[1,    20,   30,   1],
                   [2,    22,   12,   33],
                   [3,    45,   65,   77],
                   [12,   43,   55,   65],
                   [11,   25,   30,   1],
                   [22,   23,   19,   31],
                   [31,   41,   11,   70],
                   [1,    48,   23,   60]])

# data from column E
ytrain = np.array([1, 2, 3, 4, 1, 2, 3, 4])

然后训练一个逻辑回归模型:

from sklearn.linear_model import LogisticRegression

lr = LogisticRegression().fit(Xtrain, ytrain)

进行预测(在训练数据上):

yhat = lr.predict(Xtrain)

=> 导致“1, 4, 3, 4, 1, 2, 3, 4”.. 所以它有 7 对和 1 错。

计算精度:

from sklearn.metrics import accuracy_score

accuracy_score(ytrain, yhat)

=> 准确率达到 87.5%

要对新数据进行预测,只需创建另一个包含测试数据的 numpy 数组并调用lr.predict它。

您可能还想研究参数调整以提高您的分数。例如,LogisticRegression 类有一些控制正则化的参数 - 使用 sklearn.grid_search 中的方法调整它们可能会提高你的分数。