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

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

时间:2023-03-21 16:34:48 科技观察

训练模型以预测谁将生存。[注意:请使用我们的完全交互式笔记本在这里自己构建模型。无需编码经验。]如果你像我一样,你需要玩一些东西然后“自己动手”才能真正理解它。在这里,我们将通过一个例子来说明机器学习的真正原理。您将构建自己的机器学习模型来预测乘客在泰坦尼克号上幸存的可能性。该模型仅通过查看数据就可以自行学习模式。了解进行机器学习的步骤遵循以下步骤:加载数据并进行视觉探索;为机器学习算法准备数据;训练模型——让算法从数据中学习;评估模型-查看它如何处理前所未见的数据;分析模型-查看需要多少数据才能正常运行。要自己构建机器学习模型,请打开配套笔记本。您将能够在没有任何设置的情况下运行真实的机器学习代码-它可以正常工作。了解机器学习工具当谈到机器学习工具时,有很多选择。在本指南中,我们使用了一些最流行和最强大的机器学习库,即:Python:一种以易读性着称的高级编程语言,它是世界上最流行的机器学习语言。Pandas:一个Python库,为该语言带来类似电子表格的功能。Seaborn:用于绘制图表和其他图形的库。Scikit-learn:一个用于Python的机器学习库,它提供用于预测数据分析的简单工具。DRLearn:我们自己的为此数据集构建的DataRevenueLearn模块。这些都是很棒的工具,因为它们既适合初学者,也适合大公司(如摩根大通)。探索我们的数据集我们将使用著名的“泰坦尼克号”数据集——一个略显病态但引人入胜的数据集,其中包含泰坦尼克号上乘客的详细信息。我们为每位乘客提供大量数据,包括:姓名、性别、年龄、机票等级。我们的数据采用行和列的标准形式,其中每行代表一名乘客,每列代表该乘客的属性。这是一个示例:importpandasaspfromDRLearnimportDRLearnitanic_dataset=pd.read_csv("titanic.csv",index_col=0)titanic_dataset.head()>泰坦尼克号数据集中的一些乘客。资料来源:作者可视化我们的数据集机器学习模型很聪明,但只有我们提供给它们的数据才聪明。因此,重要的第一步是深入了解我们的数据集。分析数据时,一个好的起点是检验假设。持有头等舱机票的人更有可能活下来,让我们看看数据是否支持这一点。您可以查看并运行代码以在配套笔记本中生成此可视化效果。DRLearn.plot_passenger_class(titanic_dataset)>三等舱乘客的存活率最差,一等舱乘客的存活率最高。资料来源:Autho三等舱乘客存活率最差,头等舱乘客存活率最高。超过60%的头等舱幸存者,而三等舱的幸存率不到30%。您可能也听说过“妇女儿童优先”这句话。让我们看看性与生存之间的相互作用。DRLearn.plot_passenger_gender(titanic_dataset)>女性比男性更有可能存活下来。资料来源:作者女性比男性更有可能存活下来。再一次,我们看到我们的假设是正确的。超过70%的女性存活下来,而男性的存活率约为20%。就这样,我们为数据集创建了两个基本的可视化效果。我们可以在这里做更多(对于生产机器学习项目,我们当然可以)。例如,多变量分析将显示当我们同时查看多个变量时会发生什么。准备数据在将数据输入机器学习算法以训练模型之前,我们需要使其对我们的算法有意义。我们可以通过忽略某些列并重新格式化其他列来做到这一点。忽略无用的列我们已经知道乘客的票号与其生存机会之间没有相关性,因此我们可以明确地忽略该列。我们在将数据输入模型之前将其删除。一些函数对于重新格式化我们的数据很有用,但不是原始形式。例如,标签“male”(男性)和“female”(女性)对人来说有意义,但对喜欢数字的机器来说就没有意义。因此,我们可以将这些标记分别编码为“0”和“1”。selected_features,target=DRLearn.extract_features(titanic_dataset)selected_features.sample(5)准备好数据集后,格式将更加机器友好。我们在下面提供了一个示例:我们消除了许多无用的列,并为所有剩余的列使用了数字。>准备好数据集后,它就更简单了,现在可以进行机器学习了。来源:作者在准备好数据集后,它变得更简单了,现在可以进行机器学习了。将数据集一分为二现在我们需要训练我们的模型然后测试它。就像给小学生做作业的试题示例,然后在测试条件下给他们看不到的问题,我们会在一些数据上训练一个机器学习算法,然后看看它在其余数据上的表现如何。>我们拆分数据集:一部分用于训练模型,一部分用于测试模型。来源:作者我们拆分了数据集:一部分用于训练模型,一部分用于测试模型。X_train,X_test,y_train,y_test=DRLearn.split_dataset(selected_features,target,split=0.2)让我们来训练模型吧!现在是有趣的部分!我们会将训练数据输入模型并要求它寻找模式。在这一步中,我们为模型提供数据和所需的答案(无论乘客是否幸存)。该模型从这些数据中学习模式。>我们的机器学习模型是在训练集上训练的。资料来源:作者我们的机器学习模型是在训练集上训练的。model=DRLearn.train_model(X_train,y_train)测试我们的模型现在我们可以通过仅提供数据集另一半中乘客的详细信息来测试模型,而不给出答案。该算法不知道这些乘客是否幸存,但它会尝试根据从训练中学到的知识进行猜测。>通过要求我们的机器学习模型预测测试数据的结果来测试它的性能,从而测试我们的机器学习模型的工作情况。DRLearn.evaluate_model(model,X_test,y_test)分析我们的模型为了更好地理解我们的模型是如何工作的,我们可以:查看它最依赖哪些特征来进行预测;如果我们使用更少的数据,看看它有多准确性会如何改变。第一个可以帮助我们更好地理解我们的数据,第二个可以帮助我们看看是否值得尝试获得更大的数据集。了解我们的模型发现什么很重要机器学习知道并非所有数据都同样有趣。通过对特定细节进行加权,可以做出更好的预测。下面的权重表明,性别是迄今为止预测生存的最重要因素。DRLearn.explain_model(model,X_train)>我们的模型主要依赖于性别,有点依赖于乘客是否在三等舱和t我们的模型主要依赖于性别,有点依赖于乘客是否在三等舱以及家庭规模。我们还可以看到算法在预测特定乘客的生存时关注数据的哪些方面。下面我们看到算法认为可能幸存的乘客。特别要注意的是:乘客不是三等舱;乘客是女性。由于这名乘客也不是头等舱,生还几率略有降低,所以最终生还预测为93%。model_interpretation=DRLearn.interpret_model(model,X_test,y_test)passenger_number=3DRLearn.analyze_passenger_prediction(model_interpretation,X_test,passenger_number)>模型如何对一位特定乘客进行预测。由于Passengers做出预测,她对特定模型的存活率很高。她的成年率很高,因为她是女性,不是三等。为了了解数据量如何影响我们的模型,让我们多次训练模型,看看它随着数据量的增加而改进了多少。在这里,我们绘制了训练和测试分数。后者更有趣,因为它告诉我们模型在未见数据上的表现如何。训练分数可以被认为是“公开测试”:模型已经看到答案,因此看起来高于“测试分数”,但模型更有可能在训练期间看到的数据上表现良好阶段。DRLearn.visualise_training_progress(model,X_train,y_train,X_test,y_test)>更多数据使我们的模型更好(测试分数)。但是在大约500个数据点之后,改进是最小的更多数据使我们的模型更好(测试分数)。然而,在大约500个数据点之后,改进很小。在这里我们看到模型拥有的数据越多,它的性能就越好。一开始这会更明显,然后添加更多数据只会带来很小的改进。机器学习模型不一定是“黑匣子”算法。模型分析有助于我们了解它们的工作原理以及如何改进它们。结论是这样的——你已经建立了你的机器学习模型。现在,您将能够:了解数据科学团队的日常工作;与您的数据科学或机器学习团队更好地沟通;了解机器学习最能解决哪些问题;意识到机器学习毕竟不是那么令人生畏。机器学习的复杂部分涉及构建和扩展自定义解决方案的所有细节。这正是我们所做的。因此,如果您需要后续步骤的帮助,请告诉我。