文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

机器学习的工作原理-代码示例

2024-12-11 21:28

关注

 

 

[注意:请使用我们的完全交互式笔记本在此处自行构建模型。 无需任何编码经验。]

如果您像我,则需要玩一些东西然后"自己动手"才能真正理解它。 在这里,我们将举例说明机器学习的真正原理。

您将建立自己的机器学习模型,以预测乘客在泰坦尼克号上幸存的可能性。 该模型仅通过查看数据即可自行学习模式。

了解进行机器学习的步骤

遵循以下步骤:

要自己构建机器学习模型,请打开配套笔记本。 您将无需任何设置即可运行真实的机器学习代码-它可以正常工作。

了解机器学习工具

关于机器学习工具,有很多选择。 在本指南中,我们使用一些最受欢迎和功能最强大的机器学习库,即:

这些都是很好的工具,因为它们既适用于初学者,也适用于大型公司(如摩根大通)。

探索我们的数据集

我们将使用著名的"泰坦尼克号"数据集-稍有病态但引人入胜的数据集,其中包含泰坦尼克号上乘客的详细信息。 我们为每位乘客提供了大量数据,包括:

我们的数据采用行和列的标准形式,其中每一行代表一位乘客,每一列代表该乘客的属性。 这是一个示例:

 

  1. import pandas as pd 
  2. from DRLearn import DRLearn 
  3.  
  4. titanic_dataset = pd.read_csv("titanic.csv", index_col=0) 
  5. titanic_dataset.head() 

 

 

 

> A few of the passengers that are in the titanic dataset. Source: Author

泰坦尼克号数据集中的一些乘客

可视化我们的数据集

机器学习模型很聪明,但是只能与我们提供给他们的数据一样聪明。 因此,重要的第一步是深入了解我们的数据集。

在分析数据时,一个很好的起点是检验假设。 持有头等舱机票的人更有可能生存,所以让我们看看数据是否支持这一点。

您可以在配套笔记本中查看并运行代码以产生这种可视化效果。

 

  1. DRLearn.plot_passenger_class(titanic_dataset) 

 

 

 

> 3rd class passengers had the worst survival rate, and 1st class passengers the best. Source: Autho

三等舱乘客的生存率最差,一等舱乘客的生存率最高。

头等舱中超过60%的人幸存,而三等舱中只有不到30%的人幸存。

您可能还听说过"妇女和儿童优先"一词。 让我们看一下性别与生存率之间的相互作用。

 

  1. DRLearn.plot_passenger_gender(titanic_dataset) 

 

 

 

> Women were much more likely to survive than men. Source: Author

女人比男人更有可能生存。

同样,我们看到我们的假设是正确的。 超过70%的女性得以幸存,而只有大约20%的男性得以幸存。

就像这样,我们为数据集创建了两个基本的可视化。 我们可以在这里做更多的事情(对于生产机器学习项目,我们当然可以这样做)。 例如,多变量分析将显示当我们一次查看多个变量时会发生什么。

准备数据

在将数据输入到机器学习算法以训练模型之前,我们需要使其对我们的算法更有意义。 我们可以通过忽略某些列并重新格式化其他列来做到这一点。

忽略无用的列

我们已经知道,旅客的机票号码与他们的生存机会之间没有任何关联,因此我们可以显式忽略该列。 我们先删除它,然后再将数据输入模型。

重新格式化我们的数据

一些功能很有用,但不是原始形式。 例如,标签" male"(男性)和" female"(女性)对人类有意义,但对喜欢数字的机器没有意义。 因此,我们可以将这些标记分别编码为" 0"和" 1"。

selected_features, target = DRLearn.extract_features(titanic_dataset)selected_features.sample(5)

一旦准备好数据集,该格式将对机器更友好。 我们在下面提供了一个示例:我们消除了许多无用的列,而剩下的所有列都使用数字。

 

 

> After preparing the dataset it's simpler and now ready for machine learning. Source: Author

准备完数据集后,它变得更简单了,现在可以进行机器学习了。

将数据集一分为二

