首页 > 编程问答 >Python 中的多元回归

Python 中的多元回归

时间:2024-07-31 16:52:10浏览次数:13  
标签:python regression multivariate-testing

我想在Python中基于多个相关数据数组和多个独立数据执行多元线性回归。

我见过很多多重线性回归,具有多个独立输入,几乎每个人都认为多重=多元,但事实并非如此。我在互联网上看不到任何真正的多元教程。我想要的是多个输出+多个输入。

from pandas import DataFrame
from sklearn import linear_model
import tkinter as tk 
import statsmodels.api as sm

Stock_Market = {'Year': [2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018],
                'Agriculture': [1, 0.8965517282485962, 0.4350132942199707, 0.5384615659713745, 1.1071428582072258, 0.1071428582072258, 0.1290322244167328, -0.07096776366233826, -0.37857140600681305, -0.439440980553627, -0.2020460031926632, -0.16339869424700737, 2.277777746319771], 
                'Demand_risk':[1,0.015701416,0.638652235,0.744531459,0.630988038,0.787568771,1.796302615,1.708789548,1.897916832,1.643077606,1.579785002,2.444568612,2.626896547],
                'International_risk':[1,1.609574468,1.225836431,1.30566937,1.771415837,1.737162303,2.156292933,2.365513975,2.502820771,2.660719511,2.468833192,2.624733983,2.577283326],
                'Production_risk': [1,0.76346912,1.421097464,1.423616355,1.434009229,1.307186577,1.378837063,1.3577073,1.744395371,1.744281735,1.559044776,1.570226289,1.116485043],
                'Technology_risk': [1,1.029845201,1.042711964,1.053634438,1.038367263,0.659816279,0.90179752,1.448686704,1.836091216,1.644680334,1.413661748,1.089683923,1.191047799]        
                }


df = DataFrame(Stock_Market,columns=['Year','Agriculture','Demand_risk','International_risk','Production_risk', 'Technology_risk']) 

X = df[['Demand_risk','International_risk','Production_risk', 'Technology_risk']] # here we have 2 input variables for multiple regression. If you just want to use one variable for simple linear regression, then use X = df['Interest_Rate'] for example.Alternatively, you may add additional variables within the brackets
Y = df['Year', 'Agriculture'] # output variable (what we are trying to predict)

# with sklearn
regr = linear_model.LinearRegression()
regr.fit(X, Y)

print('Intercept: \n', regr.intercept_)
print('Coefficients: \n', regr.coef_)

# compute with statsmodels, by adding intercept manually
import statsmodels.api as sm
X1 = sm.add_constant(X)
result = sm.OLS(Y, X1).fit()
#print dir(result)
print (result.rsquared, result.rsquared_adj)

我想更改输出变量 Y,以便它可以处理多个数组,而不仅仅是单个数组(现在它会抛出错误)。


可以试试这样做。正试图一次预测多个目标变量。为此,在 scikit-learn 中,可以使用 LinearRegression 或其他回归器。以下是使用数据的示例:

import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

Stock_Market = {'Year': [2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018],
                'Agriculture': [1, 0.8965517282485962, 0.4350132942199707, 0.5384615659713745, 1.1071428582072258, 0.1071428582072258, 0.1290322244167328, -0.07096776366233826, -0.37857140600681305, -0.439440980553627, -0.2020460031926632, -0.16339869424700737, 2.277777746319771], 
                'Demand_risk':[1,0.015701416,0.638652235,0.744531459,0.630988038,0.787568771,1.796302615,1.708789548,1.897916832,1.643077606,1.579785002,2.444568612,2.626896547],
                'International_risk':[1,1.609574468,1.225836431,1.30566937,1.771415837,1.737162303,2.156292933,2.365513975,2.502820771,2.660719511,2.468833192,2.624733983,2.577283326],
                'Production_risk': [1,0.76346912,1.421097464,1.423616355,1.434009229,1.307186577,1.378837063,1.3577073,1.744395371,1.744281735,1.559044776,1.570226289,1.116485043],
                'Technology_risk': [1,1.029845201,1.042711964,1.053634438,1.038367263,0.659816279,0.90179752,1.448686704,1.836091216,1.644680334,1.413661748,1.089683923,1.191047799]        
                }

