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中针对整个数据集进行预测和评价。但在实际模型训练中,需要对数据进行划分。
4.3 Orange
4.3.1 组件连接
4.3.2 结果