现在我们需要训练我们的模型,然后对其进行测试。 就像给小学生提供测试题作为家庭作业的示例,然后给出考试条件下看不见的问题一样,我们将在一些数据上训练机器学习算法,然后查看其在其余数据上的表现如何。

 

 

> We split our dataset: One part for training the model, and one part for testing it. Source: Author

我们拆分了数据集:一部分用于训练模型,另一部分用于测试模型。

 

  1. X_train, X_test, y_train, y_test = DRLearn.split_dataset(selected_features, target, split=0.2) 

让我们训练模型!

现在开始有趣的部分! 我们会将训练数据输入模型中,并要求其查找模式。 在这一步中,我们为模型提供数据和所需的答案(无论乘客是否幸存)。

该模型从该数据中学习模式。

 

 

> Our machine learning model is trained on the Training set. Source: Author

我们的机器学习模型在训练集中进行训练。

 

  1. model = DRLearn.train_model(X_train, y_train) 

测试我们的模型

现在,我们可以通过仅在数据集另一半中提供乘客的详细信息来测试模型,而无需给出答案。 该算法不知道这些乘客是否幸免于难,但是它将尝试根据从训练中学到的知识进行猜测。

 

 

> Testing how well our machine learning model works by asking it to predict the results on the test

通过要求我们的机器学习模型预测测试数据的结果来测试其性能如何。

 

  1. DRLearn.evaluate_model(model, X_test, y_test) 

分析我们的模型

为了更好地了解我们的模型如何工作,我们可以:

第一个可以帮助我们更好地了解我们的数据,第二个可以帮助我们了解是否值得尝试获取更大的数据集。

了解我们的模型发现的重要内容

机器学习知道并非所有数据都同样有趣。 通过对特定细节进行加权,可以做出更好的预测。 下面的权重表明,性别是迄今为止预测生存率的最重要因素。

 

  1. DRLearn.explain_model(model, X_train) 

 

 

> Our model relies mostly on gender, a bit on whether the passenger was in 3rd class or not and on t

我们的模型主要取决于性别,有点取决于乘客是否属于三等舱以及其家庭人数。

我们还可以查看算法在预测特定乘客的生存时注意哪些数据方面。 下面我们看到一个算法认为很可能幸存的乘客。 它特别注意以下事实:

由于该乘客也不属于头等舱,因此略微降低了生存的机会,因此最终生存预测为93%。

 

  1. model_interpretation = DRLearn.interpret_model(model, X_test, y_test) 
  2. passenger_number = 3 
  3. DRLearn.analyze_passenger_prediction(model_interpretation, X_test, passenger_number) 

 

 

 

> How the model made a prediction for one particular passenger. She had a high survival rate because

该模型如何为一名特定乘客做出预测。 她的成年率很高,因为她是女性而不是三等班。

了解数据量如何影响我们的模型

让我们对模型进行多次训练,看看随着数据量的增加它可以改善多少。 在这里,我们同时绘制了训练得分和测试得分。 后者更有趣,因为它告诉我们模型在看不见的数据上的表现如何。

训练得分可以被认为是"公开考试":该模型已经看到了答案,因此看起来比"测试得分"要高,但是该模型更容易对在测试过程中看到的数据表现良好 训练阶段。

 

  1. DRLearn.visualise_training_progress(model, X_train, y_train, X_test, y_test) 

 

 

 

> More data makes our model better (test score). But after ~500 data points the improvement is minim

更多数据使我们的模型更好(测试分数)。 但是,在大约500个数据点之后,改进很小。

在这里,我们看到模型拥有的数据越多,其性能就越好。 在开始时这会更加明显,然后添加更多数据只会带来很小的改进。

机器学习模型不必是"黑匣子"算法。 模型分析可帮助我们了解它们如何工作以及如何改进它们。

结论

就是这样-您已经建立了自己的机器学习模型。 现在,您将能够:

机器学习的复杂部分涉及构建和扩展定制解决方案的所有细节。 这正是我们的专长。因此,如果您需要后续步骤的帮助,请告诉我们。

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