[Statsmodels]:如何让 statsmodel 返回 OLS 对象的 pvalue?

2024-01-04

我对编程还很陌生,我正在尝试使用 Python 来熟悉数据分析和机器学习。

我正在学习有关多元线性回归的向后消除的教程。这是现在的代码:

# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

# Importing the dataset
dataset = pd.read_csv('50_Startups.csv')
X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, 4].values

#Taking care of missin' data
#np.set_printoptions(threshold=100) 
from sklearn.preprocessing import Imputer
imputer = Imputer(missing_values = 'NaN', strategy = 'mean', axis = 0)
imputer = imputer.fit(X[:, 1:3])
X[:, 1:3] = imputer.transform(X[:, 1:3]) 

#Encoding categorical data
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelEncoder_X = LabelEncoder()
X[:, 3] = labelEncoder_X.fit_transform(X[:, 3])
onehotecnoder = OneHotEncoder(categorical_features = [3])
X = onehotecnoder.fit_transform(X).toarray()

#Avoid the Dummy Variables Trap
X = X[:, 1:]

#Splitting data in train and test
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)

#Fitting multiple Linear Regression to Training set
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, y_train)

#Predict Test set
regressor = regressor.predict(X_test)

#Building the optimal model using Backward Elimination
import statsmodels.formula.api as sm
a = 0
b = 0
a, b = X.shape
X = np.append(arr = np.ones((a, 1)).astype(int), values = X, axis = 1)
print (X.shape)

X_optimal = X[:,[0,1,2,3,4,5]]
regressor_OLS = sm.OLS(endog = y, exog = X_optimal).fit()
regressor_OLS.summary()
X_optimal = X[:,[0,1,3,4,5]]
regressor_OLS = sm.OLS(endog = y, exog = X_optimal).fit()
regressor_OLS.summary()
X_optimal = X[:,[0,3,4,5]]
regressor_OLS = sm.OLS(endog = y, exog = X_optimal).fit()
regressor_OLS.summary()
X_optimal = X[:,[0,3,5]]
regressor_OLS = sm.OLS(endog = y, exog = X_optimal).fit()
regressor_OLS.summary()
X_optimal = X[:,[0,3]]
regressor_OLS = sm.OLS(endog = y, exog = X_optimal).fit()
regressor_OLS.summary()

现在,执行消除的方式对我来说似乎确实是手动的,我想将其自动化。为了做到这一点,我想知道是否有办法让我以某种方式返回回归量的 pvalue(例如,是否有一种方法可以在 statsmodels 中执行此操作)。这样我认为我应该能够循环 X_optimal 数组的特征并查看 pvalue 是否大于我的 SL 并消除它。

谢谢你!


遇到了同样的问题。

您可以通过以下方式访问 p 值

regressor_OLS.pvalues 

它们以科学记数法存储为 float64 数组。我对 python 有点陌生,我确信有更干净、更优雅的解决方案,但这是我的:

sigLevel = 0.05

X_opt = X[:,[0,1,2,3,4,5]]
regressor_OLS = sm.OLS(endog = y, exog = X_opt).fit()
regressor_OLS.summary()
pVals = regressor_OLS.pvalues

while np.argmax(pVals) > sigLevel:
    droppedDimIndex = np.argmax(regressor_OLS.pvalues)
    keptDims = list(range(len(X_opt[0])))
    keptDims.pop(droppedDimIndex)
    print("pval of dim removed: " + str(np.argmax(pVals)))
    X_opt = X_opt[:,keptDims]
    regressor_OLS = sm.OLS(endog = y, exog = X_opt).fit()
    pVals = regressor_OLS.pvalues
    print(str(len(pVals)-1) + " dimensions remaining...")
    print(pVals)

