Python 数据挖掘-回归-波士顿房价预测

ITLiu_JH 2021-12-18 14:49:58

目录

1、目标

2、数据集介绍

3、代码

3.1 导入必须的工具包

3.2 导入数据

3.3 数据探索

3.4 数据集划分

3.5 模型构建

3.6 评价


1、目标

根据历史房价数据建立回归模型,预测不同类型房屋的价格。

2、数据集

样本数:10000

特征数量: 13个相关属性(即13个指标变量),1个目标变量(房价)。

特征 说明

CRIM 城镇人均犯罪率

ZN 大于25,000平方英尺的地块划分为住宅用地的比例

INDUS 每个城镇非零售业务的比例

CHAS 查尔斯河虚拟变量(如果 = 1则为河; =0则不为河)

NOX 一氧化氮浓度(每千万)

RM 每间住宅的平均房间数

AGE 自住房屋是在1940年之前建造的比例

DIS 到加州五个就业中心的加权距离

RAD 对径向高速公路的可达性指数

TAX 每10,000美元的全价物业税

PTRATIO 城镇的学生与教师比例

B 1000(Bk-0.63)^ 2其中Bk是城镇的黑人的比例

LSTAT 低社会阶层人口比例%

MEDV 以1000美元为单位的自住房屋的中位数价格


3 代码

3.1 导入必须的工具包

import numpy as np
import pandas as pd
from sklearn import preprocessing
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression,Lasso,ElasticNet
from sklearn.metrics import r2_score
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sn

3.2 读入数据

在例子中 y = 波士顿房价。 X = 其余的输入变量

data = pd.read_csv(‘d:/datasets/HousingData.csv')#读取csv
y = data['target']#数据标签
X = data.copy().drop(['target'], axis=1) #去掉标签列的完整数据

3.3 数据探索

 

data.head()   #查看前五行
data.tail()
data.sample()
data.info()   #查看数据的类型,完整性
data.describe() #查看数据的统计特征(均值、方差等)。

各属性与目标变量的关系,通过散点图展示

sn.pairplot(data)

3.4 数据集划分

#X_train为训练数据, y_train为训练集标签,X_test为测试数据,y_test为测试集标签。

#抽取70%的数据作为训练集, 用剩余样本进行分类结果测试。

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3)

3.5  数据标准化

scaler=preprocessing.StandardScaler().fit(X_train)
X_train=scaler.transform(X_train)
X_test=scaler.transform(X_test)

3.6 模型构建\训练\预测\评价

LinearRegression回归模型:

lr = LinearRegression() #实例化一个线性回归对象
lr.fit(X_train, y_train) #采用fit方法,拟合回归系数和截距
print(lr.intercept_)   #输出截距
prtin(lr.coef_)   #输出系数   可分析特征的重要性以及与目标的关系
y_pred = lr.predict(X_test)#模型预测
print("R2=",r2_score(y_test, y_pred))#模型评价, 决定系数
print("mse=",mean_squared_error(y_test, y_pred))#均方误差

可视化预测值与真实值

plt.plot(y_test.values,c="r",label="y_test")
plt.plot(y_pred,c="b",label="y_pred")
plt.legend()

  ElasticNet回归模型

EN=ElasticNet(0.01)  #实例化弹性网络回归对象
EN.fit(X_train,y_train) #训练
y_pred=EN.predict(X_test) #预测
#评价
print(r2_score(y_pred,y_test)) 
print("mse=",mean_squared_error(y_test, y_pred))#均方误差
y_predt=EN.predict(X_train)  #查看训练集上的效果
r2_score(y_predt,y_train)
#可视化,系数,截距同lr

lasso回归

la = Lasso()
la.fit(X_train, y_train)#拟合
y_pred=la.predict(X_test) #预测
#评价
print(r2_score(y_pred,y_test)) 
print("mse=",mean_squared_error(y_test, y_pred))#均方误差
y_predt=la.predict(X_train)  #查看训练集上的效果
r2_score(y_predt,y_train)
prtin(la.coef_)   #输出系数 (部分系数为“0”,lasso常用与特征提取)  可分析特征的重要性以及与目标的关系
#可视化,系数,截距同lr

 

 

...全文
522 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文详细介绍了线性回归算法及其在房价预测中的应用。首先阐述了线性回归的基本概念,包括一元和多元线性回归的模型公式、预测函数的不同形式(标量展开式、标量求和式、向量内积式和矩阵乘法式),以及损失函数与经验风险的概念。接着讲解了梯度下降法用于最小化损失函数的过程。在实践部分,使用波士顿房价数据集,从数据准备(数据清洗、特征工程、数据集划分)到模型训练与实现,再到模型评估(MSE、RMSE、MAE、R²等指标)及结果可视化(真实值与预测值散点图、残差分布图),进行了全流程演示。最后,通过加利福尼亚房价数据集的应用和模型优化策略(如岭回归、Lasso回归、增加多项式特征)的讨论,展示了线性回归模型在不同数据集上的表现及优化方法。 适合人群:对机器学习和数据挖掘有一定兴趣并希望深入了解线性回归算法原理及应用的初学者和中级研究人员。 使用场景及目标:①帮助读者理解线性回归的基本原理和实现方法;②指导读者使用Python和scikit-learn库完成基于线性回归的房价预测项目;③提供模型评估和优化策略,以应对实际应用中的过拟合和欠拟合问题。 阅读建议:本文内容详尽,既有理论讲解也有实践操作,建议读者跟随文章逐步进行实验,结合代码理解和优化模型,以加深对线性回归的理解。同时,注意对比不同数据集上的模型表现,思考如何根据具体应用场景调整模型参数和特征工程方法。

158

社区成员

发帖
与我相关
我的任务
社区描述
PyTorch、深度学习、神经网络相关技术交流
社区管理员
  • 1900_
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

神经网络、机器学习、深度学习、任何人工智能相关的技术资讯都可发布交流

试试用AI创作助手写篇文章吧