机器学习工程师纳米学位

监督式学习

项目:为 CharityML 寻找捐赠者

欢迎来到机器学习工程师纳米学位的第二个项目!在此 notebook 中,我们已经为你提供了一些模板代码,你需要实现其他必要功能,以便成功地完成此项目。以实现开头的部分表示你必须为下面的代码块提供额外的功能。我们将在每部分提供说明,并在代码块中用 'TODO' 语句标记具体的实现要求。请务必仔细阅读说明!

除了实现代码之外,你必须回答一些问题,这些问题与项目和你的实现有关。每个部分需要回答的问题都在开头以问题 X 标记。请仔细阅读每个问题并在下面以答案:开头的文本框中提供详细的答案。我们将根据你的每个问题答案和所提供的实现代码评估你提交的项目。

注意: 在提交此 notebook 时,请注明你所使用的 PYTHON 版本。你可以使用键盘快捷键 Shift + Enter 执行代码和 Markdown 单元格。此外,可以通过双击进入编辑模式,编辑 Markdown 单元格。

开始

在此项目中,你将自己选择实现几个监督式算法,并使用从 1994 年美国人口普查数据中摘取的数据准确地对个人收入进行建模。然后,你将根据初步结果选择最佳候选算法,并进一步优化该算法,以便构建最佳模型。你的目标是构建一个准确预测公民收入是否超过 50,000 美元的模型。公益机构可能会面临此类任务,这些机构需要依赖捐赠。了解公民的收入可以帮助公益机构更好地判断应该请求多少捐赠款,或者是否有必要请求捐赠。虽然直接通过公开的数据判断个人的一般收入范围比较难,但是我们可以通过其他公开特征推断该值,稍后我们就有机会见到这种推断过程。

该项目的数据集来自 UCI 机器学习资源库。该数据集是由 Ron Kohavi 和 Barry Becker 捐赠的,他们之前在文章_“Scaling Up the Accuracy of Naive-Bayes Classifiers: A Decision-Tree Hybrid”_中发表了该数据集。你可以在此处找到 Ron Kohavi 的文章。我们在此项目中研究的数据与原始数据集稍有出入,例如删除了 'fnlwgt' 特征和缺少条目或者格式糟糕的记录。


探索数据

运行以下代码单元格以加载必要的 Python 库并加载人口普查数据。注意,该数据集中的最后一列 'income' 将是目标标签(个人年收入是否超过 50,000 美元)。人口普查数据库中的所有其他列都是关于每个人的特征。


In [ ]:
# Import libraries necessary for this project
import numpy as np
import pandas as pd
from time import time
from IPython.display import display # Allows the use of display() for DataFrames

# Import supplementary visualization code visuals.py
import visuals as vs

# Pretty display for notebooks
%matplotlib inline

# Load the Census dataset
data = pd.read_csv("census.csv")

# Success - Display the first record
display(data.head(n=1))