线性回归的计算公式,线性回归预测股票

首页 > 影视动漫 > 作者:YD1662023-11-06 03:26:54

各位同学好,今天我和大家分享一下python机器学习中线性回归算法的实例应用,并介绍正则化、岭回归方法。在上一篇文章中我介绍了线性回归算法的原理及推导过程:

本节中我将借助Sklearn库完成波士顿房价预测,带大家进一步学习线性回归算法。文末附python完整代码。那我们开始吧。


1. Sklearn 库实现

1.1 线性回归方法选择

(1)正规方程的线性回归

导入方法: from sklearn.linear_model import LinearRegression

当数据量较小时(<10万条),使用该方法的准确率更高

(2)梯度下降法

导入方法: from sklearn.linear_model import SGDClassifier

当数据集很大时,使用该方法准确率更高。(尽量采用岭回归方法,得到的结果会更好)

梯度下降法公式我已经在上一篇文章中推导过,正规化方程的推导本文不做介绍,感兴趣的可自己查阅一下资料。正则化岭回归方法在文末介绍。

1.2 模型准确率的评分方法

(1)平均误差

导入方法: from sklearn.metrics import mean_absolute_error

计算平均误差方法: mean_absolute_error( 真实值 , 预测值 )

(2)均方误差

导入方法: from sklearn.metrics import mean_squared_error

计算均方误差: mean_squared_error( 真实值 , 预测值 )

2. 实例应用 -- 房价预测

2.1 数据获取

波士顿房价数据时sklearn中自带的数据,可以直接调用。如果有同学对sklearn内部数据集获取有疑问的话,可以参考我的前几篇文章

#(1)数据获取 from sklearn.datasets import load_boston boston = load_boston() #保存波士顿房价数据集

读取数据集的返回值是一个.Bunch类型数据,含有13项特征值,1项房价目标值。data中存放的是特征值数据,DESCR是对该数据集的描述,feature_names是特征值的名称,filename是该数据集的路径,target是房价数据。

线性回归的计算公式,线性回归预测股票(1)

2.2 数据处理

从.Bunch数据中获取特征值和目标值数据,boston_features存放的是影响房价的13项特征数据,boston_targets存放的是房价。

由于线性规划对特征值比较敏感,数据对预测结果的影响也比较大。为了避免数据单位不统一以及数据跨度较大等问题导致预测结果不准确,因此对特征值数据进行标准化处理。

标准化方法导入: from sklearn.preprocessing import StandardScaler

转换方法: scaler.fit_transform()

#(2)数据处理 # 获取特征值 boston_features = boston.data # 获取目标值 boston_targets = boston.target # 标准化处理--正态分布 from sklearn.preprocessing import StandardScaler #导入标准化处理方法 scaler = StandardScaler() #接收标准化方法 # 将特征值数据传入标准化转换函数中 boston_features = scaler.fit_transform(boston_features)

线性回归的计算公式,线性回归预测股票(2)

2.3 划分训练集和测试集

一般采用75%的数据用于训练,25%用于测试,因此在数据进行预测之前,先要对数据划分。

#(3)划分训练集和测试集 from sklearn.model_selection import train_test_split x_train,x_test,y_train,y_test = train_test_split(boston_features,boston_targets,test_size=0.25)

如果有同学对测试集和训练集划分方法有疑问的可以看下文的第3.1小节:

2.4 使用正规方程方法预测

使用linear接收正规方程方法,训练函数 .fit() 中传入训练值,预测函数 .predict() 传入测试集的特征值x_test,而测试集的目标值y_test用来计算模型误差。

# 导入正规方程方法 from sklearn.linear_model import LinearRegression # linear接收正规化方法 linear = LinearRegression() # 训练,输入训练所需的特征值和目标值 linear.fit(x_train,y_train) # 预测,输入预测所需的特征值 linear_predict = linear.predict(x_test)

计算模型误差

分别计算房价预测值 linear_predict 和真实值 y_test 之间的平均误差和均方误差,得到模型的平均误差为3.5,均方误差为21.2

# 使用平均误差计算模型准确率 from sklearn.metrics import mean_absolute_error # 传入预测结果和真是结果计算平均误差 linear_mean_absolute = mean_absolute_error(y_test,linear_predict) # 使用均方误差计算模型准确率 from sklearn.metrics import mean_squared_error # 传入预测结果和真是结果计算均方误差 linear_mean_squared = mean_squared_error(y_test,linear_predict)

线性回归的计算公式,线性回归预测股票(3)

2.5 使用梯度下降法预测

与上述方法同理,sgd存放梯度下降方法,训练函数.fit()中传入训练所需的特征值和目标值,预测函数.predict()中传入预测所需的特征值x_test。

!注意!:在sklearn 模型训练如果出现如下报错:‘ValueError: Unknown label type: ‘unknown’’

这时在训练所需的目标值后面加上 .astpye('str') 或 astype('int') 即可

如果训练的目标值y_train是整型数据,写成 fit(x_train,y_train.astype('int'))

如果训练的目标值y_train是浮点型数据,写成 fit(x_train,y_train.astype('str'))

#(5)使用梯度下降法预测 # 导入梯度下降法方法 from sklearn.linear_model import SGDClassifier # sgd接收梯度下降方法 sgd = SGDClassifier() # 训练 sgd.fit(x_train,y_train.astype('str')) # 预测 sgd_predict = sgd.predict(x_test) # 使用平均误差计算准确率 sgd_mean_absolute = mean_absolute_error(y_test,sgd_predict) # 使用均方误差计算准确率 sgd_mean_squared = mean_squared_error(y_test,sgd_predict)

分别计算房价预测值 sgd_predict 和真实值 y_test 之间的平均误差和均方误差,得到模型的平均误差为4.2,均方误差为38.4

线性回归的计算公式,线性回归预测股票(4)

首页 1234下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.