Kaggle房价预测详解

Kaggle房价预测详解

      • 1.导入数据
      • 2.查看各项主要特征与房屋售价的关系
        • 查看中央空调与售价关系
        • 查看装修水平与房价关系
        • 查看建造日期与售价关系
        • 不同地段与房价关系
        • 查看地皮面积与房价关系
        • 查看地下室总面积与房价关系
        • 查看关联性
      • 3.训练集数据预处理
        • 训练数据预处理
        • 创建机器学习模型
        • 得出预测结果
      • 4.导入测试集数据
        • 测试集数据预处理
        • 创建训练集特征值
        • 得到预测数据
      • 4.保存预测结果

1.导入数据

导入库

# 导入需要的模块
import pandas as pd
import matplotlib.pyplot as plt
import numpy as npimport seaborn as sns       # 离散统计分布以及连续统计分布
from scipy import stats# 正态分布
from scipy.stats import  norm# 数据标准化
from sklearn.preprocessing import StandardScaler# 消除红色警告
import warnings
warnings.filterwarnings('ignore')
%matplotlib inline 

导入数据
https://pan.baidu.com/s/1bugy1D4YKSJjOnns5_YZXA
提取码:x13i

# 导入训练数据
data_train = pd.read_csv("E:/PythonData/machine_learning/train.csv")
# 查看训练数据(前5行数据)
data_train.head()

在这里插入图片描述

2.查看各项主要特征与房屋售价的关系

查看房子售价统计信息

# 查看房子售价的统计信息
data_train['SalePrice'].describe()

在这里插入图片描述
查看缺失值

data_train.isnull().sum()

在这里插入图片描述
查看房价分布

# 绘制密度曲线
sns.distplot(data_train['SalePrice'])
plt.show()

在这里插入图片描述
计算房价的峰度和偏度

# 计算房价的峰度和偏度
SP_skew = data_train['SalePrice'].skew()
SP_kurt = data_train['SalePrice'].kurt()
print('峰度:',SP_skew)
print('偏度:',SP_kurt)

在这里插入图片描述
峰度:

峰度(Kurtosis)是描述某变量所有取值分布形态陡缓程度的统计量。

它是和正态分布相比较的。

Kurtosis=0 与正态分布的陡缓程度相同。

Kurtosis>0 比正态分布的高峰更加陡峭——尖顶峰

Kurtosis<0 比正态分布的高峰来得平台——平顶峰计算公式:β = M_4 /σ^4 偏度:

偏度:

偏度(Skewness)是描述某变量取值分布对称性的统计量。

Skewness=0 分布形态与正态分布偏度相同

Skewness>0 正偏差数值较大,为正偏或右偏。长尾巴拖在右边。

Skewness<0 负偏差数值较大,为负偏或左偏。长尾巴拖在左边。 计算公式: S= (X^ - M_0)/δ Skewness 越大,分布形态偏移程度越大。

分析:
将上面的计算结果、理论和图形相对比可以看到,长尾巴确实拖在右边,而且高峰陡峭。

查看中央空调与售价关系

# CentralAir;是否有中央空调
var = 'CentralAir'
data1 = pd.concat([data_train['SalePrice'], data_train[var]], axis=1)fig = sns.boxplot(x=var, y="SalePrice", data=data1)
fig.axis(ymin=0, ymax=800000);

在这里插入图片描述

查看装修水平与房价关系

1. 绘制装修水平与房价箱线图

# OverallQual 房子材料与装修水平
var = 'OverallQual'
data2 = pd.concat([data_train['SalePrice'], data_train[var]], axis=1)  
fig = sns.boxplot(x=var, y="SalePrice", data=data2)
fig.axis(ymin=0, ymax=800000);

在这里插入图片描述
2.绘制不同装修水平与对应售价散点图

data2 = data[["SalePrice","OverallQual"]].sort_values(by="OverallQual",ascending=True)
data2.head()

在这里插入图片描述

data2 = data[["SalePrice","OverallQual"]].sort_values(by="OverallQual",ascending=True)
data2.head()

在这里插入图片描述
3.绘制装修水平与房子售价总和柱状图。

O_S = data2[['OverallQual','SalePrice']].groupby(['OverallQual']).sum().sort_values(by='OverallQual',ascending=True)
O_S.plot(kind='bar')
plt.show()

在这里插入图片描述
分析:由上图,房价随着装修水平的提升也逐渐提升。而根据柱状图可知:在装修水平为6-7时房价的销售额最对。即6-7水平的房间卖得最火。

