python模型参数估计_【干货】Python机器学习项目实战2——模型选择,超参数调整和评估(附代码)...

本文是Python机器学习项目实战的第二部分,内容包括数据清理、格式化后的模型选择、超参数调整和评估。作者通过实现线性回归、K最近邻、随机森林、梯度增强回归和支持向量机等多种模型,对比它们在预测纽约市建筑能源之星得分任务中的性能。在模型评估和选择中,作者强调了特征缩放的重要性,并使用随机搜索和交叉验证进行超参数调优。最终,作者发现经过超参数调整的梯度增强回归模型表现最佳。
摘要由CSDN通过智能技术生成

【导读】这是一篇完全手把手进行机器学习项目构建的教程,包含:1. 数据清理和格式化 2. 探索性数据分析 3. 特征工程和特征选择 4. 在性能指标上比较几种机器学习模型 5. 对最佳模型执行超参数调整 6. 在测试集合中评估最佳模型 7. 解释模型结果 8. 得出结论。在第一篇文章中,我们对数据进行了清理和结构化,进行了探索性的数据分析,开发了一组用于我们模型的特征,并建立了一个基准(baseline)来衡量性能。在本文中,我们将讨论如何实现和比较Python中的几种机器学习模型,执行超参数优化,对最佳模型进行优选,并对测试集上的最终模型进行评估。

作者|William Koehrsen

编译 | 专知参与 | Mandy, Xiaowen

用python完成一个完整的机器学习项目:第二部分

——Model Selection, Hyperparameter Tuning, and Evaluation

集合解决问题所需的所有机器学习程序可能是一项艰巨的任务。在本系列文章中,我们将通过使用真实数据集实现机器学习工作流程,以了解各个技术是如何结合在一起的。

此项目的完整代码在GitHub上,并附上与本文相对应的参考笔记。您可以随意使用、共享和修改代码!

第二部分代码:

https://github.com/WillKoehrsen/machine-learning-project-walkthrough/blob/master/Machine%20Learning%20Project%20Part%202.ipynb

模型评估和选择(Model Evaluation and Selection)

作为一个提醒,我们正在研究一个有监督的回归任务(a supervised regression task):利用纽约市建筑能源数据(New York City building energy data),我们想开发一个模型,可以预测建筑物的能源之星得分(Energy Star Score)。我们关注的重点是预测的准确性和模型的可解释性。

有大量的机器学习模型可供选择,这会让你难以决定从哪里开始。虽然有些图表试图告诉你要使用哪种算法,但我更愿意多尝试几种算法,并查看哪种算法效果最好!机器学习仍然是一个主要由经验(实验)而不是理论结果驱动的领域,事先知道哪种模型最好,几乎是不可能的。

一般来说,从简单的可解释模型(如线性回归)开始是一个好办法,如果性能不足,继而转向更复杂但通常更准确的模型。下图显示了一种版本的准确性与可解释性之间的权衡:

我们将评估五种不同的模型:

· 线性回归(Linear Regression)

· K最近邻回归(K-Nearest Neighbors Regression)

· 随机森林回归(Random Forest Regression)

· 梯度增强回归(Gradient Boosted Regression)

· 支持向量机回归(Support Vector Machine Regression)

在这篇文章中,我们将着重于实现这些方法而不是背后的理论。对于想要了解背景知识的人来说,我强烈推荐阅读“An Introduction to Statistical Learning“【1】,或者“Hands-On Machine Learning with Scikit-Learn and TensorFlow”【2】。这两本书都很好地解释了理论,并展示了如何分别有效地使用R和Python中的方法。

填补缺失值(Imputing Missing Values)

虽然我们在处理数据时丢失了超过50%缺失值的列,但仍有不少观察结果丢失。 机器学习模型无法处理任何缺失值,因此我们必须把它们填充进去,这是一个称为Imputing的过程【3】。

首先,我们将读入所有数据并提醒自己这些数据是什么样子的:

importpandas aspd

importnumpy asnp

# Read in data into dataframestrain_features = pd.read_csv('data/training_features.csv')

test_features = pd.read_csv('data/testing_features.csv')

train_labels = pd.read_csv('data/training_labels.csv')

test_labels = pd.read_csv('data/testing_labels.csv')

Training Feature Size: (6622,64)

Testing Feature Size: (2839,64)

Training Labels Size: (6622,1)

Testing Labels Size:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值