项目三-寻找年收入大于50w的富豪(完整)

目录

1.探索数据

1.1了解数据(各个特征的含义)

2.清洗数据-准确、完整

2.1特征转换——转换倾斜的连续特征

2.2特征归一化

2.3独热编码——字符特征和离散数字特征

2.4切分数据

3.模型的评价指标

4.建模

4.1基准模型

4.2模型的选择-依据:应用场景、模型的优劣势、是否适合本文的问题

模型1

模型2

模型3

4.3创建一个训练和预测的流水线;——不同训练集大小、验证准确率

4.4选择最佳模型-依据:时间性能;模型的评价指标;

4.5模型调优

4.6模型评估

5.分析特征的重要性(解释模型)

5.1直观分析

5.2根据数据的分布分析;绘制直方图分析

5.3根据最优模型的feature_imporemence_分析

5.4提取重要的特征,重新训练及优化模型,评估模型

5.5最终的选择——时间和准确性的权衡


 

别想歪哈,大于50w的富豪更容易捐款哈。

本文的思路:

1.探索数据

1.1了解数据(各个特征的含义)

2.清洗数据-准确、完整

(准确——确保没有异常值;完整——无缺失值)

在数据能够被作为输入提供给机器学习算法之前,它经常需要被清洗,格式化,和重新组织 - 这通常被叫做预处理。幸运的是,对于这个数据集,没有我们必须处理的无效或丢失的条目,然而,由于某一些特征存在的特性我们必须进行一定的调整。这个预处理都可以极大地帮助我们提升几乎所有的学习算法的结果和预测能力。

2.1特征转换——转换倾斜的连续特征

一个数据集有时可能包含至少一个靠近某个数字的特征,但有时也会有一些相对来说存在极大值或者极小值的不平凡分布的的特征。算法对这种分布的数据会十分敏感,并且如果这种数据没有能够很好地规一化处理会使得算法表现不佳。在人口普查数据集的两个特征符合这个描述:'capital-gain''capital-loss'

对于高度倾斜分布的特征如'capital-gain''capital-loss'常见的做法是对数据施加一个对数转换https://en.wikipedia.org/wiki/Data_transformation_(statistics)),将数据转换成对数,这样非常大和非常小的值不会对学习算法产生负面的影响。并且使用对数变换显著降低了由于异常值所造成的数据范围异常。但是在应用这个变换时必须小心:因为0的对数是没有定义的,所以我们必须先将数据处理成一个比0稍微大一点的数以成功完成对数转换。

运行下面的代码单元来执行数据的转换和可视化结果。再次,注意值的范围和它们是如何分布的。

2.2特征归一化

除了对于高度倾斜的特征施加转换,对数值特征施加一些形式的缩放通常会是一个好的习惯。在数据上面施加一个缩放并不会改变数据分布的形式(比如上面说的'capital-gain' or 'capital-loss');但是,规一化保证了每一个特征在使用监督学习器的时候能够被平等的对待。注意一旦使用了缩放,观察数据的原始形式不再具有它本来的意义了,就像下面的例子展示的。

2.3独热编码——字符特征和离散数字特征

从上面的数据探索中的表中,我们可以看到有几个属性的每一条记录都是非数字的。通常情况下,学习算法期望输入是数字的,这要求非数字的特征(称为类别变量)被转换。转换类别变量的一种流行的方法是使用独热编码方案。独热编码为每一个非数字特征的每一个可能的类别创建一个_“虚拟”_变量。例如,假设someFeature有三个可能的取值AB或者C,。我们将把这个特征编码成someFeature_AsomeFeature_BsomeFeature_C.

2.4切分数据

3.模型的评价指标

CharityML通过他们的研究人员知道被调查者的年收入大于$50,000最有可能向他们捐款。因为这个原因*CharityML*对于准确预测谁能够获得$50,000以上收入尤其有兴趣。这样看起来使用准确率作为评价模型的标准是合适的。另外,把没有收入大于$50,000的人识别成年收入大于$50,000对于CharityML来说是有害的,因为他想要找到的是有意愿捐款的用户。这样,我们期望的模型具有准确预测那些能够年收入大于$50,000的能力比模型去查全这些被调查者更重要。我们能够使用F-beta score作为评价指标,这样能够同时考虑查准率和查全率。

4.建模

4.1基准模型

通过查看收入超过和不超过 $50,000 的人数,我们能发现多数被调查者年收入没有超过 $50,000。如果我们简单地预测说“这个人的收入没有超过 $50,000”,我们就可以得到一个 准确率超过 50% 的预测。这样我们甚至不用看数据就能做到一个准确率超过 50%。这样一个预测被称作是天真的。通常对数据使用一个天真的预测器是十分重要的,这样能够帮助建立一个模型表现是否好的基准。

如果我们选择一个无论什么情况都预测被调查者年收入大于 $50,000 的模型,那么这个模型在验证集上的准确率,查准率,查全率和 F-score是多少。【一个典型的基准模型】

4.2模型的选择-依据:应用场景、模型的优劣势、是否适合本文的问题