regressor_OLS.summary()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[Statsmodels]:如何让 statsmodel 返回 OLS 对象的 pvalue? 的相关文章

  • Java 的支持向量机?

    我想用Java编写一个 智能监视器 它可以随时发出警报detects即将到来的性能问题 我的 Java 应用程序正在以结构化格式将数据写入日志文件
  • Python 子进程(ffmpeg)仅在我按 Ctrl-C 程序时启动?

    我正在尝试使用 Cygwin 和 Python 2 7 并行运行一些 ffmpeg 命令 这大概是我所拥有的 import subprocess processes set commands ffmpeg i input mp4 outpu
  • 在 pandas 中单独打印一列的原始值?

    我有一个数据框 df pd DataFrame name george age 23 name anna age 26 现在我想检索乔治的年龄 df df name george age 但这会输出一些额外的信息以及原始值 0 23 Nam
  • 如何使用 conda 在一行中安装多个包?

    我需要使用 conda 安装以下多个软件包 我不确定 conda forge 是什么 有些使用 conda forge 有些不使用它 是否可以将它们安装成一行而不需要一一安装 谢谢 conda install c conda forge d
  • 如何使用 Python 裁剪图像中的矩形

    谁能给我关于如何裁剪两个矩形框并保存它的建议 我已经尝试过这段代码 但效果不佳 import cv2 import numpy as np Run the code with the image name keep pressing spa
  • matplotlib 中的 R 风格数据轴缓冲区

    R 绘图自动设置 x 和 y 限制 以在数据和轴之间留出一些空间 我想知道 matplotlib 是否有办法自动执行相同的操作 如果没有 是否有一个好的公式或 经验法则 来说明 R 如何设置其轴限制 在 matplotlib 中 您可以通过
  • 将一维数组转换为下三角矩阵

    我想将一维数组转换为较低的零对角矩阵 同时保留所有数字 我知道numpy tril函数 但它用零替换了一些元素 我需要扩展矩阵以包含所有原始数字 例如 10 20 40 46 33 14 12 46 52 30 59 18 11 22 30
  • scikit-learn 和tensorflow 有什么区别?可以一起使用它们吗?

    对于这个问题我无法得到满意的答案 据我了解 TensorFlow是一个数值计算库 经常用于深度学习应用 而Scikit learn是一个通用机器学习框架 但它们之间的确切区别是什么 TensorFlow 的目的和功能是什么 我可以一起使用它
  • 返回上个月的日期时间对象

    如果 timedelta 在它的构造函数中有一个月份参数就好了 那么最简单的方法是什么 EDIT 正如下面指出的那样 我并没有认真考虑这一点 我真正想要的是上个月的任何一天 因为最终我只会获取年份和月份 因此 给定一个日期时间对象 返回的最
  • 在 Linux 上的 Python 中使用受密码保护的 Excel 工作表

    问题很简单 我每周都会收到一堆受密码保护的 Excel 文件 我必须解析它们并使用 Python 将某些部分写入新文件 我得到了文件的密码 当在 Windows 上完成此操作时 处理起来很简单 我只需导入 win32com 并使用 clie
  • Pandas groupby apply 执行缓慢

    我正在开发一个涉及大量数据的程序 我正在使用 python pandas 模块来查找数据中的错误 这通常工作得非常快 然而 我当前编写的这段代码似乎比应有的速度慢得多 我正在寻找一种方法来加快速度 为了让你们正确测试它 我上传了一段相当大的
  • 如何使用 Celery 多工作人员启用自动缩放?

    命令celery worker A proj autoscale 10 1 loglevel info启动具有自动缩放功能的工作人员 当创建多个工人时 me mypc projects x celery multi start mywork
  • 使用 WSGI 在 Windows XAMPP 中设置 Python 路径

    我正在 Webfaction 上设置实时服务器的开发版本 在本地计算机上的虚拟 Apache 服务器环境 运行没有任何错误 中运行 Django 应用程序 XP 使用 Python 2 6 运行 XAMPP Lite 我可以提交更改通过 G
  • 将列表中的 None 替换为最左边的非 none 值

    Given a None 1 2 3 None 4 None None I d like a None 1 2 3 3 4 4 4 目前我已经用以下方法强制它 def replaceNoneWithLeftmost val last Non
  • 计算 pyspark df 列中子字符串列表的出现次数

    我想计算子字符串列表的出现次数 并根据 pyspark df 中包含长字符串的列创建一个列 Input ID History 1 USA UK IND DEN MAL SWE AUS 2 USA UK PAK NOR 3 NOR NZE 4
  • 在python中读取PASCAL VOC注释

    我在 xml 文件中有注释 例如这个 它遵循 PASCAL VOC 约定
  • 在 matplotlib 中绘制多边形的并集[重复]

    这个问题在这里已经有答案了 我正在尝试绘制几个多边形的并集matplotlib 具有一定的 alpha 水平 我当前的代码在交叉点处颜色较深 有没有办法让交叉路口与其他地方的颜色相同 import matplotlib pyplot as
  • 在 scipy 中创建新的发行版

    我试图根据我拥有的一些数据创建一个分布 然后从该分布中随机抽取 这是我所拥有的 from scipy import stats import numpy def getDistribution data kernel stats gauss
  • 如何使用 Pandas Series 绘制两个不同长度/开始日期的时间序列?

    我正在绘制 每周总事件 的几个熊猫系列对象 系列中的数据events per week看起来像这样 Datetime 1995 10 09 45 1995 10 16 63 1995 10 23 83 1995 10 30 91 1995
  • Python 中的字符串slugification

    我正在寻找 slugify 字符串的最佳方法 蛞蝓 是什么 https stackoverflow com questions 427102 in django what is a slug 我当前的解决方案基于这个食谱 http code

