【问题标题】:Input format for logistic regression in scikit-learn as in Rscikit-learn 中逻辑回归的输入格式,如 R
【发布时间】:2016-04-10 08:20:13
【问题描述】:

在R 中使用逻辑回归时,'glm' 函数 (family = binomial) 的数据输入可以是:(?family) 多种格式,具体格式为:

......

对于二项式和拟二项式族,响应可以是 以三种方式之一指定:

......

作为数值介于 0 和 1 之间的数值向量,解释为 成功案例的比例(与给出的案例总数 由权重)....

我已经汇总了代表试验成功比例(0 到 1 之间的数字)及其等效权重的数据,我有兴趣对其应用逻辑回归,这在 R 中使用起来很简单。

不幸的是,我不能在这个项目中使用 R,并且想使用 scikit-learn 来估计逻辑回归系数。更准确地说,我希望以一种输入形式应用sklearn.linear_model.LogisticRegression,这将允许我以与 R 中可用的类似方式插入模型比例和重量。

示例:

from sklearn import linear_model
import pandas as pd

df = pd.DataFrame([[1,1,1,0], [1,1,1,0],[1,1,1,1],[2,2,1,1] , [2,2,1,1],[2,2,1,0] , [3,3,1,0] ],columns=['a', 'b','Trials','Success'])

logistic = linear_model.LogisticRegression()
#this works
logistic.fit(X=df[['a','b','Trials']] , y=df.Success)
logistic.predict_proba(df[['a','b','Trials']])
prob_to_success = logistic.predict_proba(df[['a','b','Trials']])[:,1]


    prob_to_success

Out[51]:  array([ 0.45535843,  0.45535843,  0.45535843,  0.42212169,  0.42212169,
        0.42212169,  0.38957565])

#How can i use the following Data?
df_agg = df.groupby(['a','b'] , as_index=False)['Trials','Success'].sum()
df_agg["Prop"] = df_agg.Success / (df_agg.Trials)
df_agg

 #I want to use Prop & Trials as weights in df_agg

提前致谢!

【问题讨论】:

    标签: python scikit-learn


    【解决方案1】:

    如果要使用权重,可以在LogisticRegression的fit函数中使用:

    fit(X, y, sample_weight=None)
    

    【讨论】:

    • 请注意,将该参数与 Proportions 一起使用会引发以下错误 ValueError: Unknown label type: (array([ 0. , 0.66666667]),)
    【解决方案2】:

    转换为对数赔率形式并在转换上使用线性回归。 Sklearn 似乎没有逻辑回归的准二项式转换。正如你所说,在 R 中微不足道,但 sklearn 似乎没有这种东西。

    【讨论】:

      猜你喜欢
      • 2017-03-31
      • 2016-02-21
      • 2016-07-31
      • 2018-03-01
      • 2012-06-27
      • 2016-06-17
      • 2019-09-20
      • 2020-07-27
      • 2016-12-27
      相关资源
      最近更新 更多