你能够在 scikit-learn 中选择以下监督学习模型

  • 高斯朴素贝叶斯 (GaussianNB)
  • 决策树 (DecisionTree)
  • 集成方法 (Bagging, AdaBoost, Random Forest, Gradient Boosting)
  • K近邻 (K Nearest Neighbors)
  • 随机梯度下降分类器 (SGDC)
  • 支撑向量机 (SVM)
  • Logistic回归(LogisticRegression)

从上面的监督学习模型中选择三个适合我们这个问题的模型,并回答相应问题。

模型1

模型名称

回答:集成方法 (Bagging, AdaBoost, Random Forest, Gradient Boosting)

描述一个该模型在真实世界的一个应用场景。(你需要为此做点研究,并给出你的引用出处)

回答:https://zh.wikipedia.org/wiki/%E9%9B%86%E6%88%90%E5%AD%A6%E4%B9%A0#%E9%9B%86%E6%88%90%E5%AD%A6%E4%B9%A0%E5%BA%94%E7%94%A8

1.网络入侵检测

https://www.semanticscholar.org/paper/Application-of-Bagging%2C-Boosting-and-Stacking-to-Syarif-Zaluska/8ad6de11ea84b0d2eec8a42906550e414f9012fd

2.信用卡欺诈检测

https://www.sciencedirect.com/science/article/pii/S1877050915007103

这个模型的优势是什么?他什么情况下表现最好?

回答:通过集成一些弱分类器,形成一个强大的分类器。优点,不用刻意去构造复杂的特征。不容易过拟合。 (不是很清楚,)

这个模型的缺点是什么?什么条件下它表现很差?

回答: 速度慢; 需要的数据量大。 (不是很清楚,这个应该怎么找)

根据我们当前数据集的特点,为什么这个模型适合这个问题。

回答: 已知的数据中包含很多特征,这些特征容易构造简单的所分类器。

模型2

模型名称

回答:决策树(Decision Tree)

描述一个该模型在真实世界的一个应用场景。(你需要为此做点研究,并给出你的引用出处)

回答: 1.泰坦号生还因素的探索;(即,有哪些特征的人容易生还) 2.严重抑郁症的风险因素预测;(即,有哪些特征的人易容患有抑郁症)

https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2784764/

3.用于分类天文物体

https://ieeexplore.ieee.org/document/6714666

这个模型的优势是什么?他什么情况下表现最好?

回答: 简单易懂和解释; 白盒模型; 不需要预处理。

这个模型的缺点是什么?什么条件下它表现很差?

回答: 对数据比较敏感; 容易过拟合.

根据我们当前数据集的特点,为什么这个模型适合这个问题。

回答:我们当前的模型和泰坦生还的例子很像,都是已知很多特征,然后进行二分类。并且已知的特征之间的关联性不强。

模型3

模型名称

回答:支撑向量机 (SVM)

描述一个该模型在真实世界的一个应用场景。(你需要为此做点研究,并给出你的引用出处)

回答:https://zh.wikipedia.org/wiki/%E6%94%AF%E6%8C%81%E5%90%91%E9%87%8F%E6%9C%BA#%E5%BA%94%E7%94%A81.手写字体识别; 2.医学中分类蛋白质; https://data-flair.training/blogs/applications-of-svm/ 3.面部检测(人脸和非人脸) 4.癌症分类.

这个模型的优势是什么?他什么情况下表现最好?

回答: 可以借助核函数,分类复杂的数据; 需要的样本数据少; 模型稳定,不易受噪点的影响。

这个模型的缺点是什么?什么条件下它表现很差?

回答: 求解二次规划需要大量的存储空间。

根据我们当前数据集的特点,为什么这个模型适合这个问题。

回答: 本文的分类模型为非线性模型,SVM利用核函数可以很好的处理非线性,因此考虑可以尝试使用。|

4.3创建一个训练和预测的流水线;——不同训练集大小、验证准确率

为了正确评估你选择的每一个模型的性能,创建一个能够帮助你快速有效地使用不同大小的训练集并在验证集上做预测的训练和验证的流水线是十分重要的。 你在这里实现的功能将会在接下来的部分中被用到。

4.4选择最佳模型-依据:时间性能;模型的评价指标;

4.5模型调优

网格搜索、随机搜索

4.6模型评估

你的最优模型在测试数据上的准确率和 F-score 是多少?这些分数比没有优化的模型好还是差? 

5.分析特征的重要性(解释模型)

5.1直观分析

5.2根据数据的分布分析;绘制直方图分析

5.3根据最优模型的feature_imporemence_分析

5.4提取重要的特征,重新训练及优化模型,评估模型

5.5最终的选择——时间和准确性的权衡

如果我们只是用可用特征的一个子集的话模型表现会怎么样?通过使用更少的特征来训练,在评价指标的角度来看我们的期望是训练和预测的时间会更少。从上面的可视化来看,我们可以看到前五个最重要的特征贡献了数据中所有特征中超过一半的重要性。这提示我们可以尝试去减小特征空间,简化模型需要学习的信息。下面代码单元将使用你前面发现的优化模型,并只使用五个最重要的特征在相同的训练集上训练模型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值