利用线性回归预测波士顿房价

本文介绍了如何利用线性回归模型预测波士顿地区的房价。通过学习线性函数 y=kx+b,结合已有的数据,训练模型并进行预测。文章详细展示了数据加载、模型训练、预测和结果可视化的代码过程。

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


我们现在开始学习这门课程的第一个AI程序:利用线性回归预测波士顿房价。

原理简介

如果你之前没有听说过线性回归这个概念,那么在这节课中,你只需要把它当做是一次线性函数 y = kx+b 就可以了。我们要做的就是利用已有数据,去学习得到这条直线,有了这条直线,则对于横坐标 x 的任意取值,我们都可以找到直线上对应的 y 值,也就是模型的预测值。

线性回归
图中的直线 y = kx+b 是第 1 节课中提到的体重预测模型,它是最简单的线性回归模型。这节课我们要学习的房价预测模型也是 y = kx+b 这个形式,输入特征 x 是住宅平均房间数,输出标记 y 是波士顿房价。

下面正式开始编程之旅吧!

代码分析

导入相关的工具包

# 使用 sklearn 内置的波士顿房价数据集,load_boston 是加载数据集的函数
from sklearn.datasets import load_boston

# 使用sklearn 中的 train_test_split 划分数据集
from sklearn.model_selection import train_test_split

# 使用 sklearn 中的线性回归模型进行预测
from sklearn.linear_model import LinearRegression

# 使用 matplotlib 中的 pyplot 进行可视化
import matplotlib.pyplot as plt

加载数据集

# 加载波士顿房价数据集,返回特征X和标签y
X, y = load_boston(return_X_y=True)

# 只取第6列特征(方便可视化):住宅平均房间数
X = X[:,5:6]

# 划分为训练集和测试集,测试集取20%
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.2, random_state=2020)

模型训练和预测

# 创建线性回归对象
regr = LinearRegression()

# 使用训练集训练模型
regr.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = regr.predict(X_test)

预测结果可视化

# 画测试数据散点图
plt.scatter(X_test, y_test,  color='blue')

# 画线性回归模型对测试数据的拟合曲线
plt.plot(X_test, y_pred, color='red')

# 显示绘图结果
plt.show()

# 打印斜率和截距
print('斜率:{}, 截距:{}'.format(regr.coef_,regr.intercept_))

下面是运行上述程序后的效果图:
plot结果

全部代码

# 1. 导入相关的工具包

# 使用 sklearn 内置的波士顿房价数据集,load_boston 是加载数据集的函数
from sklearn.datasets import load_boston

# 使用sklearn 中的 train_test_split 划分数据集
from sklearn.model_selection import train_test_split

# 使用 sklearn 中的线性回归模型进行预测
from sklearn.linear_model import LinearRegression

# 2. 加载数据集

# 加载波士顿房价数据集,返回特征X和标签y
X, y = load_boston(return_X_y=True)

# 只取第6列特征(方便可视化):住宅平均房间数
X = X[:,5:6]

# 划分为训练集和测试集,测试集取20%
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.2,random_state=2020)

# 3. 模型训练和预测

# 创建线性回归对象
regr = LinearRegression()

# 使用训练集训练模型
regr.fit(X_train,y_train)

# 在测试集上进行预测
y_pred = regr.predict(X_test)

# 4. 打印前3个预测值和真实值

print('y_pred:',y_pred[:3])
print('y_test:',y_test[:3])

# 5. 打印斜率和截距
print(regr.coef_,regr.intercept_)
评论 436
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

꧁༺北海以北的等待༻꧂

欢迎为萌新程序员打赏~谢谢各位

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值