找回密码
 会员注册
查看: 9|回复: 0

Python中的简单与多元线性回归实现

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
71619
发表于 2024-9-6 13:44:26 | 显示全部楼层 |阅读模式
目录一、简单线性回归示例1、数据准备与分析2、结果可视化二、多元线性回归示例1、数据准备与分析2、结果解释线性回归是数据分析中常用的一种方法,用于探索两个或多个变量之间的线性关系。本文将通过两个示例,介绍如何在Python中实现简单线性回归和多元线性回归模型,并展示如何使用统计方法和机器学习库来进行分析。一、简单线性回归示例1、数据准备与分析        在简单线性回归示例中,用上图这一组数据集,其中包含了广告投入(自变量)和对应的销售额(因变量)。我们的目标是建立一个模型,来预测广告投入对销售额的影响。importpandasaspdimportstatsmodels.apiassmimportmatplotlib.pyplotasplt#加载数据集data=pd.read_csv("data.csv")x=data[['广告投入']]y=data[['销售额']]#添加常数项X=sm.add_constant(x)#构建线性回归模型model=sm.OLS(y,X)result=model.fit()#输出回归结果摘要print(result.summary())        在这段代码中,我们首先使用pandas库加载了名为data.csv的数据集,并从中选择了广告投入和销售额这两列作为自变量和因变量。接着,我们使用statsmodels库中的OLS(普通最小二乘)方法拟合了一个线性回归模型。通过result.summary(),我们可以打印出模型的详细统计摘要,包括参数估计、显著性检验以及模型拟合度等信息。2、结果可视化        为了更直观地理解模型拟合效果,我们将数据点和回归线一起绘制在同一个图上:#绘制数据和拟合线y_pr=result.fittedvaluesfig,ax=plt.subplots(figsize=(8,6))ax.plot(x,y,'o',label='data')#原始数据散点图ax.plot(x,y_pr,'r--',label='OLS')#拟合的线性回归线ax.legend(loc='best')plt.xlabel('广告投入')plt.ylabel('销售额')plt.title('简单线性回归拟合')plt.show()        在这段代码中,我们使用了matplotlib库来绘制散点图(原始数据)和红色虚线(线性回归拟合线),以直观地展示广告投入与销售额之间的关系。 二、多元线性回归示例1、数据准备与分析        在多元线性回归示例中,用上图中一个包含体重、年龄和血压收缩的数据集,我们的目标是建立一个模型来预测血压收缩值,使用体重和年龄作为预测因子。importpandasaspdfromsklearn.linear_modelimportLinearRegression#加载数据集data=pd.read_csv("多元线性回归.csv",encoding='gbk',engine='python')#创建线性回归模型lr_model=LinearRegression()#准备自变量和因变量x=data[['体重','年龄']]y=data[['血压收缩']]#拟合模型lr_model.fit(x,y)#打印模型评分score=lr_model.score(x,y)print(f"模型评分R^2:{score:.2f}")        在这段代码中,我们使用了sklearn库中的LinearRegression来构建和训练了一个多元线性回归模型。通过lr_model.score(),我们可以评估模型的拟合优度,这里使用的是R平方(R^2)作为评估指标,用于衡量模型对数据的解释能力。2、结果解释        接下来,我们可以使用训练好的模型来预测新的数据点,并获取模型的系数和截距,以便进一步解释模型:#预测新数据点predictions=lr_model.predict([[80,60]])print(f"预测血压收缩值(体重=80,年龄=60):{predictions}")#批量预测batch_predictions=lr_model.predict([[70,30],[70,20]])print(f"批量预测血压收缩值:\n{batch_predictions}")#获取模型系数和截距coefficients=lr_model.coef_intercept=lr_model.intercept_[0]print(f"线性回归方程为:血压收缩={coefficients[0][0]}*体重+{coefficients[0][1]}*年龄+{intercept:.2f}")        通过这些代码,我们可以预测新的血压收缩值,同时输出了模型的系数(体重和年龄的权重)和截距,从而构建了多元线性回归模型的方程式。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-10 05:29 , Processed in 0.705263 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表