首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何修复统计模型(模型缺少所需的结果变量)

如何修复统计模型(模型缺少所需的结果变量)
EN

Stack Overflow用户
提问于 2019-09-12 15:19:44
回答 2查看 2K关注 0票数 0

我刚刚开始在python中学习机器学习,我正在学习多元线性回归。在那里我了解了虚拟变量陷阱,它可以通过反向消除来解决,但在应用反向消除时,我得到了这个错误。(PatsyError:模型缺少必需的结果变量)

这些是我导入的文件

代码语言:javascript
运行
AI代码解释
复制
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from sklearn.preprocessing import LabelEncoder , OneHotEncoder
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import statsmodels.formula.api as sm

下面是我的数据集的前5行:

代码语言:javascript
运行
AI代码解释
复制
        gender    age    exercise    hours     grade
0       female    17        3        10        82.4
1       male      18        4        4         78.2
2       male      18        5        9         79.3
3       female    14        2        7         83.2
4       female    18        4        15        87.4


real_x = data_frame.iloc[:,:4].values
real_y = data_frame.iloc[:,4:].values

label_encoder_obj = LabelEncoder()
real_x[:,0] = label_encoder_obj.fit_transform(real_x[:,0])
one_hot_encoder = OneHotEncoder(categorical_features=[2])
real_x = one_hot_encoder.fit_transform(real_x).toarray()

real_x = real_x[:,1:]
training_x,test_x,training_y,test_y=
train_test_split(real_x,real_y,test_size=0.2,random_state=0)

multiple_linear_regression = LinearRegression()
multiple_linear_regression.fit(training_x,training_y)
predection_y = multiple_linear_regression.predict(test_x)


real_x=np.append(arr=np.ones((real_x.shape[0],1)).astype(int),
values=real_x,axis=1)

x_optimization = real_x[:,[0,1,2,3,4,5]] 

在下面的代码行中,我得到了错误。

代码语言:javascript
运行
AI代码解释
复制
regresion_ordinary_least_squar = sm.ols(real_y,data=x_optimization).fit();

如果缺少== 'raise‘,则不存在missing_mask

代码语言:javascript
运行
AI代码解释
复制
PatsyError: model is missing required outcome variables

我在网上看到过一些例子,其中的一些代码

代码语言:javascript
运行
AI代码解释
复制
sm.OLS() 

被使用,而不是

代码语言:javascript
运行
AI代码解释
复制
sm.ols()

有什么关系?

EN

回答 2

Stack Overflow用户

发布于 2020-12-02 08:52:15

前面的简短回答是:你混淆了statsmodel的ols实现的两个不同版本,并且给出了你选择了错误输入的模型。

长答案: Statsmodel包括普通最小二乘模型的两个版本。

我所看到的可接受的导入设置是:

代码语言:javascript
运行
AI代码解释
复制
import statsmodels.api as sm
import statsmodels.formula.api as smf

然后这是一个选择:

代码语言:javascript
运行
AI代码解释
复制
sm.OLS()
smf.ols()

它们的行为也不同。

sm.OLS采用单独的x和y数据帧(或exog和endog)。sm.OLS也不会向模型中添加常量。您需要先添加它。还要注意的是,statsmodel版本从sklearn模型输入数据的方式向后切换了输入变量的顺序-Y,然后是X。

代码语言:javascript
运行
AI代码解释
复制
X = sm.add_constant(X)
model = sm.OLS(Y,X)
results = model.fit()
result.summary()

这也是可行的:

代码语言:javascript
运行
AI代码解释
复制
X = sm.add_constant(X)
model = sm.OLS(Y,X).fit()
model.summary()

.summary()表示模型的分数、系数和p值的输出。

smf.ols采用补丁短语和数据帧,其中包括响应或目标变量以及所有功能。patsy短语允许您告诉模型在为response变量创建其ols模型时使用哪些列。拼凑的短语是一个看起来像'y ~ X1 + X2 + X3'的字符串。此外,smf.ols版本在默认情况下添加了截取。

代码语言:javascript
运行
AI代码解释
复制
df = pd.DataFrame({'X1':x, 'X2':x2, 'X3':x3, 'y':Y})
model = smf.ols('y ~ X1 + X2 + X3', df).fit()

或者,

代码语言:javascript
运行
AI代码解释
复制
phrase = 'y ~ X1 + X2 + X3 + X4'
model = smf.ols(phase,df).fit()

然后执行以下操作:

代码语言:javascript
运行
AI代码解释
复制
model.summary2()

检索分数、系数和p值的格式良好的摘要,与sm.OLS摘要非常相似,但略有不同。

如果您为您选择的statsmodel版本正确地构建了输入,那么这个错误应该会消失。

