当前位置:网站首页>线性回归的多种实现方式
线性回归的多种实现方式
2022-07-29 21:21:00 【#温室里的土豆】
1 回归的概念
在统计学中,回归分析(regression analysis)指的是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。回归分析按照涉及的变量的多少,分为一元回归和多元回归分析;按照因变量的多少,可分为简单回归分析和多重回归分析;按照自变量和因变量之间的关系类型,可分为线性回归分析和非线性回归分析。
今天分享的是最基本的一元线性回归,也相当于记录自己暑期访学项目的笔记~
2 回归方程

其中y是因变量,即被预测变量。x是自变量,即预测变量。a,b是回归模型的系数。简单来讲,一元线性回归就是在各个数据点之间,找到一条能够大致符合其走势的直线。
3 评价标准
均方根误差(RMSE):

其中m为样本数,yi为真实值,yi'为预测值
4 实现方式
4.1 sklearn
import pandas as pd
from sklearn import linear_model
import numpy as np
from sklearn.model_selection import train_test_split
df = pd.read_csv(r'C:\Users\64884\Desktop\南洋理工大学暑期项目\回归\DBS_SingDollar.csv')
X = np.array(df.iloc[:,3])
Y = np.array(df.iloc[:,2])
#划分数据集
X_train, X_test, y_train, y_test = train_test_split(X,Y,test_size=0.2)
#转化为二维数组,否则会报错
X_train=X_train.reshape(-1,1)
X_test=X_test.reshape(-1,1)
y_train=y_train.reshape(-1,1)
y_test=y_test.reshape(-1,1)
model = linear_model.LinearRegression()
model.fit(X_train,y_train)
pred = model.predict(X_test)
#模型评价
from sklearn.metrics import mean_squared_error
RMSE = mean_squared_error(y_test, pred)**0.5
#绘图
import matplotlib.pyplot as plt
#绘制散点图
plt.scatter(X_test, y_test)
#plt.scatter(X_test, pred,c='r')
plt.plot(X_test,pred, 'r')
plt.show()回归情况如下:

注:
(1)回归中的变量必须为二维数组,这里是一元回归,所以要利用array.reshape(-1,1)进行转化
reshape前

reshape后

(2)sklearn 自带的mean_squared_error是MSE,RMSE还需要进行开根号
4.2 excel
首先,在excel中选择“文件-选项-加载项”选中右侧的“分析工具库”,再点击下方的“转到”


添加好了后,在excel中点击“数据”最右侧点击“数据分析”,进入如下画面,再选择“回归”

选择自变量和因变量:

得出报表,可以根据回归方程中的两个系数计算出预测值。

注:同样的数据和回归模型,利用不同的软体做出的结果是应该相同的,但这里sklearn和excel结果不同是因为在sklearn中划分了训练集与测试集,预测和模型评价均针对测试集。而sklearn中的划分是随机的,在excel中很难找到对应的测试集,因此在excel中针对整个数据集进行预测和评价。但在实际模型训练中,需要对数据进行划分。
边栏推荐
- INFTnews | Forbes Web3 exploration
- IDEA 快捷键
- WeChat Mini Program 31 Subcontracting Mechanism
- 【CVPR2022】A Unified Query-based Paradigm for Point Cloud Understanding
- 378. The Kth Smallest Element in an Ordered Matrix
- PointPillars 工程复现
- 新库上线 | CnOpenData租赁和商务服务业工商注册企业基本信息数据
- 容器网络硬核技术内幕 (24) 知微知彰,知柔知刚 (上)
- 阿里 P8 爆出的这份大厂面试指南,看完工资暴涨 30k!
- GBASE 8s 数据库唯一索引
猜你喜欢

5 V booster charge 8.4 V chip

OPEN数据 | 新库上线 | CnOpenDataA股上市公司社会责任报告数据

【AD】【持续更新ing】关于AD设计过程中一些小细节

使用脚本安装mysql

1. Promise usage in JS, 2. The concept and usage of closures, 3. The difference between the four methods and areas of object creation, 4. How to declare a class

【Verilog】Verilog设计进阶

336. Palindromic Pairs

UDP协议详解

VSCode 插件大全

普洛斯荣获两项“数据中心绿色等级评估”5A级认证
随机推荐
方法的传递
HMS Core音频编辑服务音源分离与空间音频渲染,助力快速进入3D音频的世界
mdnice-test
针对自动识别大麦网滑块验证码,提出解决方案,并进行分析、总结
1. Promise usage in JS, 2. The concept and usage of closures, 3. The difference between the four methods and areas of object creation, 4. How to declare a class
第3章业务功能开发(线索关联市场活动,插入数据并查询)
第3章业务功能开发(线索关联市场活动,动态搜索)
Xshell 7 prompts "To continue using this program, you must apply the latest update or use a new version"
【CVPR2022】A Unified Query-based Paradigm for Point Cloud Understanding
Use the PostgreSQL GRANT command to modify permissions on various database objects
新库上线 | CnOpenData国际货运代理信息数据
【Verilog】Verilog设计进阶
第二好PyTorch新手课程;论文写作指南;使用µGo语言开发迷你编译器;超高效使用Transformer的扩展库;前沿论文 | ShowMeAI资讯日报
仿Modbus消息帧进行通信
官宣!苏州吴江开发区上线电子劳动合同平台
笔记:fgets函数详解
全自动化机器学习建模!效果吊打初级炼丹师!
LeetCode--single linked list--146.LRU cache
《张卫国的夏天》欢乐来袭,黄磊、刘奕君携手演绎“冤种”兄弟
WeChat Mini Program 30 Customizing Templates and Obtaining User Login Credentials