查看建造日期与售价关系

# YearBuilt boxplot 房子建造日期
data3 = pd.concat([data_train['SalePrice'], data_train'YearBuilt']], axis=1)
data3.head()

在这里插入图片描述
绘制不同建造日期与售价散点图

plt.scatter(data3['YearBuilt'],data1['SalePrice'])
plt.show()

在这里插入图片描述
绘制不同建造日期与房价销售额折线图

Y_S = data3[['YearBuilt','SalePrice']].groupby(['YearBuilt']).sum().sort_values(by='YearBuilt',ascending=True)
Y_S.plot()
plt.show()

在这里插入图片描述
总结:房子售价随着年份的推移越来越高。2005年左右房价销售额达到顶峰。

不同地段与房价关系

绘制不同地段与房价箱线图

# Neighborhood   地段与售价关系
var = 'Neighborhood'
data4 = pd.concat([data_train['SalePrice'], data_train[var]], axis=1)
f, ax = plt.subplots(figsize=(26, 12))
fig = sns.boxplot(x=var, y="SalePrice", data=data4)
fig.axis(ymin=0, ymax=800000);

在这里插入图片描述

N_S = data4[['Neighborhood','SalePrice']].groupby(['Neighborhood']).sum().sort_values(by='SalePrice',ascending=True)
N_S.plot(kind='bar',figsize=(20,8))
plt.show()

在这里插入图片描述
分析:由上图,CollgCr地段与NAmes地段房子销售额最高。

查看地皮面积与房价关系

# 地皮面积与售价散点图
# 创建售价与地皮面积表格
data5 = pd.concat([data_train['SalePrice'], data_train['LotArea']], axis=1)
data5.plot.scatter(x='LotArea' , y='SalePrice', ylim=(0, 800000))
plt.show()

在这里插入图片描述
绘制生活面积与房价散点图

# 绘制生活面积与售价散点图
data6 = pd.concat([data_train['SalePrice'], data_train['GrLivArea']], axis=1)    
data6.plot.scatter(x='GrLivArea', y='SalePrice', ylim=(0, 800000))
plt.show()

在这里插入图片描述

查看地下室总面积与房价关系

绘制地下室总面积与房价散点图

# 地下室总面积与售价散点图
data7 = pd.concat([data_train['SalePrice'], data_train['TotalBsmtSF']], axis=1)
data7.plot.scatter(x=var, y='SalePrice', ylim=(0, 800000))
plt.show()

在这里插入图片描述

# 绘制其他资产与售价散点图
data8 = pd.concat([data_train['SalePrice'], data_train['MiscVal']], axis=1)
data8.plot.scatter(x='MiscVal', y='SalePrice', ylim=(0, 800000))
plt.show()

在这里插入图片描述

# 绘制车库与售价散点图
var  = ['GarageArea', 'GarageCars']data9 = pd.concat([data_train['SalePrice'], data_train[var[0]]], axis=1)
data9.plot.scatter(x=var[0], y='SalePrice', ylim=(0, 800000))
plt.show()

在这里插入图片描述

data10 = pd.concat([data_train['SalePrice'], data_train[var[1]]], axis=1)
GC_S = data10.groupby(data10['GarageCars']).sum().sort_values(by='GarageCars',ascending=True)
GC_S.plot(kind='bar')
plt.xticks(rotation=360)
plt.show()

在这里插入图片描述

查看关联性

# 查看关联性
corrmat = data_train.corr()
f, ax = plt.subplots(figsize=(20, 9))
sns.heatmap(corrmat, vmax=0.8, square=True)

在这里插入图片描述

from sklearn import preprocessingf_names = ['CentralAir', 'Neighborhood']
for x in f_names:label = preprocessing.LabelEncoder()data_train[x] = label.fit_transform(data_train[x])corrmat = data_train.corr()
f, ax = plt.subplots(figsize=(20, 9))
sns.heatmap(corrmat, vmax=0.8, square=True)

在这里插入图片描述

# 关系矩阵中将显示10个特征
k  = 10 cols = corrmat.nlargest(k, 'SalePrice')['SalePrice'].index
cm = np.corrcoef(data_train[cols].values.T)
sns.set(font_scale=1.25)
hm = sns.heatmap(cm, cbar=True, annot=True, \square=True, fmt='.2f', annot_kws={'size': 10}, yticklabels=cols.values, xticklabels=cols.values)
plt.show()