就我个人而言,我更喜欢公式模型。但是当你把你的数据帧分成X_train、y_train、X_test、y_test时,这就变得很尴尬了。

当我这样做的时候,我设置我的模型如下:

代码语言:javascript
运行
AI代码解释
复制
frames =[y_train, X_train]
df_train = pd.concat(frames, axis=1).reindex(y_train.index)

model = smf.ols(formula, df_train).fit()

我注意到你也在使用sklearn的LinearRegression。默认情况下,它还包括截取。如果您将常量添加到sm.OLS模型中,这三种方法都应该在相同的数据上给出类似的答案。在kaggle here上阅读一篇关于这方面的文章。

票数 2
EN

Stack Overflow用户

发布于 2019-12-23 01:43:19

你应该使用

将statsmodels.regression.linear_model导入为sm;

而不是

将statsmodels.formula.api导入为sm

并使用

regresion_ordinary_least_squar = sm.OLS(endog = real_y,exog = x_optimization).fit()

而不是

regresion_ordinary_least_squar = sm.ols(real_y,data=x_optimization).fit();

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

https://stackoverflow.com/questions/57909858

复制
相关文章
单变量线性回归模型与结果解读
统计模型的一般形式是Y=m(X)+e。其中Y为输出变量、响应变量、因变量、被解释变量;m为均值;e为不可控因子,可以理解为噪声。故模型等式右边是用X组成的函数去描述Y的均值,即模型是在平均的意义下去描述自变量与因变量间的关系,所以在解读模型的时候,我不会将模型说死。
许卉
2019/07/15
2.2K0
单变量线性回归模型与结果解读
pycaret模型分析之绘制模型结果
分析训练完成的机器学习模型的性能是任何机器学习工作流程中必不可少的步骤。 在PyCaret中分析模型性能就像编写plot_model一样简单。 该函数将受训的模型对象和图的类型作为plot_model函数中的字符串。
西西嘛呦
2020/10/27
8290
pycaret模型分析之绘制模型结果
缺勤统计模型
格式要求如截图这样的.第一列为考勤号码(或者考勤工号,作为判断的依据),第二列为姓名,第三列为出勤时间,第四第五第blabla不管,后面是啥都没差.
但老师
2022/03/22
1320
缺勤统计模型
基于隐变量的推荐模型基于隐变量的推荐模型
上一篇介绍了协同过滤,其重点就是在人-物品矩阵上,其中心思想是去对人或者物品进行聚类,从而找到相似人或者相似物品,用群体的智慧为个人进行推荐,但是,这种近邻模型也存在好多问题:
zhuanxu
2018/09/07
1.7K0
自回归模型PixelCNN 的盲点限制以及如何修复
前两篇文章我们已经介绍了自回归模型PixelCNNs,以及如何处理多维输入数据,本篇文章我们将关注 PixelCNNs 的最大限制之一(即盲点)以及如何改进以修复它。
deephub
2022/01/04
7730
自回归模型PixelCNN 的盲点限制以及如何修复
自回归模型PixelCNN 的盲点限制以及如何修复
来源: DeepHub IMBA本文约4500字,建议阅读10分钟本篇文章我们将关注 PixelCNNs 的最大限制之一(即盲点)以及如何改进以修复它。 在这篇文章中我们将介绍盲点的概念,讨论 PixelCNN 是如何受到影响的,并实现一种解决方案——Gated PixelCNN。 盲点 PixelCNN 学习图像中所有像素的条件分布并使用此信息进行预测。PixelCNN 将学习像素从左到右和从上到下的分布,通常使用掩码来确保“未来”像素(即正在预测的像素右侧或下方的像素)不能用于给定像素的预测。如下图A所
数据派THU
2022/03/04
4320
统计语言模型简介
统计语言模型是自然语言处理最基础也最重要的任务,也是其它复杂自然语言理解系统中重要的模块之一,理解语言模型对进一步了解自然语言处理,有非常重要的意义。统计语言模型基于概率论,表达简洁有效,计算速度快,非常适合商业系统的应用,在很长一段时间内,都是最主流的语言模型方法。
王明轩
2018/06/20
9500
Tensorflow:模型变量保存
[1]Tensorflow实战Google深度学习框架: https://github.com/caicloud/tensorflow-tutorial/tree/master/Deep_Learning_with_TensorFlow/1.4.0
演化计算与人工智能
2020/08/14
1.3K0
模型进化狂飙,DetectGPT能否识别最新模型生成结果?
---- 新智元报道   来源:智源社区 作者:李灿 【新智元导读】语言模型给我们的生产生活带来了极大便利,但同时不少人也利用他们从事作弊工作。如何规避这些难辨真伪的文字所产生的负面影响也成为一大难题。 在3月9日智源Live第33期活动「DetectGPT:判断文本是否为机器生成的工具」中,主讲人Eric为我们讲解了DetectGPT工作背后的思路——一种基于概率曲率检测的用于检测模型生成文本的工具,它可以帮助我们更好地分辨文章的来源和可信度,对保护信息真实、防止欺诈等方面具有重要意义。本次报告主要
新智元
2023/05/09
2470
模型进化狂飙,DetectGPT能否识别最新模型生成结果?
机器学习和统计模型的差异
在各种各样的数据科学论坛上这样一个问题经常被问到——机器学习和统计模型的差别是什么? 这确实是一个难以回答的问题。考虑到机器学习和统计模型解决问题的相似性,两者的区别似乎仅仅在于数据量和模型建立者的不
小莹莹
2018/04/20
1.3K0
机器学习和统计模型的差异
机器学习和统计模型的差异
本文摘自:Datartisan 在各种各样的数据科学论坛上这样一个问题经常被问到——机器学习和统计模型的差别是什么? 这确实是一个难以回答的问题。考虑到机器学习和统计模型解决问题的相似性,两者的区别似
用户1737318
2018/06/05
6940
机器学习和统计模型的差异
在各种各样的数据科学论坛上这样一个问题经常被问到——机器学习和统计模型的差别是什么? 这确实是一个难以回答的问题。考虑到机器学习和统计模型解决问题的相似性,两者的区别似乎仅仅在于数据量和模型建立者的不
CSDN技术头条
2018/02/09
6330
机器学习和统计模型的差异
教程 | 如何为单变量模型选择最佳的回归函数
选自FreeCodeCamp 作者:Björn Hartmann 机器之心编译 参与:李诗萌、刘晓坤 本文介绍了为单变量模型选择回归函数时需要参考的重要指标,有助于快速调整参数和评估回归模型的性能。
机器之心
2018/05/11
1.3K0
虚拟变量在模型中的作用
实际场景中,有很多现象不能单纯的进行定量描述,只能用例如“出现”“不出现”这样的形式进行描述,这种情况下就需要引入虚拟变量。例如即将到来的女生节,每年的这个时候毛绒玩具的销量都会上升,说明女生节对毛绒玩具的销量产生了一定影响,但是这个影响程度又很难界定,这时只能定义一个虚拟变量去描述事情“发生”与“不发生”了。
许卉
2019/07/15
4.4K0
回归模型的变量筛选与预测
变量筛选是回归建模过程关键的一步,由于变量间的相关性,必然会导致不同的筛选方法得到不同的模型。
许卉
2019/07/15
2.2K0
回归模型的变量筛选与预测
garch模型的结果分析_管理学五力模型分析案例
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/17
4480
garch模型的结果分析_管理学五力模型分析案例
实战制作stable diffusion的修复模型inpaint model
本文详述如何通过已有的dreamlike-art/dreamlike-photoreal-2.0标准模型standard model,制作其修复模型inpaint model。
buzzfrog
2023/09/15
2.7K3
实战制作stable diffusion的修复模型inpaint model
讨论 | 机器学习和统计模型的差异
编者按:统计模型有时也被称作统计分析或者统计建模,是基于传统统计学的一种数据分析方法。机器学习是数据挖掘的一种方法,包含利用分布式计算能力进行数据处理和数据挖掘的一系列算法和工具集。本文中的统计模型和机器学习的区别也可以理解为传统的数据分析(数学家阵营)和数据挖掘(计算机科学家阵营)之间的区别。 在各种各样的数据科学论坛上这样一个问题经常被问到——机器学习和统计模型的差别是什么? 这确实是一个难以回答的问题。考虑到机器学习和统计模型解决问题的相似性,两者的区别似乎仅仅在于数据量和模型建立者的不同。这里有
小莹莹
2018/04/24
1.6K0
讨论 | 机器学习和统计模型的差异
关于模型预测结果好坏的几个评价指标
在人工智能算法大数据时代,会有各种各样的预测模型,那怎么来评判一个预测模型的准确度呢?这一篇就来聊聊常用的一些评价指标。
张俊红
2020/09/24
10.7K0
关于模型预测结果好坏的几个评价指标
点击加载更多

相似问题

线性回归状态模型:缺少所需的结果变量

16

Python中的多元线性回归(PatsyError:模型缺少所需的结果变量)

2274

PatsyError:模型缺少必需的结果变量

1290

统计模型中缺少的模块(python、OaxacaBlinder)

114

Python Logistic回归(PatsyError:模型缺少必需的结果变量)

17
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文