多元线性回归数据,简单线性回归模型
回归分析是一个用于评估变量之间关系的统计过程。 用于说明参数x和参数y的关系。 即,在自变量x变化时,根据变量y如何变化?
线性回归是一种回归分析,评价的自变量x与因子y之间存在线性关系。 如果只有一个参数,则称为简单线性回归;如果有多个参数,则称为3358www.Sina.com/。
了解线性关系:
画的图像是直的。 每个参数的最下一项为1。多元线性回归是指构建算法以适合实际数据。 从机器学习的角度来看,线性回归是指构建线性函数,使该函数与目标值的适应性最佳。 从空间上看,使函数的直线(面)尽可能接近空间中的所有数据点(使点到直线平行于y轴的距离之和最小)。 线性回归输出连续的值。
可以线性回归模型的简单线性回归住宅面积(x )和房价(y )为例。 两者呈线性关系,房价与住房面积成正比。 假设比率为w。
但是,这个线性方程一定超过了原点。 即,x为0时,y也一定为0。 这可能不适合现实中的某些场景。 为了更广泛地适应方程,如果添加另一个截距,假设b,则方程如下
以上方程是数据建模的模型,w和b是模型的参数。
线性回归用于解释自变量和因子之间的关系,但这种关系不是严格的函数映射关系。
多元线性回归的现实数据很复杂,可能也有多个自变量。 例如,影响房价的也很可能不仅仅是房子的面积,是否在地铁附近,可能有房间数量、层数、建筑年代等很多因素。 但是,由于这些因素对房价影响的权重不同,因此可以使用多个权重来表示多个因素与房价之间的关系。
)影响因素,也就是特征。 w :每个x的影响力。 n :特征的个数。 y^ :房屋预测价格。
这样,可以表示为:
多元线性回归在空间中可以表示为超平面,用于拟合空间中的数据点。
我们的目的是从现有数据中学习w和b的值。 确定w和b的值后,可以确定拟合数据的线性方程,可以对未知数据x预测y (房价)。
利用损耗函数和参数求解损耗函数,对机器学习来说是根据已知数据建立模型,使该模型能够预测未知数据。 实际上,机器学习的过程是确定模型参数的过程。
对监督学习来说,建立损失函数可以实现模型参数的求解,拟合又称损失函数或目标函数损耗函数用于测量模型的预测值和真实值之间的差异。 机器学习的目标是为了使该函数的值最小化而制作损失函数。
也就是说,损耗函数是关于模型参数的函数(以模型参数w为自变量的函数),自变量能够取的值的组合通常是无限的。 我们的目标是在许多可能的组合中找出一组最佳参数组合,使得损失函数的值最小。
线性回归使用平方损失函数(最小二乘法)定义如下。
简单线性回归程序在爱丽思欧雅玛数据集上以花瓣长度和花瓣宽度为例,通过程序实现简单的线性回归。
import numpy as np#用于线性回归的类froms klearn.linear _ modelimportlinearregression #, 用于拆分训练集和测试集froms klearn.model _ selectionimporttraiion的默认值为8np.set _ print options (precision=2) irision x,y=iris.data [ :2 ].reshape (-1,1 ),iris.data [ :3 ] lr=linear regression ) ) x_train,x (x lr.fit(x_train,y_train ) print )、权重)、lr.coef _ (print )、截距)、lr.intercept_ ) y_hat=lr.ppt
importmatplotlib.pyplotasplt.rcparams [ ' font.family ' ]=' simhei ' PLT.rcparams [ ' axes.unicode _ MINUS ]==
试集')plt.plot(x, lr.predict(x), 'r-')plt.legend()plt.xlabel('花瓣长度')plt.ylabel('花瓣宽度') plt.figure(figsize=(15,6))plt.plot(y_test, label='真实值', color='r', marker='o')plt.plot(y_hat, c='g', marker='o', ls='--', label='预测值')plt.legend() 回归模型预测对于回归模型,我们可以采用如下指标进行衡量。
MSERMSEMAER2 MSEMSE(Mean Squared Error),平均平方差,为所有样本数据误差(真实值与预测值之差)的平方和,然后取均值。
RMSE(Root Mean Squared Error),平均平方误差的平方根,即在MSE的基础上,取平方根。
MAE(Mean Absolute Error),平均绝对值误差,为所有样本数据误差的绝对值和。
R2为决定系数,用来表示模型拟合性的分值,值越高表示模型拟合性越好,在训练集中,R2的取值范围为[0,1]。在R2的取值范围为[-∞,1]。
R2的计算公式为1减去RSS与TSS的商。其中,TSS(Total Sum of Squares)为所有样本数据与均值的差异,是方差的m倍。而RSS(Residual sum of Squares)为所有样本数据误差的平方和,是MSE的m倍。
从公式定义可知,最理想情况,所有的样本数据的预测值与真实值相同,即RSS为0,此时R2为1。
我们可以以波士顿房价为例来做程序演示
from sklearn.linear_model import LinearRegressionfrom sklearn.model_selection import train_test_splitfrom sklearn.datasets import load_bostonimport pandas as pdboston = load_boston()x, y = boston.data, boston.targetdf = pd.DataFrame(np.concatenate([x, y.reshape(-1,1)], axis=1), columns = boston.feature_names.tolist()+['MEDV'])df.head() x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25, random_state=0)lr = LinearRegression()lr.fit(x_train, y_train)y_hat = lr.predict(x_test)print('权重:',lr.coef_)print('截距:',lr.intercept_)print('实际值:',y_test[:10])print('测试值:',y_hat[:10])print('训练值R^2:',lr.score(X_train, y_train))print('测试值R^2:',lr.score(X_test, y_test))