python人工智能入门纳米学位_项目心得-Udacity机器学习纳米学位项目(一)

作为零基础非科班的学生,我从去年保研结束敲定下家后,决心系统地学习一下开始接触机器学习的知识,因此报名了uda家的网课。uda家的课最大的特点是设计精良和贵……值得一提的是某些公司的面试题就是uda家的项目原题……

设计精良主要有以下几点:

1。为了提高用户交互体验,刻意设计成了4,5分钟一个短片知识点或者一个小quiz,提醒用户这是在上课。

2。独特的part代码审阅+review机制

现在主要来谈谈每个章节的故事,首先我们P0拿到的是泰坦尼克生存预测项目,这在kaggle上是一个入门项目,在uda里主要使用python来完成。在这个项目中要求我们利用乘客数据预测乘客的生存率,数据格式如下:Survived:是否存活(0代表否,1代表是)

Pclass:社会阶级(1代表上层阶级,2代表中层阶级,3代表底层阶级)

Name:船上乘客的名字

Sex:船上乘客的性别

Age:船上乘客的年龄(可能存在 NaN)

SibSp:乘客在船上的兄弟姐妹和配偶的数量

Parch:乘客在船上的父母以及小孩的数量

Ticket:乘客船票的编号

Fare:乘客为船票支付的费用

Cabin:乘客所在船舱的编号(可能存在 NaN)

Embarked:乘客上船的港口(C 代表从 Cherbourg 登船,Q 代表从 Queenstown 登船,S 代表从 Southampton 登船)

当作为一个数据小白时,我们第一时间应该先观察数据,比如使用

# 加载数据集

in_file = 'titanic_data.csv'

full_data = pd.read_csv(in_file)

# 显示数据列表中的前几项乘客数据

display(full_data.head())

可以得到:

通过观察数据特征我们可以知道,这个表格记录的乘客信息是比较全面的,和我们常见的机票一样,同时也可以使用最简单的预测练练手:

最简单的预测

如果我们要预测泰坦尼克号上的乘客是否存活,但是我们又对他们一无所知,那么最好的预测就是船上的人无一幸免。

def predictions_0(data):

""" 不考虑任何特征,预测所有人都无法生还 """

predictions = []

for _, passenger in data.iterrows():

# 预测 'passenger' 的生还率

predictions.append(0)

# 返回预测结果

return pd.Series(predictions)

# 进行预测

predictions = predictions_0(data)

结果只有:61.62%,不是很高。然后项目又要求根据某一个特征进行预测,比如考虑性别的情况,先要求绘制了一个关于性别和最终遇难与否的图:

我们就可以发现男性大多数都遇难了,女性里大多数都存活了,因此我们假如做一个推断,男性全部都遇难,女性全部存活,那么正确率将可以达到:78.68%

然后项目又要求考虑两个特征进行预测:我们在这里加入年龄考虑,先绘制不同年龄的男性生存遇难情况:

survival_stats(data, outcomes, 'Age', ["Sex == 'male'"])

我们就可以发现小于10岁的男孩基本都存活了,因此我们可以额外增加一条逻辑,如果男性小于10岁,肯定是存活的。此时正确率已经攀升到79.35%.

最后项目要求自己额外选择特征,适用条件逻辑语句,让正确率达到80%以上:

你自己的预测模型

添加年龄(Age)特征与性别(Sex)的结合比单独使用性别(Sex)也提高了不少准确度。现在该你来做预测了:找到一系列的特征和条件来对数据进行划分,使得预测结果提高到80%以上。这可能需要多个特性和多个层次的条件语句才会成功。你可以在不同的条件下多次使用相同的特征。Pclass,Sex,Age,SibSp 和 Parch 是建议尝试使用的特征。

使用 survival_stats 函数来观测泰坦尼克号上乘客存活的数据统计。

最后在mentor的建议下,我达到了81.82%,思路与前文一样,大致来讲是这样的:

1.观察每个特征与存活的关系,发现年龄、性别,客舱等级,有无兄弟姐妹,有无父母子女的区分性较好 2.发现两两特征中,年龄,性别与有无兄弟姐妹和有无父母子女关联性较大,比较准确率后,选择有无兄弟姐妹 3.对每个客舱等级分析后,针对不同客舱等级比较讨论 4.选择不同的年龄区段和性别,找出特征值明显的区域

其中还挑了大于10岁的头等舱的男性作为可视化展示:

survival_stats(data, outcomes, 'Age',["Sex == 'male'","Pclass == 1","Age > 10"])

通篇来讲,这个项目给“0coding”基础的人来说,是很好的练习项目,项目本身从简单到复杂,主要锻炼了制作一些基本数据图和基本语句的能力,尤其是几个可视化图画得非常好。后续我来继续讲讲后面的项目实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值