机器学习案例2:基于线性回归的波士顿房价预测

案例2:基于线性回归的波士顿房价预测

为什么写本博客

​ 前人种树,后人乘凉。希望自己的学习笔记可以帮助到需要的人。

需要的基础

​ 懂不懂原理不重要,本系列的目标是使用python实现机器学习。

​ 必须会的东西:python基础、numpy、pandas、matplotlib和库的使用技巧。

说明

​ 完整的代码在最后,另外之前案例中出现过的方法不会再讲解。

目录结构

1. 涉及到的新方法说明:

数据集加载

from sklearn.datasets import load_boston
# 加载数据
data = load_boston()

标准化

from sklearn import preprocessing
# 数据标准化: 即化为均值为0,方差为1的分布
standard = preprocessing.StandardScaler()
# 将训练集和测试集x数据进行表转化
x_train = standard.fit(x_train)
x_test = standard.fit(x_test)

模型创建

from sklearn.linear_model import LinearRegression
model = LinearRegression()

均方误差MSE

sklearn.metrics.mean_squared_error(y_true, y_pred)
# 参数: 真实值和预测值

2. 数据集介绍与划分:

​ 波士顿房价数据,共506条,每条13个特征,加上一个标签(即房价值)。当然,我们可以对特征进行分析,然后选取相关性较强的属性来进行线性回归拟合,但是,这里我们就不管这么多,直接把所有数据都放入,相当于一个多元线性回归。

​ 然后,我们将数据7:3划分为训练集和测试集:

from sklearn.datasets import load_boston
from sklearn import model_selection
# 加载数据
data = load_boston()
# print(data)
# 划分数据集
x_train,x_test,y_train,y_test = model_selection.train_test_split(data['data'],data['target'],test_size=0.3,random_state=20)
print(x_train.shape) # (354, 13)
print(y_train.shape) # (354,)

3. 数据标准化:

​ 下面,我们需要将数据进行标准化,这一步很简单,根据方法来即可:

from sklearn import preprocessing
# 数据标准化: 即化为均值为0,方差为1的分布
standard = preprocessing.StandardScaler()
# 将训练集和测试集x数据进行表转化
x_train = standard.fit_transform(x_train)
x_test = standard.fit_transform(x_test)

4. 模型创建、训练和评估:

​ 首先,创建和训练模型:

# 创建模型
model = LinearRegression()
# 训练
model.fit(x_train,y_train)

​ 接着,对模型进行评估,这里我们使用MSE进行评价,MSE就是真实值和预测值差的平方和的平均,用公式表示为:

在这里插入图片描述

​ 当然,不难看出MSE值越小模型越好,因为这样预测值和真实值的插值才小。

​ 因此,我们使用MSE评估,并打印相关参数:

# MSE
y_pred = model.predict(x_test)
score = sklearn.metrics.mean_squared_error(y_test,y_pred)
print('MSE = ',score) # MSE =  25.70195952797909
# 打印相关参数
print('w = ',model.coef_)
print('b = ',model.intercept_)

​ 相关打印结果如下:

MSE =  25.70195952797909
w =  [-0.47142056  0.6541109   0.25721446  0.55846116 -2.34588302  3.34540835
  0.27632621 -2.67132414  1.94525301 -1.70458238 -1.84255136  0.84011202
 -3.35643536]
b =  22.684745762711895

5. 总结与完整代码:

​ 线性回归是一个非常简单的模型,但是这个模型却有非常好的数学可解释性,因此也是一个非常常用的模型之一。

​ 完整代码:

# author: baiCai
# 导入包
import sklearn
from sklearn import preprocessing
from sklearn import model_selection
from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_boston

# 加载数据
data = load_boston()
print(data)
# 划分数据集
x_train,x_test,y_train,y_test = model_selection.train_test_split(data['data'],data['target'],test_size=0.3,random_state=20)
print(x_train.shape) # (354, 13)
print(y_train.shape) # (354,)

# 数据标准化: 即化为均值为0,方差为1的分布
standard = preprocessing.StandardScaler()
# 将训练集和测试集x数据进行表转化
x_train = standard.fit_transform(x_train)
x_test = standard.fit_transform(x_test)