随机推荐

  • 如何在 bash 脚本中获取文件的第一行?

    我必须在文件的第一行放入 bash 变量 我猜是用grep命令 但是有什么方法可以限制行数吗 head从文件中获取第一行 然后 n参数可用于指定应提取多少行 line head n 1 filename
  • 尝试使用 conda 时出现“语法错误:生成器表达式必须带括号”

    每当我尝试访问任何 anaconda 命令时 我都会遇到这个问题 事实上 当我尝试打开我的虚拟环境时 它也显示在那里 我已经重新安装了 anaconda navigator 但仍然没有结果 C Users Gagan Singh gt ac
  • 如何通过 holoviz 和 NetworkX 渲染 GraphViz Dot 文件?

    所以我看着docs https hvplot holoviz org user guide NetworkX html并看到他们使用 Graphviz 但不使用任何文件 而且我有一个4mil dot 70mb 图形文件 https gith
  • 在 Ubuntu 上找不到 RODBC 包中的 odbcConnectExcel 函数

    在 Ubuntu 上安装 RODBC 包有点麻烦 首先我学会了安装以下内容 sudo apt get install r cran rodbc 这还不够好 因为包仍在寻找头文件 我通过以下方式解决了这个问题 sudo apt get ins
  • 导出或保存 CX509PrivateKey

    是否可以以某种方式保存或导出CX509PrivateKey 我的想法是 我创建一个 CSR 发送给 CA 获取证书 然后 不知何故我必须获取私钥 但不知道如何获取 不幸的是在谷歌上没有找到任何内容 我的一段代码 var objPrivate
  • SQL INSERT 不指定列。会发生什么?

    在浏览心爱的 W3schools 时发现了这个page http www w3schools com sql sql insert asp并且实际上学到了一些有趣的东西 我不知道您可以调用插入命令而不指定值的列 例如 INSERT INTO
  • 使用jquery删除字符串中的span标签

    如何使用jquery从字符串中删除span标签 我在字符串变量中有多个跨度标签 p No Change span style color 222222 nbsp span I love cricket span style color 22
  • 满足条件后避免使用 IF 语句

    我在一个重复多次的循环内进行除法运算 碰巧的是 在循环的前几次 或多或少的前 10 个循环 中 除数为零 一旦它获得价值 除零误差就不再可能 我有一个if测试除数值的条件以避免 div 为零 但我想知道评估此值会对性能产生影响if在后续循环
  • Android 开发人员通常在 iPhone 上使用第三方 UI/网络库(例如 Three20)吗?

    我做过很多 iPhone 方面的工作 但从来没有做过 Android 方面的工作 在 iPhone 上 几个月后我发现了 Three20 库 非常棒 并开始移动我的代码 我不想在转向 Android 时犯同样的错误 所以我的问题是 Andr
  • Scala 2.10 TypeTag 用法

    我正在挖掘新的 scala 反射 api 但无法弄清楚为什么以下代码片段不能按预期工作 给定层次结构 尽力简化 import scala reflect runtime universe trait TF A implicit def t
  • 任务并行性 - 任务 OnCompleted 在所有ContinueWith之后触发

    我在处理任务时遇到问题 GetAwaiter OnCompleted new Action 我有一个带有多个ContinueWith的主任务 但是当我返回主任务并在OnCompleted上添加委托时 它会在处理主任务后触发 而不是在所有Co
  • 每个循环使用 Rspec 的单元测试用例

    我的模型中有以下方法 def get performance data para child para hash performance graph data child para hash each do cp performance g
  • onclick 事件传递
  • id 或值
  • 我想通过 li id or value in onclick事件 这是我的退出代码 li li value 1 li li value 2 li 这是 JavaScript 代码 function getPaging str loading
  • SSL/TLS 中的相互身份验证

    我是 SSL 身份验证的新手 我需要使用 SSL 在信任边界上对两个架构组件进行身份验证 我可以控制这两个组件 我想我需要两种方式的 SSL 身份验证 服务器和客户端都有证书 证书可以自签名吗 即由供应商签名 这不会首先使使用 SSL 无效
  • jqgrid客户端排序desc/asc

    我已经看到了这个问题的许多变体 并且我尝试使用所有知识 但仍然没有运气 我的日期正在从旧到新排序 我想将它们从新到旧排序 在你看到 desc 的地方 我尝试过 asc 但没有改变 当我尝试分页时 它似乎触发了重新加载 并且排序是正确的 从新
  • 如何找出与矩阵的特定特征值相对应的特征向量?

    如何找出与特定特征值对应的特征向量 我有一个随机矩阵 P 其特征值之一是1 我需要找到与特征值1对应的特征向量 scipy 函数scipy linalg eig http docs scipy org doc scipy reference
  • 如何为 TextView 文本添加下划线并更改下划线的颜色

    我想为文本视图文本添加下划线并将下划线的颜色更改为蓝色 我已经这样做了 但我的代码正在更改文本视图和下划线的颜色 我只想更改下划线的颜色 我们应该怎么做 TextView tv TextView findViewById R id tv S
  • Swing GridBagLayout 组件调整大小

    我正在开发一个项目 我的目标是使组件根据窗口的大小调整大小 我在用GridBagLayout为此 但是在窗口大小调整时调整组件大小时我遇到了一些问题 当我给出我的组件时weighty值 一切都很好 组件垂直调整大小 http imagesh
  • 如何格式化 SQLAlchemy ORM Postgresql CIDR contains (>>) 查询

    我有一个定义的模型 from app import db from sqlalchemy dialects import postgresql class TableIpAddress db Model tablename ipaddres
  • [Statsmodels]:如何让 statsmodel 返回 OLS 对象的 pvalue?

    我对编程还很陌生 我正在尝试使用 Python 来熟悉数据分析和机器学习 我正在学习有关多元线性回归的向后消除的教程 这是现在的代码 Importing the libraries import numpy as np import mat