scikit-learn中逻辑回归的输入格式与R中相同。

3
在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

感谢您的预先支持!
2个回答

0

将其转换为对数几率形式,并对转换后的数据使用线性回归。Sklearn似乎没有适用于逻辑回归的拟似二项式转换。就像你所说的,在R中是轻而易举的,但是Sklearn似乎没有类似的功能。


-1

如果你想使用权重,可以在LogisticRegression的fit函数中使用它们:

fit(X, y, sample_weight=None)

请注意,使用Proportions参数会引发以下错误:ValueError: Unknown label type: (array([ 0. , 0.66666667]),)。 - Yehoshaphat Schellekens

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接