sklearn(scikit-learn)逻辑回归包 — 预测值

-1 投票
1 回答
847 浏览
提问于 2025-04-18 03:35

逻辑回归可以帮助我们预测某个事件是否会发生。我想知道如何使用sklearn来实现这个功能。

我想知道这个事件发生的概率是多少。

我有一个很大的数据集(2万行和20列)。为了简化工作,我使用随机数据来理解如何解读数据。

from sklearn import linear_model
import pandas as pd

dataset = pd.DataFrame({'A':np.random.rand(100)*1000, 'B':np.random.rand(100)*100,  'C':np.random.rand(100)*10, 'target':np.random.rand(100)})

X= dataset.ix[:,['A','B','C']].values
y = dataset.ix[:,['target']].values

lr = linear_model.LogisticRegression()

lr.fit(X, y)

linear_model.LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
          intercept_scaling=1, penalty='l2', random_state=None, tol=0.0001)

现在我应该使用(lr.predict_proba)来绘制图表,或者我该怎么做才能得到每一行的概率呢?

我的数据有19列作为预测变量,最后一列是目标变量(值在0到10之间)。

更新

我得到了这个结果:

print lr.predict_proba(predictors)
[[  1.61122069e-02   1.47030433e-02   1.48213716e-02 ...,   8.08825797e-03
    6.50384553e-03   3.20953536e-03]
 [  3.91350489e-03   1.39936656e-03   3.53096458e-06 ...,   1.67332322e-02
    1.11458951e-02   6.44572229e-03]
 [  1.16547744e-02   7.98966288e-03   8.06262657e-05 ...,   9.72661281e-03
    8.09694771e-03   4.15593586e-03]
 ..., 
 [  1.26231837e-02   6.35868640e-03   3.20057785e-05 ...,   7.15622753e-03
    4.98867462e-03   1.95033329e-03]
 [  1.03813411e-02   2.30054537e-02   1.00700970e-02 ...,   8.68843317e-03
    1.25933032e-02   1.20899556e-02]
 [  2.76829605e-02   4.81774549e-03   3.62315829e-03 ...,   1.16611574e-03
    3.01633739e-04   2.84767806e-05]]

我的问题是:我如何根据整体信息找到某一行的概率?我想要的结果类似于:

Data[O]
A  B    C   Target  Probability_index  
1  22  33    0        1.03813411e-02

1 个回答

0

如果我理解你的问题没错的话,你似乎是在想要根据一些数据来判断特定类别的概率。logistic回归中的predict_proba函数会返回一个矩阵,这个矩阵里包含了每个类别的概率。要知道每一列对应的是哪个类别,你可以查看你logistic回归对象里的classes_变量。

撰写回答