关键词:
机器学习实验-波士顿房价预测
1 波士顿房价预测
1.2 实验代码
1.2.1 引入依赖包
# 忽略不必要的警告
import warnings
warnings.filterwarnings('ignore')
# 引入数据科学基础包
import numpy
import matplotlib as mpl
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
import scipy.stats as st
# 设置属性防止画图中文乱码
# mpl.rcParams.keys()
mpl.rcParams['font.sans-serif'] = [u'SimHei']
mpl.rcParams['axes.unicode_minus'] = False
# 引入机器学习、预处理、模型选择、评估指标
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score
# 引入波士顿数据集
from sklearn.datasets import load_boston
# 引入各种线性机器学习算法
from sklearn.linear_model import LinearRegression,RidgeCV,LassoCV,ElasticNet
# 引入支持向量机的回归形式
from sklearn.svm import SVR
# 引入集成算法
from sklearn.ensemble import RandomForestRegressor,GradientBoostingRegressor
from xgboost import XGBRegressor
1.2.2 加载数据集,查看数据属性,可视化
# 加载波士顿房价数据集
boston = load_boston()
# x是特征,y是标签
x = boston.data
y = boston.target
# 查看相关属性
print('特征的列名')
print(boston.feature_names)
print('样本数据量:%d, 特征个数:%d' %x.shape)
print('标签样本数据量:%d' %y.shape[0])
特征的列名
['CRIM' 'ZN' 'INDUS' 'CHAS' 'NOX' 'RM' 'AGE' 'DIS' 'RAD' 'TAX' 'PTRATIO'
'B' 'LSTAT']
样本数据量:506, 特征个数:13
标签样本数据量:506
# 转化为DataFrame形式
x = pd.DataFrame(boston.data, columns=boston.feature_names)
x.head()
CRIM | ZN | INDUS | CHAS | NOX | RM | AGE | DIS | RAD | TAX | PTRATIO | B | LSTAT | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0.00632 | 18.0 | 2.31 | 0.0 | 0.538 | 6.575 | 65.2 | 4.0900 | 1.0 | 296.0 | 15.3 | 396.90 | 4.98 |
1 | 0.02731 | 0.0 | 7.07 | 0.0 | 0.469 | 6.421 | 78.9 | 4.9671 | 2.0 | 242.0 | 17.8 | 396.90 | 9.14 |
2 | 0.02729 | 0.0 | 7.07 | 0.0 | 0.469 | 7.185 | 61.1 | 4.9671 | 2.0 | 242.0 | 17.8 | 392.83 | 4.03 |
3 | 0.03237 | 0.0 | 2.18 | 0.0 | 0.458 | 6.998 | 45.8 | 6.0622 | 3.0 | 222.0 | 18.7 | 394.63 | 2.94 |
4 | 0.06905 | 0.0 | 2.18 | 0.0 | 0.458 | 7.147 | 54.2 | 6.0622 | 3.0 | 222.0 | 18.7 | 396.90 | 5.33 |
sns.distplot(tuple(y), kde=False, fit=st.norm)
<matplotlib.axes._subplots.AxesSubplot at 0x7f65b61d4828>
1.2.3 分割数据集,并对数据集进行预处理
# 数据分割
x_train,x_test,y_train,y_test = train_test_split(x, y, test_size=0.2, random_state=28)
# 标准化数据集
# 为什么要这个步骤?
ss = StandardScaler()
x_train = ss.fit_transform(x_train)
x_test = ss.transform(x_test)
x_train[0:100]
array([[-0.35703125, -0.49503678, -0.15692398, ..., -0.01188637,
0.42050162, -0.29153411],
[-0.39135992, -0.49503678, -0.02431196, ..., 0.35398749,
0.37314392, -0.97290358],
[ 0.5001037 , -0.49503678, 1.03804143, ..., 0.81132983,
0.4391143 , 1.18523567],
...,
[-0.34697089, -0.49503678, -0.15692398, ..., -0.01188637,
0.4391143 , -1.11086682],
[-0.39762221, 2.80452783, -0.87827504, ..., 0.35398749,
0.4391143 , -1.28120919],
[-0.38331362, 0.41234349, -0.74566303, ..., 0.30825326,
0.19472652, -0.40978832]])
1.2.4 利用各类回归模型,对数据集进行建模
# 模型的名称
names = [
'线性回归',
'岭回归',
'Lasso回归',
'随机森林',
'梯度提升树GBDT',
'支持向量机',
'弹性网络',
'XGBoost'
]
# 定义模型
# CV 交叉验证
models = [
LinearRegression(),
RidgeCV(alphas=(0.001, 0.1, 1), cv=3),
LassoCV(alphas=(0.001, 0.1, 1), cv=5),
RandomForestRegressor(n_estimators=10),
GradientBoostingRegressor(n_estimators=30),
SVR(C=5, kernel='rbf', gamma=0.1),
ElasticNet(alpha=0.001, max_iter=10000),
XGBRegressor()
]
# 输出所有回归模型的R2评分
# 定义R2评分的函数
def R2(model, x_train, x_test, y_train, y_test):
model_fitted = model.fit(x_train, y_train)
y_pred = model_fitted.predict(x_test)
return r2_score(y_test, y_pred)
# 遍历所有模型进行评分
for name,model in zip(names, models):
score = R2(model, x_train, x_test, y_train, y_test)
print(': :.6f, :.4f'.format(name, score.mean(), score.std()))
线性回归: 0.564115, 0.0000
岭回归: 0.563673, 0.0000
Lasso回归: 0.564049, 0.0000
随机森林: 0.716249, 0.0000
梯度提升树GBDT: 0.733582, 0.0000
支持向量机: 0.618320, 0.0000
弹性网络: 0.563992, 0.0000
XGBoost: 0.761123, 0.0000
1.2.5 利用网格搜索对超参数进行调节
# 模型构建
'''
超参数
'kernel': 核函数
'C': SVR的正则化因子
'gamma': 'rbf','ploy', 'sigmoid'核函数的系数,影响模型性能
'''
params =
'kernel': ['rbf', 'linear'],
'C': [0.1, 0.5, 0.9, 1, 5],
'gamma': [0.001, 0.01, 0.1, 1]
# 使用网格搜索,以及交叉验证
model = GridSearchCV(SVR(), param_grid=params, cv=3)
model.fit(x_train, y_train)
# 获取最优参数
print('最优参数列表:', model.best_params_)
print('最优模型:', model.best_estimator_)
print('最优R2值:', model.best_score_)
# 可视化
ln_x_test = range(len(x_test))
y_pred = model.predict(x_test)
plt.figure(figsize=(16,8))
plt.plot(ln_x_test, y_test, 'r-', label=u'真实值')
plt.plot(ln_x_test, y_pred, 'b-', label=u'SVR估计值,$R^2$=%.3f' %model.best_score_)
plt.legend(loc='upper right')
plt.grid(True)
plt.title(u'波士顿房价预测-支持向量机')
plt.show()
最优参数列表: 'C': 5, 'gamma': 0.1, 'kernel': 'rbf'
最优模型: SVR(C=5, cache_size=200, coef0=0.0, degree=3, epsilon=0.1, gamma=0.1,
kernel='rbf', max_iter=-1, shrinking=True, tol=0.001, verbose=False)
最优R2值: 0.7963412572047208
1.3 笔记
波士顿房价预测——机器学习入门级案例(代码片段)
一、数据处理1.1数据集介绍本实验使用波士顿房价预测数据集,共506条样本数据,每条样本包含了13种可能影响房价的因素和该类房屋价格的中位数,各字段含义如下表所示:字段名类型含义CRIMfloat该镇的人均犯... 查看详情
机器学习工程师-udacity项目1:预测波士顿房价(代码片段)
第一步.导入数据在这个项目中,你将利用马萨诸塞州波士顿郊区的房屋信息数据训练和测试一个模型,并对模型的性能和预测能力进行测试。通过该数据训练后的好的模型可以被用来对房屋做特定预测---尤其是对房屋的价值。... 查看详情
深度学习入门案例波士顿房价预测(代码片段)
人工智能,机器学习,深度学习做个简单介绍:三者的关系如图1所示,即:人工智能>机器学习>深度学习。深度学习设计框架:环境查看importpaddleimportnumpyasnpimportosimportmatplotlibimportmatplotlib.pyplotaspltimpor... 查看详情
机器学习算法:波士顿房价预测|黑马程序员(代码片段)
学习目标:通过案例掌握正规方程和梯度下降法api的使用1案例背景介绍数据介绍 给定的这些特征,是专家们得出的影响房价的结果属性。我们此阶段不需要自己去探究特征是否有用,只需要使用这些特征。到后... 查看详情
机器学习实战二:波士顿房价预测bostonhousing(代码片段)
波士顿房价预测Bostonhousing这是一个波士顿房价预测的一个实战,上一次的Titantic是生存预测,其实本质上是一个分类问题,就是根据数据分为1或为0,这次的波士顿房价预测更像是预测一个连续值,当然这也是... 查看详情
机器学习实战——用线性回归预测波士顿房价
波士顿房价处理(代码片段)
1.导入boston房价数据集2.一元线性回归模型,建立一个变量与房价之间的预测模型,并图形化显示。3.多元线性回归模型,建立13个变量与房价之间的预测模型,并检测模型好坏,并图形化显示检查结果。4. 一元多项式回归模... 查看详情
机器学习之用python实现最小二乘法预测房价,进行额度预测
使用最小二乘法进行房价预测:给定训练样本集合如下:求解:当房屋面积为55平方时,租赁价格是多少?给出代码与运行结果图。首先明白什么是最小二乘法,利用最小二乘法公式p=(X^TX)^-1X^TYimportnumpyasnpfromnumpyimportmatimportmatplot... 查看详情
[pytorch系列-27]:神经网络基础-多输入神经元实现波士顿房价预测(代码片段)
作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客本文网址:https://blog.csdn.net/HiWangWenBing/article/details/120605366目录前言深度学习模型框架第1章业务领域分析1.1 步骤1-1:... 查看详情
深度学习(波士顿房价预测)(代码片段)
...反向传播2.2.4优化算法3测试结果4完整源程序 1实验背景波士顿房价预测是一个经典的机器学习任务,类似于程序员世界的“HelloWorld”。和大家对房价的普遍认知相同,波士顿地区的房价是由诸多因素影响的。该数据集统... 查看详情
udacity机器学习-波士顿房价预测小结(代码片段)
EvernoteExportbody,tdfont-family:微软雅黑;font-size:10pt机器学习的运行步骤1.导入数据没什么注意的,成功导入数据集就可以了,打印看下数据的标准格式就行用个info和describe2.分析数据这里要详细分析数据的内容,看看缺省值和数据的... 查看详情
线性回归预测波士顿房价(代码片段)
预测波士顿的房价,上次已经通过房间数目预测了房价,这次用多元线性回归预测。根据之前推导的多元线性回归的参数 接下来是多元线性回归的代码实现defLinearRegression_(x,y):np.array(x)np.array(y)a=(np.linalg.inv(x.T.dot(x))).dot(x.... 查看详情
机器学习之利用线性回归预测波士顿房价和可视化分析影响房价因素实战(python实现附源码超详细)(代码片段)
...据是否在一定时期内增长或下降。接下来以线性回归预测波士顿房价进行实战解析线性回归代码如下importnumpyasnpimportmatplotlib.pyplotaspltfromsklearn.model_selectionimporttrain_test_split#读数据data=np.loadtxt(boston_house_price.csv',float,delimiter... 查看详情
《python深度学习》第三章-2(波士顿房价-回归问题)读书笔记(代码片段)
第三章-2(回归问题)本次重点:boston_housing的回归模型(K折验证,loss=‘mse’,metrics=‘mae’)3.1预测房价:回归问题回归问题前面两个例子都是分类问题,其目标是预测输入数据点所对应的单一离散的标签。另一... 查看详情
基于线性回归分析——boston房价预测(代码片段)
...joblibimportpandasaspdimportnumpyasnpclassHousePredict():"""波士顿房子数据集价格预测"""def__init__(self):#1.获取数据lb=load_boston()#2.分割数据集到训练集和测试集x_train,x_test,y_train,y_test=train_test_split(lb.data,lb.target,test_size 查看详情
keras深度学习实战——房价预测(代码片段)
...实战(8)——房价预测0.前言1.任务与模型分析1.1波士顿房价数据集1.2神经网络分析2.使用神经网络实现房价预测3.使用自定义损失函数小结系列链接0.前言我们已经学习了神经网络的基本概念,并且已经使用Keras构建... 查看详情
:从线性神经网络入手深度学习(波士顿房价案例)(代码片段)
文章目录一:波士顿房价预测数据集说明二:Pytorch搭建模型(1)数据处理(2)网络结构(3)损失函数(4)优化方法(5)训练预测(6)模型保存(7)模型加载本节... 查看详情
02-06普通线性回归(波斯顿房价预测)+特征选择(代码片段)
目录普通线性回归(波士顿房价预测)一、导入模块二、获取数据2.1打印数据三、特征选择3.1散点图矩阵3.2关联矩阵四、训练模型五、可视化更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智... 查看详情