目录
-
实验目的
1.学习线性回归模型的基本原理和假设。
2.使用Python中的Scikit-Learn库来实现线性回归模型。
3.使用线性回归模型来进行预测。
-
实验内容与要求
与房价密切相关的除了单位的房价,还有房屋的尺寸。我们可以根据已知的房屋成交价和房屋的尺寸进行线性回归,继而可以对已知房屋尺寸,而未知房屋成交价格的实例进行成交价格的预测。对于给出的数据集,请对对房屋成交信息建立回归方程,并依据回归方程对房屋价格进行预测。
-
实验程序与结果
#1. 建立工程并导入 sklearn 包 import matplotlib.pyplot as plt import numpy as np from sklearn import linear_model #2.加载训练数据,建立回归方程 # 读取数据集,建立datasets_X和datasets_Y用来存储数据中的房屋尺寸和房屋成交价格。 datasets_X = [] datasets_Y = [] #打开数据集所在文件prices.txt,读取数据。 fr = open('prices.txt','r') #一次读取整个文件。 lines = fr.readlines() # 读取数据集 #逐行进行操作,循环遍历所有数据 for line in lines: # 去除数据文件中的逗号 items = line.strip().split(',') # 将读取的数据转换为int型,并分别写入datasets_X和datasets_Y。 datasets_X.append(int(items[0])) datasets_Y.append(int(items[1])) #求得datasets_X的长度,即为数据的总数。 length = len(datasets_X) #将datasets_X转化为数组,并变为二维,以符合线性回归拟合函数输入参数要求。 datasets_X = np.array(datasets_X).reshape([length,1]) #将datasets_Y转化为数组 datasets_Y = np.array(datasets_Y) # 以数据datasets_X的最大值和最小值为范围,建立等差数列,方便后续画图。 minX = min(datasets_X) maxX = max(datasets_X) X = np.arange(minX,maxX).reshape([-1,1]) # 调用线性回归模块,建立回归方程,拟合数据 linear = linear_model.LinearRegression() linear.fit(datasets_X, datasets_Y) # 3.图像中显示,可视化处理 #用scatter函数绘制数据点,用红色绘制数据点; #用plot函数来绘制直线,用蓝色绘制回归线;用xlabel和ylabel用来指定横纵坐标的名称。 # 图像中显示 plt.scatter(datasets_X, datasets_Y, color = 'red') plt.plot(X, linear.predict(X), color = 'blue') plt.xlabel('Area') plt.ylabel('Price') plt.show()
-
实验结果分析
该段代码实现了一个简单的线性回归模型,通过读取一个名为“prices.txt”的数据集,并将数据集中的房屋面积作为自变量,房屋成交价格作为因变量,使用Scikit-Learn库中的线性回归模型进行模型拟合,并将拟合结果可视化显示。
在数据预处理阶段,代码通过打开数据集文件“prices.txt”,读取数据集中的房屋面积和房屋成交价格,将其存储到列表datasets_X和datasets_Y中,并将datasets_X和datasets_Y转换为NumPy数组。
在模型训练阶段,代码使用Scikit-Learn库中的线性回归模型(linear_model.LinearRegression())来拟合数据,并调用fit()方法进行模型训练。
在模型评估和可视化阶段,代码使用matplotlib库来可视化显示数据集和线性回归模型拟合结果,使用plt.scatter()函数来绘制数据点,并使用plt.plot()函数来绘制回归线,使用plt.xlabel()和plt.ylabel()函数来指定横纵坐标的名称。
通过可视化结果,可以看出,数据点分布在一条近似于直线的区域内,并且回归线也很好地拟合了数据点,说明该线性回归模型能够较好地预测房屋成交价格和面积之间的关系。