您迈向数据科学的第一步。铁达尼号

小介绍


我相信,如果提供逐步的说明,告诉他们如何做,我们可以做更多的事情。我本人回想起一生中因难以理解从哪里开始而无法开展业务的时刻。也许,曾几何时,您在Internet上看到“数据科学”一词,并决定您与那个地方相去甚远,而在另一个世界的某个地方进行此操作的人们。所以不,他们就在这里。而且,也许要感谢来自这个领域的人们,您的供稿中出现了一篇文章。有很多课程可以帮助您熟悉此技巧,在这里我将帮助您迈出第一步。

好吧,你准备好了吗?我必须立即说,您将必须了解Python 3,因为我将在这里使用它。另外,我建议您在Jupyter Notebook上预安装或查看如何使用google colab。

步骤1


图片

Kaggle是您在这方面的重要助手。原则上,您可以没有它,但是我将在另一篇文章中讨论。这是主持数据科学竞赛的平台。在早期的每个此类竞赛中,您将获得解决各种问题的不切实际的经验,开发经验和团队合作经验,这在我们这个时代很重要。

我们将从那里开始我们的任务。它被称为:“泰坦尼克号”。条件是这样的:预测每个人都会生存。一般而言,参与DS的人员的任务是数据的收集,处理,模型训练,预测等。在kaggle,我们被允许跳过数据收集阶段-它们在平台上显示。我们需要下载它们,您可以开始使用!

您可以按照以下步骤进行操作:

数据选项卡中的文件包含数据

图片

图片

下载的数据,准备的Jupyter笔记本和...

第二步


我们现在如何下载这些数据?

首先,我们导入必要的库:

import pandas as pd
import numpy as np

熊猫将允许我们下载.csv文件以进行进一步处理。

需要用数字表示我们的数据表为矩阵。
继续。取得train.csv文件并将其上传给我们:

dataset = pd.read_csv('train.csv')

我们将通过数据集变量引用样本train.csv数据。让我们看看那里有什么:

dataset.head()

图片

head()函数使我们可以查看数据框的前几行。

幸存的列只是我们的结果,在此数据框中已知。关于问题的问题,我们需要预测test.csv数据的Survived列。该数据存储了有关泰坦尼克号其他乘客的信息,我们决策者对于这些乘客并不了解结果。

因此,我们将表分为相关数据和独立数据。这里的一切都很简单。相依数据是与结果无关的数据。独立数据是影响结果的数据。

例如,我们有这样一个数据集:

“ Vova教过计算机科学-不。
Vova接受了计算机科学2。

计算机科学中的评估取决于问题的答案:Vova是否教授计算机科学?清楚吗?继续前进,我们离目标越来越近!

独立数据的传统变量是X。从属变量y。

我们执行以下操作:

X = dataset.iloc[ : , 2 : ]
y = dataset.iloc[ : , 1 : 2 ]

这是什么?使用iloc函数[:,2:]告诉python:我想在变量X中查看从第二列开始的数据(包括计数,并且从零开始)。在第二行中,我们说我们想在第一列的数据中看到。

[a:b,c:d]是我们在括号中使用的内容的构造。如果您未指定任何变量,则它们将保持默认值。也就是说,我们可以指定[:,:d],然后我们将从数据d到其他的所有列(除那些列之外)进入数据帧。变量a和b定义了字符串,但是我们都需要它们,因此我们保留此默认值。

让我们看看发生什么了:

X.head()

图片

y.head()

图片

为了简化这一小节课,我们将删除需要特殊“护理”或根本不影响生存的专栏。它们包含类型为str的数据。

count = ['Name', 'Ticket', 'Cabin', 'Embarked']
X.drop(count, inplace=True, axis=1)

超!我们进入下一步。

第三步


在这里,我们需要对数据进行编码,以便机器更好地理解此数据如何影响结果。但是,我们不会编码所有内容,而只会编码剩下的str类型的数据。栏“性别”。我们要如何编码?想象一下关于矢量的人类性别数据:10-男性,01-女性。

首先,我们将表格转换为NumPy矩阵:

X = np.array(X)
y = np.array(y)

现在我们来看:

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder

ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [1])],
                       remainder='passthrough')
X = np.array(ct.fit_transform(X))

sklearn库是一个非常酷的库,它使我们能够完成Data Science的全部工作。它包含大量有趣的机器学习模型,还允许我们进行数据准备。

如我们所描述的,OneHotEncoder将使我们能够编码该表示形式中的人的性别。将创建2个班级:男性,女性。如果此人是男人,则将在“男性”列中分别写入1,然后将其写入0



超。我们走得更远!

通常,会发生某些数据保持为空(即NaN-不是数字)的情况。例如,有关于一个人的信息:他的名字,性别。但是没有关于他年龄的数据。在这种情况下,我们将使用此方法:找到所有列的算术平均值,如果列中缺少某些数据,则用算术平均值填充空白。

from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer.fit(X)
X = imputer.transform(X)

现在让我们考虑一下,当数据非常分散时会发生这种情况。某些数据的时间间隔为[0:1],有些数据可能持续数十万次。为了排除这种价差,并且计算机在计算中更加准确,我们将缩放数据并进行缩放。让所有数字不超过3。为此,请使用功能StandartScaler。

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X[:, 2:] = sc.fit_transform(X[:, 2:])

现在我们的数据如下所示:

图片

类。我们已经接近我们的目标!

第四步


训练我们的第一个模型!在sklearn库中,我们可以找到很多有趣的东西。我将梯度提升分类器模型应用于此任务。我们使用分类器,因为我们的任务是分类任务。有必要将预测归因于1(存活)或0(没有存活)。

from sklearn.ensemble import GradientBoostingClassifier
gbc = GradientBoostingClassifier(learning_rate=0.5, max_depth=5, n_estimators=150)
gbc.fit(X, y)

fit函数告诉python:让模型查找X和y之间的依赖关系。

不到一秒钟,模型就准备好了。

图片

如何申请?我们现在将看到!

第五步 结论


现在,我们需要用测试数据加载表,我们需要对其进行预测。使用此表,我们将执行与X相同的所有操作。

X_test = pd.read_csv('test.csv', index_col=0)

count = ['Name', 'Ticket', 'Cabin', 'Embarked']
X_test.drop(count, inplace=True, axis=1)

X_test = np.array(X_test)

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [1])],
                       remainder='passthrough')
X_test = np.array(ct.fit_transform(X_test))

from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer.fit(X_test)
X_test = imputer.transform(X_test)

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_test[:, 2:] = sc.fit_transform(X_test[:, 2:])

我们将已经应用我们的模型!

gbc_predict = gbc.predict(X_test)

所有。我们做了一个预测。现在,需要将其记录在csv中并发送到站点。

np.savetxt('my_gbc_predict.csv', gbc_predict, delimiter=",", header = 'Survived')

做完了 得到了一个包含每个乘客的预测的文件。仍然需要将这些决策上传到站点并获得预测的估计。这种原始的解决方案不仅可以为公众提供74%的正确答案,而且可以为数据科学提供一些动力。最好奇的人可以随时在私人信息中给我写信并提出问题。谢谢大家!

All Articles