【Python机器学习】决策树、K近邻、神经网络等模型对Kaggle房价预测实战(附源码和数据集)

简介: 【Python机器学习】决策树、K近邻、神经网络等模型对Kaggle房价预测实战(附源码和数据集)

需要源码和数据集请点赞关注收藏后评论区留言私信~~~

超参数调优

超参数调优需要依靠试验的方法,以及人的经验。对算法本身的理解越深入,对实现算法的过程了解越详细,积累了越多的调优经验,就越能够快速准确地找到最合适的超参数

试验的方法,就是设置了一系列超参数之后,用训练集来训练并用验证集来检验,多次重复以上过程,取效果最好的超参数。训练数据的划分可以采用保持法,也可以采用K-折交叉验证法。超参数调优的试验方法主要有两种:网格搜索和随机搜索。

网格搜索

网格搜索法将各超参数形成的空间划分为若干小空间,在每一个小空间上取一组值作为代表进行试验。取效果最好的那组值作为最终的超参数值。

这种暴力的方法,只适合于小样本量、少参数的情况,否则效率很低。可以作适当地改进,1)在影响大的参数上作更细的划分,而在影响小的参数上作粗的划分,2)先将网格粗切分,然后再对最好的网格进行细切分,3)还有一种改进效率的贪心搜索方法,先在影响最大的参数上进行一维搜索,找到最优参数,然后固定它,再在余下参数中影响最大参数上进行一维搜索,如此下去,直到搜索完所有参数。

随机搜索

随机搜索的思想和网格搜索比较相似,只是不固定分隔子空间,而是随机分隔。它将每个特征的取值都看成是一个分布,然后依概率从中取值。每轮试验中,每个特征取一个值,进行模型训练。随机搜索一般会比网格搜索要快一些。但是无法保证得到最优超参数值。

在sklearn.model_selection.RandomizedSearchCV中实现了随机搜索。

房价回归预测实战

Kaggle提供了一个房价预测的题目,在官网及其他网站出现了大量对该题目的分析和研究,很适合初学者参考学习。

该题目是依据房屋的属性信息,包括房屋的卧室数量、卫生间数量、房屋的大小、房屋地下室的大小、房屋的外观、房屋的评分、房屋的修建时间、房屋的翻修时间、房屋的位置信息等,对房屋的价格进行预测。

1:初步数据分析

从Kaggle官网下载数据后,用Pandas进行初步分析,发现数据完整,没有缺失和重复的现象

2:划分训练集和验证集,并标准化

3:初步建立模型

选择K近邻回归、决策树回归、随机森林回归和梯度提升树回归等多个模型进行初步实验

4:超参数调优

对用时最少、得分最高的梯度提升树回归模型进行超参数调优。具体采用网格搜索方法。

5:特征选择

用相关系数来观察不同特征之间以及它们和标签值之间的相关性

去掉与标签相关系数值较小的特征,重新训练模型,比较结果,发现得分略降低,但用时大幅下降

用散点图观察特征与标签的相关性

从平均绝对误差来看,第一应该去掉的特征bathrooms 从均方误差来看,第一应该去掉的特征是sqft_basement

神经网络模型

最后 尝试使用全连接层神经网络来对该回归问题建模

训练过程和训练误差结果如下

最后 部分代码如下

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
sc.fit(X_train)
X_train= sc.transform(X_train)
X_test = sc.transform(X_test)
from sklearn.neighbors import KNeighborsRegressor
model = KNeighborsRegressor(n_neighbors=10)
time_start=time.time()
model.fit(X_train, y_train)
print('K近邻回归模型训练用时:', time.time()-time_start)
y_pred=model.predict(X_test)
print ('K近邻回归模型在验证集上的平均绝对误差和均方误差分别为:', 
       mean_absolute_error(y_test,y_pred), mean_squared_error(y_test,y_pred))
from sklearn.tree import DecisionTreeRegressor
model = DecisionTreeRegressor()
time_start=time.time()
model.fit(X_train, y_train)
print('决策树回归模型训练用时:', time.time()-time_start)
y_pred=model.predict(X_test)
print ('决策树回归模型在验证集上的平均绝对误差和均方误差分别为:', 
       mean_absolute_error(y_test,y_pred), mean_squared_error(y_test,y_pred))
from sklearn.ensemble import RandomForestRegressor 
model = RandomForestRegressor(n_estimators=500)
time_start=time.time()
model.fit(X_train, y_train)
print('随机森林回归模型训练用时:', time.time()-time_start)
y_pred=model.predict(X_test)
print ('随机森林回归模型在验证集上的平均绝对误差和均方误差分别为:', 
       mean_absolute_error(y_test,y_pred), mean_squared_error(y_test,y_pred))