在这里插入图片描述

3.训练集数据预处理

训练数据预处理

# 数据预处理
from sklearn import preprocessing
# 导入机器学习模型最小二乘法,支持向量机,高斯分布
from sklearn import linear_model, svm, gaussian_process
# 导入机器学习随机森林
from sklearn.ensemble import RandomForestRegressor
# 划分数据
from sklearn.model_selection import train_test_split
import numpy as np

选取特征数据(将数据转换成转换成正态分布)

# 获取数据
# 一共7个特征数据
cols = ['OverallQual','GrLivArea', 'GarageCars','TotalBsmtSF', 'FullBath', 'TotRmsAbvGrd', 'YearBuilt']x = data_train[cols].values
y = data_train['SalePrice'].values# fit_transform不仅计算训练数据的均值和方差,还会基于计算出来的均值和方差来转换训练数据,从而把数据转换成标准的正太分布
# 将x数据转换成正态分布
x_scaled = preprocessing.StandardScaler().fit_transform(x)
y_scaled = preprocessing.StandardScaler().fit_transform(y.reshape(-1,1))# 分割数据,测试集展1/3
X_train,X_test, y_train, y_test = train_test_split(x_scaled, y_scaled, test_size=0.33, random_state=42)

创建机器学习模型

创建字典,分别创建三个模型

# 创建字典,分别创建三个模型
clfs = {'svm':svm.SVR(), 'RandomForestRegressor':RandomForestRegressor(n_estimators=400),'BayesianRidge':linear_model.BayesianRidge()}# 分别对3个模型记性训练,并得出预测结果误差
for clf in clfs:try:clfs[clf].fit(X_train, y_train)y_pred = clfs[clf].predict(X_test)print(clf + " cost:" + str(np.sum(y_pred-y_test)/len(y_pred)) )except Exception as e:print(clf + " Error:")print(str(e))

在这里插入图片描述
分析:随机森林得到的结果误差相对时最小的。
再次创建特征参数

# 创建特征列表
cols = ['OverallQual','GrLivArea', 'GarageCars','TotalBsmtSF', 'FullBath', 'TotRmsAbvGrd', 'YearBuilt']# 将特征值赋值给x
x = data_train[cols].values# 将房价结果赋值给y
y = data_train['SalePrice'].values# 将训练数据2/3作为训练集,1/3作为测试集
X_train,X_test, y_train, y_test = train_test_split(x, y, test_size=0.33, random_state=42)clf = RandomForestRegressor(n_estimators=400)
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)

得出预测结果

# 显示预测结果
y_pred[::5]

在这里插入图片描述

# 显示测试集结果
y_test[::5]

在这里插入图片描述

4.导入测试集数据

测试集数据预处理

import pandas as pd
from sklearn.ensemble import RandomForestRegressor# 之前训练的模型
rfr = clf# 导入测试集数据
data_test = pd.read_csv("E:/PythonData/machine_learning/test.csv")

处理测试集数据缺失值

# 查看缺失值情况
data_test[cols].isnull().sum()

在这里插入图片描述
查看缺失数据的统计情况

# 查看统计情况
data_test['GarageCars'].describe()

在这里插入图片描述

data_test['TotalBsmtSF'].describe()

在这里插入图片描述

创建训练集特征值

# 创建5个特征值
cols2 = ['OverallQual','GrLivArea', 'FullBath', 'TotRmsAbvGrd', 'YearBuilt']# 缺失值处理,利用对应字段的平均值填充缺失值
cars = data_test['GarageCars'].fillna(1.766118)
bsmt = data_test['TotalBsmtSF'].fillna(1046.117970)# 横向合并
data_test_x = pd.concat( [data_test[cols2], cars, bsmt] ,axis=1) 
data_test_x.isnull().sum()

在这里插入图片描述

x = data_test_x.values
y_te_pred = rfr.predict(x)
print(y_te_pred)print(y_te_pred.shape)
print(x.shape)

在这里插入图片描述

data_test_x

在这里插入图片描述

得到预测数据

prediction = pd.DataFrame(y_te_pred, columns=['SalePrice'])
result = pd.concat([ data_test['Id'], prediction], axis=1)
# result = result.drop(resultlt.columns[0], 1)
result.head()

在这里插入图片描述

4.保存预测结果

# 保存预测结果
result.to_csv('E:/PythonData/machine_learning/Predictions1.csv', index=False)