df = pd.DataFrame(Stock_Market)

# 选择所有风险列作为特征
X = df[['Demand_risk', 'International_risk', 'Production_risk', 'Technology_risk']]

# 选择年份和农业作为目标变量
Y = df[['Year', 'Agriculture']]

# 创建一个线性回归模型
model = LinearRegression()

# 使用数据训练模型
model.fit(X, Y)

# 进行预测
predictions = model.predict(X)

# 打印预测值
print(predictions)

# 评估模型
mse = mean_squared_error(Y, predictions)
print(f"Mean Squared Error: {mse}")

这将创建一个多元回归模型,该模型尝试预测作为输入给定的风险因素的年份和农业值。然后,该代码使用相同的训练数据进行预测并打印预测值。请注意,此示例中不执行训练集和测试集的拆分,但在实际应用中建议执行以进行可靠的模型评估。

此外,可以通过查看诸如 R 平方值之类的指标来评估模型的性能。更高的 R 平方值表示模型的拟合度更高。

标签:python,regression,multivariate-testing
From: 57813536

相关文章

  • Python 复选框和 Excel
    我有一个Python系统,它收集用户的条目,进行计算并显示结果。当用户单击条目数据按钮时,所有数据条目和结果都会转换为Excel。在系统界面中有是部分的复选框,结果显示在Excel中。我需要一个助手来编写代码,以便我可以在每次用户选择选定的复选框时转换结果,将复选框的每......
  • Python - Class Decorators
    Wehaveusedfunctionstodecoratefunctionsandtodecorateclasses.Now,wewillseehowtodefineaclassasadecorator.Atthestartofthischapter,inthedefinitionofdecorator,wehadseenthatadecoratorisacallable;acallableisanyobject......
  • 基于Python的高校成绩分析【源码+LW+PPT+部署讲解】
    作者主页:编程千纸鹤作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待......
  • 基于Python网络爬虫的电子产品信息查询可视化系统
    作者主页:编程千纸鹤作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待......
  • [SUCTF 2019]Pythonginx (unicode转IDNA域名分割漏洞)
    代码我看到这两个就感觉有问题了,第一个转编码这个搜了一下是unicode转idna的问题,第二个urlopen是Python标准库中urllib.request模块中的一个函数,用于向指定的URL发送HTTP请求并获取响应参考文章:https://xz.aliyun.com/t/6070?time__1311=n4%2BxnD0DgDcmG%3DrDsYoxCqiIQ7KDtH......
  • 基于Python的高校成绩分析【源码+LW+PPT+部署讲解】
    作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与各位高校教师、企......
  • 基于Python网络爬虫的电子产品信息查询可视化系统
    作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与各位高校教师、企业......
  • 使用 Python 读取 .xlsx 文件的最快方法
    我正在尝试使用Python将.xlsx文件中的数据读入MySQL数据库。这是我的代码:wb=openpyxl.load_workbook(filename="file",read_only=True)ws=wb['MyWorksheet']conn=MySQLdb.connect()cursor=conn.cursor()cursor.execute("SETautocommit=0"......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-60 - 判断元素是否显示 - 下篇
    1.简介有些页面元素的生命周期如同流星一闪,昙花一现。我们也不知道这个元素在没在页面中出现过,为了捕获这一美好瞬间,让其成为永恒。我们就来判断元素是否显示出现过。在操作元素之前,可以先判断元素的状态。判断元素操作状态也可以用于断言。2.常用的元素判断方法2.1page对象调......
  • 是否有可能在Python中获取客户端计算机的位置
    我想编写一个程序,用python查找客户端计算机的位置。不过,我不介意它的格式如何。我到处尝试过一些东西,但老实说,我对这类事情了解不多,所以我真的不知道从哪里开始。|||我想简单地运行该程序,并将运行该程序的客户端计算机的位置写入控制台。Iwouldliketosimplyrunt......