基于LinearRegression的波士顿房价预测

本文通过线性回归模型分析波士顿房价数据集,详细探讨了包括CRIM、ZN、INDUS等13个特征与房价的关系,并进行数据处理,为建立预测模型做准备。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LinearRegression中文叫做线性回归,是一种基础、常用的回归方法。

2018年8月22日笔记
sklearn官方英文用户使用指南:https://sklearn.org/user_guide.html
sklearn翻译中文用户使用指南:http://sklearn.apachecn.org/cn/0.19.0/user_guide.html

0.打开jupyter notebook

不知道怎么打开jupyter notebook的朋友请查看我的入门指南文章:https://www.jianshu.com/p/bb0812a70246

1.载入数据集

波士顿房价数据集详细中文解释链接:http://sklearn.apachecn.org/cn/0.19.0/datasets/index.html#boston-house-prices
网页中内容截图如下:

10345471-14b83705a587943f.png
image.png

查看数据集对象的属性和方法,代码如下:

from sklearn.datasets import load_boston
dir(load_boston())

上面一段代码的运行结果如下:

['DESCR', 'data', 'feature_names', 'target']

查看数据集的描述,即打印数据集对象的DESCR属性,代码如下:

from sklearn.datasets import load_boston
print(load_boston().DESCR)

与上图中文文档的图对照阅读,可以加强对数据集的理解。
上面一段代码的运行结果如下图所示:


10345471-411763dde28edd95.png
image.png

将506个样本13个特征组成的矩阵赋值给变量X,变量X为大写字母的原因是数学中表示矩阵使用大写字母。
将506个样本1个预测目标值组成的矩阵赋值给变量y。
载入数据集的代码如下:

from sklearn.datasets import load_boston

X = load_boston().data
y = load_boston().target

2.数据观察

使用pandas库完成数据分析阶段的任务。
首先实例化1个DataFrame对象赋值给变量df,DataFrame对象类似于Excel表格。
查看变量df的前10行,代码如下:

import pandas as pd

df = pd.DataFrame(X, columns=load_boston().feature_names)
df.head(10)

上面一段代码的运行结果如下图所示:


10345471-eb60b77d82c2a043.png
image.png

查看变量df中是否有空值,如果有空值,则需要对其进行处理,代码如下:

df.info()

上面一段代码的运行结果如下图所示:

10345471-97ec18583edb4174.png
image.png

从上图的结果我们可以看出,数据总共有506行,13列。
在数据科学领域中,一般称事物的属性为 字段,13个字段中都有506个非空的float64类型的数值,即没有空值。
从上图的最后1行可以看出,该表格总共占用内存51.5KB。
在计算机科学中,B表示Byte,中文叫做 字节,b表示bit,中文叫做比特, 1Byte = 8bit
占用内存的计算也并不复杂,1个float64类型的数值占用64bit,即8Byte,则总共 13*506*8/1024=51.39KB
占用内存51.5KB比51.39KB略大,原因是表格中除了数据还得存储一些描述信息。

表格聚合运算的中文与英文简写对照如下表所示:

### 使用线性回归实现波士顿房价预测 #### 导入必要的库 为了构建并评估线性回归模型,需要先加载所需的Python库。 ```python import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error, r2_score ``` #### 加载数据集 波士顿房价数据集可以通过`sklearn.datasets`模块中的`load_boston()`函数轻松获取[^2]。 ```python boston_dataset = load_boston() dataframe = pd.DataFrame(boston_dataset.data, columns=boston_dataset.feature_names) dataframe['MEDV'] = boston_dataset.target # MEDV代表目标变量——房屋价格中位数 print(dataframe.head()) ``` #### 数据预处理 将数据分为训练集和测试集,并分离特征与标签。 ```python X = dataframe.drop('MEDV', axis=1).values Y = dataframe['MEDV'].values.reshape(-1, 1) # 划分训练集和测试集 X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=5) ``` #### 构建线性回归模型 创建一个线性回归实例,并利用训练数据对其进行拟合。 ```python linear_regression = LinearRegression() linear_regression.fit(X_train, Y_train) ``` #### 预测与性能评估 应用训练好的模型对测试样本做出预测,并通过均方误差(MSE)及决定系数(R² Score)衡量其表现。 ```python predictions = linear_regression.predict(X_test) mse = mean_squared_error(Y_test, predictions) r2 = r2_score(Y_test, predictions) print(f'Mean Squared Error: {mse}') print(f'R-squared Value: {r2:.3f} [^1]') ``` #### 可视化结果 绘制预测值对比实际值的图表有助于更直观理解模型的表现情况。 ```python plt.scatter(Y_test, predictions) plt.plot([min(Y_test), max(Y_test)], [min(predictions), max(predictions)], color='red') # y=x line plt.xlabel('Actual Prices') plt.ylabel('Predicted Prices') plt.title('True vs Predicted House Prices') plt.show() [^4] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值