注:先将训练集划分成2/3的训练集和测试集。通过不同的训练模型对其进行训练学习,得出每个训练模型的误差。用误差最小的随机森林模型对测试集数据进行训练,得出预测结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/15816.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据集:波士顿地区房价预测

数据集&#xff1a;波士顿地区房价预测 数据集下载地址 本文以线性回归模型预测为主 1. 数据集说明 变量名变量描述CRIM城镇人均犯罪率ZN住宅地超过25000平方英尺的比例INDUS城镇非零售商用土地的比例CHAS查理斯河空变量&#xff08;如果边界是河流&#xff0c;则为1&#x…

AI for Science的上半场:人工智能如何重新定义科学研究新范式?

AI发展七十余年&#xff0c;每一技术性突破都将给人类未来开辟新一种可能性。而它与科学研究的深度融合&#xff0c;则会裂变出无数或无穷种可能性。 来源 :36氪 万众瞩目下&#xff0c;今年10月&#xff0c;有着诺贝尔奖“嫡传”之称的诺贝尔化学奖终于揭晓&#xff0c;授予了…

【分享NVIDIA GTC 23大会干货】加速生成式AI在生物学和医疗领域的应用

【分享NVIDIA GTC 23大会干货】加速生成式AI在生物学和医疗领域的应用 1. NVIDIA医疗领域AI计算平台——NVIDIA CLARA2. NVIDIA CLARA医学影像子平台——MONAI3. NVIDIA CLARA医疗设备子平台——Holoscan4. NVIDIA基因组学解决方案Parabricks5. NVIDIA药物研发解决方案6. 个人思…

GTC 2023 万字纪要 | Don‘t Miss This Defining Moment in AI

「Don’t Miss This Defining Moment in AI」 「切勿错过 AI 的决定性时刻」 北京时间 2023 年 3 月 21 日 23:00&#xff0c;「皮衣刀客」黄教主在 GTC 2023 发表主题如上的 Keynote 演讲&#xff0c;并称「这将是我们迄今为止最重要的一次 GTC」&#xff0c;NVIDIA官方 Twi…

「国际科技信息中心SCITIC论坛」细胞,基因和人工智能:探索医学研究的未来...

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 随着科技的不断进步&#xff0c;我们现在拥有了许多前所未有的工具和技术&#xff0c;可以更深入地研究和了解人体内部的细胞和基因。人工智能技术的发展&#xff0c;也为医学研究带来了全新的机遇。例如&#…

明天10:00「国际科技信息中心SCITIC论坛」细胞,基因和人工智能:探索医学研究的未来...

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 随着科技的不断进步&#xff0c;我们现在拥有了许多前所未有的工具和技术&#xff0c;可以更深入地研究和了解人体内部的细胞和基因。人工智能技术的发展&#xff0c;也为医学研究带来了全新的机遇。例如&#…

Nat. Biotechnol. | 生成式AI在生物科学领域发展迅速

在过去的一年中&#xff0c;人工智能迎来了突破性的技术&#xff0c;它们来自OpenAI的DALL-E2和ChatGPT。 Link: https://openai.com/dall-e-2 Link: https://openai.com/blog/chatgpt 或许你在网络上已经或多或少了解了一些&#xff0c;甚至已经在无意中使用过了这些技术所带来…

OpenAI新模型惊艳了!对话问答能力逆天

编&#xff5c;昕朋 Aeneas源&#xff5c;新智元 OpenAI新模型来了&#xff01;全新对话模型ChatGPT&#xff0c;可以回答用户问题&#xff0c;还能挑出问题的错误之处。面对不懂的问题&#xff0c;还会承认错误并拒绝回答&#xff01; 当人们翘首期待GPT-4时&#xff0c;OpenA…

买股不如买基?Python实现快速追踪基金的收益情况!谁还不是个买基高手?

​ 大家知道&#xff0c;近几年&#xff0c;不少同学都是经由基金进入到股市中的。去年就很流行“买股不如买基”的说话&#xff0c;至于股票和基金到底谁更好&#xff0c;这个仁者见仁智者见智&#xff0c;恐怕一时半会儿也说不清楚。 今天&#xff0c;阳哥给大家分享的主题是…

研报精选230505

目录 【行业230505国信证券】风电or电网产业链周评&#xff08;4月第5周&#xff09;&#xff1a;海风开发资源集中释放&#xff0c;黑色类原材料价格持续下行 【行业230505天风证券】通信AI系列之&#xff1a;人工智能之火点燃算力需求&#xff0c;AI服务器迎投资机遇 【行业2…

