当前位置: 首页 > 科技观察

数据分析与机器学习的泰坦尼克号案例-小测试

时间:2023-03-17 01:44:31 科技观察

我是学院讲师唐宇迪。值此学院“4.20IT充电节”(4月19-20日)之际,与大家分享机器学习实际案例的心得体会。正文来了~~~数据分析太火了,机器学习太难懂了!随着人工智能的浪潮,机器学习越来越流行。数据分析和机器学习岗位供不应求,但入职门槛也相当高。是机器学习太难学还是我们没有挑到一把得心应手的武器?今天我们的任务是尝试用Python开启一段数据分析和机器学习建模的旅程,带大家用最简单的方式迈出机器学习的第一步!机器学习:数据分析很容易理解,就是挖掘出我们需要的有价值的信息,那么机器学习又是什么呢?刚接触这个领域的同学可能有点迷茫。这个词好像挺高级的。让我用简单的方式解释一下。机器学习就是我们要让机器(我们的电脑)从历史数据中学习一些信息。然后把数据分布的规则应用到新的数据上,这样当新的数据来的时候,我们可以做一系列的工作,比如我根据历史数据向银行借一个什么样的人,然后一个新的同学来借钱,银行会给出明确的价值,借给他多少钱!机器学习的应用已经涉及到我们生活的每一个角落。随着人工智能行业的发展,相信机器学习的力量会让我们的生活环境更上一层楼!故事背景:今天我们要讲的故事就是家喻户晓的泰坦尼克号,那么我们是不是要重温一下杰克和罗斯的经典动作呢?这些只是我们故事的开始,我们要做一件很有趣的事情,预测泰坦尼克号的哪些成员可以获救。选择武器:任务已经明确下达,接下来的目标就是选择几款合适的武器进行预测工作。我们的主线是用Python,因为Python已经成为数据分析和机器学习领域的老大哥!先介绍一下我们的武器谱吧!Numpy——科学计算库,主要用于矩阵运算,什么?你不知道矩阵会用在什么地方,所以这样想,我们的数据是由行(样本)和列(特征)组成的。那么数据本身就不是矩阵。Pandas-数据分析处理库很多小伙伴都在说用python处理数据很容易,哪里有那么容易呢?其实有了pandas,我们一行代码就可以解决非常复杂的操作!Matplotlib-可视化库,无论是分析还是建模,光有好记性是不够的,还需要将结果和过程可视化。Scikit-Learn-MachineLearningLibrary一个非常实用的机器学习算法库,里面基本上包含了所有你认为你会用到的机器学习算法。但远不止于此,还有很多预处理和评估模块等你来挖掘!数据介绍:这些武器都拿在手上,我们赶紧动手吧,先来看看我们的数据长什么样子吧!那么接下来,我们就要用这些武器来对付问题了!Pandas是最早出现的,我们用它来进行数据处理和分析非常方便。首先,它读取.csv文件并显示其前5行数据。下面简单介绍一下数据中每一列的含义。PassengerId:一个乘客的身份证号码,这个对我们好像用处不大。救不救跟这个ID没有关系,暂时先别用!Survived:这个很重要,就是我们的标签(LABEL)标明这个人是不是被救了。Pclass:乘客的舱位等级,是贵族还是平民?有3个机舱级别。Name:乘客的名字,老外的名字真长~性别:只有两种~Age:SibSp:和这个船员一起登机的兄弟姐妹人数Parch:老人和小孩的人数Ticket:ShipTicket~好像不需要这个码Fare:船票的价格,贵族票还是蛮贵的Cabin:缺失值太多,直接传过去吧Embarked:只有3个地方可以在登船码头观察可以发现,对于Age这一列,只有714个值,而其他列有891个值。这是什么意思?大不了,还有缺失值,怎么办?有很多方法可以做到这一点。,可以填充均值、众数和中位数。在这里,我们使用中位数来填充缺失值。这不是一个孤立的现象。对于一份真实的数据来说,缺失值是一个非常普遍的现象!再看数据,数据中很多列的属性值都是字符型的。这对我们有什么影响?我们人类可以识别这些男性和女性,但计算机不能。它只识别数值,所以我们需要将字符值转换成数值类型。核武器就在现场。使用scikit-learn可以轻松构建机器学习模型。这里我们使用逻辑回归(经典二元分类)来完成这个案例。首先介绍一下什么是逻辑回归!假设现在有两个特征,薪水和年龄。我们需要根据这两个指标来预测银行会贷给这个人多少钱。然后,我们可以创建这样一个方程!也就是说,我们要找到最合适的一组参数,让最终的预测值和真实值越接近越好!但是我们现在要做的是一个分类任务!也就是要得到一个类别值是否被拯救,那么我们还需要更进一步。这个功能很神奇。让我们来看看。首先,sigmoid函数的参数的取值范围是从负无穷大到正无穷大,取值范围是0到1。也就是说,任何一个值都会在(0,1)区间,相当于一个概率值,那么我们就可以设置这样一个阈值。例如,如果一个概率值>0.5,我们就认为它是1的类别(获救);如果概率值<0.5,我们就认为它是0的类别(可惜~)。不调整任何参数,准确率接近80%!特征选择:现在我们要思考一下,我们最终预测结果的准确率与什么有关?一方面是我们选择,另一方面,还有我们输入的特征数据,所以我们要开动脑筋想出哪些特征更适合做预测。是时候集思广益了。这次我们还统计了一个成员的家庭成员数量,即兄弟姐妹+老人小孩,还有名字的长度(玄学)和先生、小姐、师傅等称谓。添加这些的目的是为了丰富我们的功能。要建立一个好的模型,特征的选择是至关重要的。在初始阶段,我们需要提供尽可能多的有价值的特性。一个好的模型的建立还没有结束。对于一个分析任务,我们还需要知道这些特征是如何影响***的结果的,比如性别对结果影响大还是年龄大?这次我们也可以通过对比预测结果和真实值来分析不同特征的重要性!下图可以看出不同特征的重要性差异还是比较大的,我们可以进行取舍和进一步分析!使用Matplotlib绘制最简单的条形图,只需指定条形图的位置和柱形图的高度即可。要观想它,我们必须长期对付它!这样,我们就完成了一个非常简单的预测任务。首先通过数据预处理让我们的数据更纯净,然后将这些特征值转化为机器可以识别的值,然后让机器通过这批历史数据学习哪些参数最能拟合我们的数据,最后输出完成这个简单任务的预测结果!高校4.20IT充电节(19-20日2天,100节视频课程免费抢,视频课程会员更有40折,非会员30折,套餐优惠高达20折,即时微作业优惠2000元)活动链接:http://edu.51cto.com/activity/lists/id-47.html?wenzhang相关直播教程:《一站式搞定Python数据分析与机器学习特训营直播实站》