实验目的
(1)了解线性回归算法的相关概念及含义; (2)掌握线性回归算法求解问题的流程; (3)能够编写出线性回归算法求解某一问题的代码; (4)能够分析实验结果,对算法进行评估。
实验内容
该实验内容包括以下三部分:
(1)需要对线性回归的相关概念进行阐述;
(2)可任选一个数据集(Sklearn自带数据集、自动生成数据集、爬虫得来的数据集、各大竞赛平台下载的数据集、来自实际生活的数据集等均可),并阐述自己所选定的数据集。 需要注意的是,该实验需要选用是回归问题的数据集。
(3)设计实验方案,进行仿真和预测。
实验过程
(1)线性回归算法的相关概念及含义
线性回归是一种基本的统计学习方法,用于建立自变量与因变量之间的线性关系模型,通过对已知数据进行拟合,预测未知数据的取值。涉及到以下一些基本概念:
自变量:也就是特征或属性,是影响因变量的因素。在线性回归中可以有多个自变量。
因变量:目标变量,是需要预测的变量,它的值是由自变量决定的,需要根据自变量的取值得到它的预测结果。
线性模型:线性回归模型就是一个线性函数,它描述了自变量和因变量之间的线性关系,通常表示为 y = w0 + w1x1 + w2x2 + ... + wn*xn,其中y表示因变量的值,w0, w1, w2 ... wn 表示模型的参数,x1, x2 ... xn 表示自变量的值。
损失函数:用于评估模型预测结果与真实结果之间的误差,线性回归中常用的损失函数是平方损失函数(Square loss function),也称为均方误差(Mean Square Error, MSE)。
最小二乘法:通过最小化预测结果与真实结果之间的差距,得到最优的模型参数。
(2)线性回归算法求解问题的流程
线性回归算法求解问题的一般流程如下:
1.加载数据集并进行预处理。对于每个标签属性,需要根据实际业务需求进行量化或二值化等处理。
2.将数据集划分为训练集和测试集。通常将70%~80%的数据用于训练,20%~30%的数据用于测试。
3.构建线性回归模型,并使用训练数据集进行模型训练。
4. 在测试数据集上进行预测操作。
5.计算预测结果与真实结果之间的误差,并评估模型性能。
6. 根据实际需求调整模型参数或选择其他算法进行模型建立。
(3)编写线性回归算法求解鸢尾花问题的代码
(4)实验结果的评估
通过代码结果可以得到模型在测试集上的预测结果和均方误差。鸢尾花数据集的目标是根据鸢尾花的四个特征(萼片长度、萼片宽度、花瓣长度和花瓣宽度)预测该鸢尾花的类别,而在这里我们仅选择了其中两列进行分析,并不是完整的鸢尾花分类问题的实现。因此,我们需要根据实际业务需求来对模型进行调优和改进。在评估模型结果时,我们需要结合实际需求,对模型的精度、召回率、F1值等指标进行综合评价,以便于更好地评估模型性能。
实验Python代码
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import csv
boston=load_iris()
# import pandas as pd
# boston = pd.read_csv(r'D:\Anaconda\Lib\site-packages\sklearn\datasets\data\boston_house_prices.csv',encoding='utf-8', sep=',',engine='python')
X=boston['data']
y=boston['target']
X_train,X_test,y_train,y_test=train_test_split(X,y)
from sklearn.preprocessing import StandardScaler
ssc=StandardScaler()
X_train=ssc.fit_transform(X_train)
X_test=ssc.transform(X_test)
from sklearn.linear_model import Lasso # L1正则 绝对值之和 L2平方和之和
las=Lasso()
las.fit(X_train,y_train)
print('las系数:',las.coef_)
print('las截距:',las.intercept_)
from sklearn.metrics import mean_squared_error
from sklearn.metrics import r2_score
y_pred=las.predict(X_test)
print('mse:',mean_squared_error(y_test,y_pred))
print('r2:',r2_score(y_test,y_pred))
疑难小结
实验总结:
本次实验主要学习了线性回归算法的基本概念、求解问题的流程以及编写代码实现鸢尾花预测问题。通过实验我们了解到,在机器学习中,线性回归是一种基本的模型,可以用来拟合自变量和因变量之间的线性关系,预测未知数据的取值。我们需要根据实际需求选择合适的特征进行建模和调参,以达到最优的预测效果。同时,我们还需要根据评估指标评估模型的性能表现,进而对模型进行优化。
疑难小结:
1.为什么要将数据集划分为训练集和测试集?
在机器学习中,我们通常需要将数据集划分为训练集和测试集。训练集用于模型训练,测试集用于模型测试和评估。这是因为如果我们直接使用全部数据进行模型训练和测试,容易造成过拟合现象,即模型在训练数据上表现很好,但在未知数据上表现差。为了避免这种情况,我们需要使用测试集验证模型的泛化能力和性能表现。
2.如何评估线性回归模型的性能?
评估线性回归模型的性能通常使用均方误差(Mean Squared Error,MSE)和决定系数(R-Squared)指标进行评估。均方误差表示预测值与实际值之间的差别大小,越小代表模型拟合效果越好。决定系数是一种评估模型拟合程度的指标,表示因变量的变异有多少是可以由自变量解释的,取值范围为0~1,数值越接近1代表模型的拟合效果越好。
3.线性回归模型是否只能适用于处理连续型数据?
不完全是。虽然线性回归模型在大多数情况下适用于处理连续型数据,但其实也可以使用一些方法将离散型数据转换为连续型数据。比如说,在分类问题中将类别映射为数值,或者使用独热编码等方法来将离散型数据转换为连续型数据。