首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >滑雪物流回归与海运物流回归有什么区别?

滑雪物流回归与海运物流回归有什么区别?
EN

Stack Overflow用户
提问于 2020-11-29 17:05:26
回答 1查看 178关注 0票数 1

我有一个系统,我用加权选票的一致意见来预测一个二元结果。

由于选举是时代性的,我们可以把它作为一个例子。比如说,我对过去几年的各种民意测验进行了分析,并根据他们的准确程度给他们一个加权选票。民意测验家斯凯勒的投票结果是3票,而Oakely的得票率是原来的两倍,最终得票率为6。在CGP灰色时尚(有时会谈论选举机制的youtuber )中,斯凯勒预测老虎候选人将赢得开放的市议会席位,奥克利预测SnowLepoard的候选人将赢得这个席位。在本例中,基于加权总票数的预测胜利者将是SnowLepoard,其多数加权得票率为(6/9) 0.66667。当然,任何一次选举的实际结果都会有所不同,但一般来说,如果权重很好,我们预计随着多数加权得票率的增加,特定候选人的获胜概率会增加,同样,如果多数票是50%,那么选举就会变成一场真正的失败。

考虑到这个例子,我尝试在数据集上做一个逻辑回归,其中唯一的自变量是多数加权得票率。我尝试过几种不同的方法,虽然两种方法都一致认为,多数加权得票率的增加会增加获胜概率,但他们对于50/50的加权得票率表示真正的50/50概率的观点存在分歧,而且都没有真正尊重这一观点。

蓝线是通过海运进行的logistic回归,绿点是通过sklearn进行的logistic回归。下面的代码。我不认为逻辑回归的基本机制从一个库变为另一个库,如果它们为相同的输入产生不同的输出,我的设置是错误的。

  • 为什么这两个库产生不同的回归?
  • 对于任何一个图书馆来说,我怎样才能迫使回归把0.5的加权多数视为50%的获胜概率?我可能只需填写大量的虚拟数据就可以得出结论,但我觉得应该有一个更优雅的方法。
代码语言:javascript
复制
import pandas as pd 
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.linear_model import LogisticRegression

# Setup a data dict
majorityPercentList = [0.8387096774193549, 0.8387096774193549, 1.0, 1.0, 1.0, 1.0, 0.8387096774193549, 0.8387096774193549, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.8387096774193549, 0.8947368421052632, 0.6578947368421053, 1.0, 0.7894736842105263, 1.0, 0.7631578947368421, 0.8947368421052632, 0.8421052631578947, 0.5789473684210527, 1.0, 0.8421052631578947, 0.9210526315789473, 1.0, 0.7894736842105263, 0.6842105263157895, 0.7894736842105263, 0.8, 0.6, 1.0, 1.0, 1.0, 1.0, 0.8, 1.0, 1.0, 1.0, 0.6, 0.8, 0.8, 1.0, 0.6, 1.0, 0.8823529411764706, 0.6470588235294118, 0.9444444444444444, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.6666666666666666, 1.0, 1.0, 0.9444444444444444, 0.7755102040816326, 1.0, 1.0, 0.84, 0.8, 1.0, 0.98, 0.98, 0.84, 0.98, 1.0, 0.98, 1.0, 0.8, 1.0, 0.8082191780821918, 0.9864864864864865, 0.9324324324324325, 0.9054054054054054, 0.9864864864864865, 0.8108108108108109, 0.7837837837837838, 0.972972972972973, 0.9324324324324325, 0.9054054054054054, 0.8918918918918919, 0.8918918918918919, 0.5066666666666667, 0.8666666666666667]
outcomeList = [0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1]
dataDict = {"majorityPercent": majorityPercentList,
            "isMajorityWinner": outcomeList}

# Setup the dataframe
df = pd.DataFrame(dataDict,columns=['majorityPercent', 'isMajorityWinner'])
x = df[["majorityPercent"]]
y = df['isMajorityWinner']

# Run the sklearn logistic regression
logistic_regression= LogisticRegression()
logistic_regression.fit(x,y)
plt.scatter(x,logistic_regression.predict_proba(x)[:,1], c="green")

# Run the seaborn version
sns.regplot(x="majorityPercent", y="isMajorityWinner",
    data = df,
    logistic = True,
    ci = None)

# Show the graphs
plt.show()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-29 17:58:25

LogisticRegression在sklearn中进行了一个惩罚性的回归,您可以在帮助页中获得更多的细节,而海运则使用statsmodels来执行fit,这是不受惩罚的。

在滑雪课中将惩罚设置为“零”会给你同样的结果:

代码语言:javascript
复制
logistic_regression= LogisticRegression(penalty='none')
logistic_regression.fit(x,y)
plt.scatter(x,logistic_regression.predict_proba(x)[:,1], c="green")

sns.regplot(x="majorityPercent", y="isMajorityWinner",
    data = df,
    logistic = True,
    ci = None)

如果要强制将预测的概率设置为50%的多数票,则将x变量移动0.5,并在没有截距的情况下拟合回归,因此在x=0,预测的日志赔率= 0,意味着概率= 0.5:

代码语言:javascript
复制
df = pd.DataFrame(dataDict,columns=['majorityPercent', 'isMajorityWinner'])
df['majorityPercent_scaled'] = df[["majorityPercent"]] -0.5

logistic_regression= LogisticRegression(penalty='none',fit_intercept=False)
logistic_regression.fit(df[['majorityPercent_scaled']],df['isMajorityWinner'])
df.plot.scatter(x='majorityPercent',y='isMajorityWinner')
plt.scatter(df["majorityPercent"],logistic_regression.predict_proba(df[['majorityPercent_scaled']])[:,1], c="green")

没有方法可以在不拦截regplot()的情况下安装模型,所以您必须使用状态模型从头开始进行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65062774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档