sklearn(scikit-learn)逻辑回归包 — 预测值
逻辑回归可以帮助我们预测某个事件是否会发生。我想知道如何使用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_变量。