你最关心的4个零代码问题,ChatGPT 帮你解答了!

作为人工智能&#xff08;AI&#xff09;新型聊天机器人模型 ChatGPT&#xff0c;刚上线5天就突破100万用户&#xff0c;两个多月全球用户量破亿&#xff0c;不愧为业界最炙热的当红炸子鸡。 ChatGPT 是一种语言生成模型&#xff0c;由 OpenAI 开发和训练。它是基于 Transform…

问ChatGPT:零基础如何学好.Net Core?

更多开源项目请查看&#xff1a;一个专注推荐.Net开源项目的榜单 ChatGPT横空出世&#xff0c;一下子让全球互联网企业都慌了&#xff0c;纷纷表示&#xff1a;马上跟进发布ChatGPT&#xff0c;媒体纷纷报道大有改变教培行业。 下面我们问问ChatGPT&#xff1a;零基础如何学好…

GPT-4刚发布就有手机APP接入,上传照片视频一键解读,还当起了美版知乎的问答bot...

萧箫 发自 凹非寺量子位 | 公众号 QbitAI GPT-4刚发布&#xff0c;就已经有手机应用接入了&#xff01; 只需要上传图像&#xff0c;再用语音提出需求&#xff0c;GPT-4就能帮助视障人士“看清”眼前的世界。 随时随地&#xff0c;实时解读&#xff0c;就像聊天对话一样自然。 …

whisper:robust speech recognition via large-sacle weak supervision

OpenAI Whisper 精读【论文精读45】_哔哩哔哩_bilibili更多论文&#xff1a;https://github.com/mli/paper-reading, 视频播放量 68331、弹幕量 327、点赞数 2332、投硬币枚数 1192、收藏人数 983、转发人数 394, 视频作者 跟李沐学AI, 作者简介 &#xff0c;相关视频&#xff…

《通义听悟能这么用?大佬语音面试音频通义AI总结》

此文章更适用与&#xff1a;有会议记录、直播记录、面试记录的朋友和知识内容博主等 1、把录音视频文件上传到电脑 2、上传音视频入口 3、上传音视频 4、选择语言是否翻译 5、选择是否区分发言人 我这里是某大佬的语音面试音频文件&#xff0c;选择了2人对话。 6、效果展示 总…

强到离谱!2023年必备的21款AI工具

2022年是AI技术大发展的一年&#xff0c;特别是ChatGPT的很空出世&#xff0c;让AI工具迎来大爆发&#xff0c;今天就给大家整理出21款免费且实用的AI工具推荐&#xff0c;无论是做设计还是日常学习工作都能用得到。2023年已经开始&#xff0c;让这些AI工具帮你提升生产效率&am…

《AI上字幕》基于openAI研发的whisper模型,语音(视频)一键转文本/字幕/带时间轴/支持多语言/自带翻译《桌面版教程》

简介&#xff1a; OpenAI的chatGPT非常火爆&#xff0c;其实OpenAI旗下的另一个模型实力也十分强大&#xff0c;它就是开源免费的Whisper语音转文本模型&#xff0c;目前为止它是较为顶尖的语音转文本模型 当前github上也有许多出色的开发者根据此模型开发出桌面版语音转文字应…

用GitChat赚钱的6种方法

先说下GitChat这个平台&#xff0c;其主页是&#xff1a;https://gitbook.cn/ 。 GitChat是针对技术人的知识付费平台&#xff0c;创始人是谢工&#xff0c;中途被CSDN收购&#xff0c;现在属于CSDN&#xff0c;不过依然是以独立品牌在运作。目前已完成和CSDN的衔接&#xff0c…

ChatGPT帮你梳理最全Java多线程编程知识

目录 引言 引入多线程编程的重要性和应用场景 介绍多线程的优势和挑战 什么是多线程&#xff1f; 线程与进程的区别 线程的创建与生命周期管理 线程的创建方式 …

ChatGPT、Midjourney不香了吗,New Bing 已向全球个人开放

文章目录 1. 前言2. 教程3. 开始 Bing AI 以上图片均由Bing AI生成。&#xff08;后文给出第一幅图的关键字&#xff09; 本文没有任何广告&#xff0c;放心食用&#xff0c;并且手把手教你怎么配置new bing&#xff0c;有需要的耐心看完哦&#xff0c;不懂的可私信我~ 1. 前…