plt.figure(figsize=(14,12))
sns.heatmap(raw_data.corr(), annot=True, cmap="YlGnBu")
plt.title('Feature Correlation')
plt.tight_layout()
plt.show()

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
5月前
|
机器学习/深度学习 数据采集 数据挖掘
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
200 2
|
4月前
|
机器学习/深度学习 数据采集 并行计算
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
467 2
|
7月前
|
存储 机器学习/深度学习 人工智能
稀疏矩阵存储模型比较与在Python中的实现方法探讨
本文探讨了稀疏矩阵的压缩存储模型及其在Python中的实现方法,涵盖COO、CSR、CSC等常见格式。通过`scipy.sparse`等工具,分析了稀疏矩阵在高效运算中的应用,如矩阵乘法和图结构分析。文章还结合实际场景(推荐系统、自然语言处理等),提供了优化建议及性能评估,并展望了稀疏计算与AI硬件协同的未来趋势。掌握稀疏矩阵技术,可显著提升大规模数据处理效率,为工程实践带来重要价值。
362 58
|
4月前
|
算法 安全 新能源
基于DistFlow的含分布式电源配电网优化模型【IEEE39节点】(Python代码实现)
基于DistFlow的含分布式电源配电网优化模型【IEEE39节点】(Python代码实现)
393 0
|
5月前
|
机器学习/深度学习 算法 调度
【切负荷】计及切负荷和直流潮流(DC-OPF)风-火-储经济调度模型研究【IEEE24节点】(Python代码实现)
【切负荷】计及切负荷和直流潮流(DC-OPF)风-火-储经济调度模型研究【IEEE24节点】(Python代码实现)
265 0
|
7月前
|
机器学习/深度学习 人工智能 PyTorch
200行python代码实现从Bigram模型到LLM
本文从零基础出发,逐步实现了一个类似GPT的Transformer模型。首先通过Bigram模型生成诗词,接着加入Positional Encoding实现位置信息编码,再引入Single Head Self-Attention机制计算token间的关系,并扩展到Multi-Head Self-Attention以增强表现力。随后添加FeedForward、Block结构、残差连接(Residual Connection)、投影(Projection)、层归一化(Layer Normalization)及Dropout等组件,最终调整超参数完成一个6层、6头、384维度的“0.0155B”模型
427 11
200行python代码实现从Bigram模型到LLM
|
8月前
|
机器学习/深度学习 人工智能 算法
Scikit-learn:Python机器学习的瑞士军刀
想要快速入门机器学习但被复杂算法吓退?本文详解Scikit-learn如何让您无需深厚数学背景也能构建强大AI模型。从数据预处理到模型评估,从垃圾邮件过滤到信用风险评估,通过实用案例和直观图表,带您掌握这把Python机器学习的'瑞士军刀'。无论您是AI新手还是经验丰富的数据科学家,都能从中获取将理论转化为实际应用的关键技巧。了解Scikit-learn与大语言模型的最新集成方式,抢先掌握机器学习的未来发展方向!
1126 12
Scikit-learn:Python机器学习的瑞士军刀
|
8月前
|
机器学习/深度学习 人工智能 算法
Python+YOLO v8 实战:手把手教你打造专属 AI 视觉目标检测模型
本文介绍了如何使用 Python 和 YOLO v8 开发专属的 AI 视觉目标检测模型。首先讲解了 YOLO 的基本概念及其高效精准的特点,接着详细说明了环境搭建步骤,包括安装 Python、PyCharm 和 Ultralytics 库。随后引导读者加载预训练模型进行图片验证,并准备数据集以训练自定义模型。最后,展示了如何验证训练好的模型并提供示例代码。通过本文,你将学会从零开始打造自己的目标检测系统,满足实际场景需求。
8650 1
Python+YOLO v8 实战:手把手教你打造专属 AI 视觉目标检测模型
|
3月前
|
机器学习/深度学习 数据采集 人工智能
【机器学习算法篇】K-近邻算法
K近邻(KNN)是一种基于“物以类聚”思想的监督学习算法,通过计算样本间距离,选取最近K个邻居投票决定类别。支持多种距离度量,如欧式、曼哈顿、余弦相似度等,适用于分类与回归任务。结合Scikit-learn可高效实现,需合理选择K值并进行数据预处理,常用于鸢尾花分类等经典案例。(238字)
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
1383 6

热门文章

最新文章

推荐镜像

更多