# 创建模型
model = LinearRegression()
# 训练
model.fit(x_train,y_train)
# MSE
y_pred = model.predict(x_test)
score = sklearn.metrics.mean_squared_error(y_test,y_pred)
print('MSE = ',score) # MSE =  25.70195952797909
# 打印相关参数
print('w = ',model.coef_)
print('b = ',model.intercept_)
  • 19
    点赞
  • 130
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 好的,我可以给你提供一个简单的波士顿房价预测模型,使用随机森林和线性回归,并绘制对比图。 首先,我们需要加载所需的库和数据集: ```python import numpy as np import pandas as pd from sklearn.datasets import load_boston from sklearn.ensemble import RandomForestRegressor from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split import matplotlib.pyplot as plt # 加载数据集 boston = load_boston() df = pd.DataFrame(boston.data, columns=boston.feature_names) df['PRICE'] = boston.target ``` 接下来,我们将数据集分成训练集和测试集: ```python # 将数据集分成训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(df[boston.feature_names], df['PRICE'], test_size=0.25, random_state=42) ``` 然后,我们可以使用随机森林和线性回归模型进行训练和预测: ```python # 训练随机森林模型 rf = RandomForestRegressor(n_estimators=100, random_state=42) rf.fit(X_train, y_train) # 训练线性回归模型 lr = LinearRegression() lr.fit(X_train, y_train) # 使用随机森林模型进行预测 rf_pred = rf.predict(X_test) # 使用线性回归模型进行预测 lr_pred = lr.predict(X_test) ``` 最后,我们可以绘制随机森林和线性回归模型的预测结果与实际结果的对比图: ```python # 绘制随机森林模型的预测结果与实际结果的对比图 plt.scatter(y_test, rf_pred) plt.plot([0, 50], [0, 50], '--k') plt.xlabel('True price ($1000s)') plt.ylabel('Predicted price ($1000s)') plt.title('Random Forest Regression') plt.show() # 绘制线性回归模型的预测结果与实际结果的对比图 plt.scatter(y_test, lr_pred) plt.plot([0, 50], [0, 50], '--k') plt.xlabel('True price ($1000s)') plt.ylabel('Predicted price ($1000s)') plt.title('Linear Regression') plt.show() ``` 下面是完整的代码: ```python import numpy as np import pandas as pd from sklearn.datasets import load_boston from sklearn.ensemble import RandomForestRegressor from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split import matplotlib.pyplot as plt # 加载数据集 boston = load_boston() df = pd.DataFrame(boston.data, columns=boston.feature_names) df['PRICE'] = boston.target # 将数据集分成训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(df[boston.feature_names], df['PRICE'], test_size=0.25, random_state=42) # 训练随机森林模型 rf = RandomForestRegressor(n_estimators=100, random_state=42) rf.fit(X_train, y_train) # 训练线性回归模型 lr = LinearRegression() lr.fit(X_train, y_train) # 使用随机森林模型进行预测 rf_pred = rf.predict(X_test) # 使用线性回归模型进行预测 lr_pred = lr.predict(X_test) # 绘制随机森林模型的预测结果与实际结果的对比图 plt.scatter(y_test, rf_pred) plt.plot([0, 50], [0, 50], '--k') plt.xlabel('True price ($1000s)') plt.ylabel('Predicted price ($1000s)') plt.title('Random Forest Regression') plt.show() # 绘制线性回归模型的预测结果与实际结果的对比图 plt.scatter(y_test, lr_pred) plt.plot([0, 50], [0, 50], '--k') plt.xlabel('True price ($1000s)') plt.ylabel('Predicted price ($1000s)') plt.title('Linear Regression') plt.show() ``` 希望这个模型能够对你有所帮助! ### 回答2: 波士顿房价预测是利用机器学习算法进行房价预测的一个任务。在这里,我们将使用随机森林和线性回归作为预测模型,并绘制预测结果的对比图。 随机森林是一种集成学习方法,它由多个决策树组成。它通过随机选择特征和数据样本进行训练,进而做出预测。线性回归是一种基于线性关系建模的方法,通过对特征和目标变量之间的线性关系进行建模,来进行预测。 我们首先需要准备数据集。波士顿房价数据集是一个经典的机器学习数据集,包含了13个特征变量(如犯罪率、每个地区住宅平均房间数等)以及一个目标变量(房价)。 然后,我们将数据集划分为训练集和测试集,通常将80%的数据用作训练集,20%的数据用作测试集。 接下来,我们分别使用随机森林和线性回归进行训练和预测。随机森林通过训练多个决策树并结合它们的预测结果来做出最终预测。线性回归则通过找到特征与目标变量之间的最佳线性拟合来做出预测。 最后,我们绘制预测结果的对比图。横轴表示样本的索引,纵轴表示房价。我们将测试集中的实际房价与使用随机森林和线性回归模型预测的房价进行对比,使用不同的颜色表示实际房价与预测结果。 通过对比图,我们可以直观地看到随机森林和线性回归模型在预测房价方面的表现。这个对比图可以帮助我们评估两个模型的准确性和泛化能力。 综上所述,我们可以使用随机森林和线性回归模型来预测波士顿房价,并通过绘制对比图来比较它们的预测效果。 ### 回答3: 波士顿房价预测是一个常见的房地产市场分析问题,其中涉及使用机器学习算法来预测波士顿地区房屋的价格。本文将通过随机森林和线性回归两种方法进行波士顿房价预测,并绘制对比图。 随机森林是一种集成学习算法,它通过构建多个决策树并取其平均值来进行预测。线性回归是一种传统的预测方法,它建立了一个线性模型来预测因变量和自变量之间的关系。 在进行预测之前,我们首先需要收集关于波士顿地区的数据集,其中包括各种可能影响房价的因素,如房屋的大小、房间数量、地理位置等。然后,我们将数据集拆分为训练集和测试集,以便评估模型的预测能力。 使用随机森林算法,我们可以通过训练集来构建多个决策树,并对测试集进行预测。然后,将每个决策树的预测结果取平均值,得出整体的房价预测结果。同样地,使用线性回归方法,我们可以得到一个线性模型,从而进行房价预测。 最后,为了比较两种方法的预测性能,我们将绘制一个对比图。对比图中将包括实际房价和两种方法的预测房价,以便我们可以直观地了解它们之间的相似性和差异性。 通过观察对比图,我们可以评估随机森林和线性回归的预测准确性,并确定哪种方法在波士顿地区的房价预测中更有效。这有助于房地产市场的相关决策制定,并帮助投资者做出明智的选择。 总之,使用随机森林和线性回归两种方法进行波士顿房价预测,并绘制对比图,可以为我们提供 valuable information,以便更好地理解和分析波士顿地区房地产市场。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值