您在資料科學領域中邁出的第一步。 泰坦尼克號

簡短的介紹詞

我相信,如果我們能得到一步一步的指示來告訴我們該做什麼以及如何做,我們可以做更多的事情。我自己也記得我一生中無法開始某件事的時刻,因為很難理解從哪裡開始。也許,曾經在網路上看到「數據科學」這個詞,並認為你離這個詞還很遠,而做這件事的人就在另一個世界的某個地方。不,他們就在這裡。也許,多虧了這個領域的人們,一篇文章出現在你的動態上。有很多課程可以幫助您習慣這門手藝,但在這裡我將幫助您踏出第一步。

那麼,你準備好了嗎?我馬上告訴你,你需要了解 Python 3,因為我將在這裡使用它。我還建議你提前在 Jupyter Notebook 上安裝它或看看如何使用 google colab。

第一步

您在資料科學領域中邁出的第一步。 泰坦尼克號

Kaggle 是您在這方面的重要助手。原則上,你可以不使用它,但我將在另一篇文章中討論這一點。這是一個舉辦數據科學競賽的平台。在每次這樣的比賽中,在早期階段你都會獲得超乎現實的解決各種問題的經驗、開發經驗和團隊合作經驗,這在我們這個時代非常重要。

我們將從那裡開始我們的任務。它的名字叫做「泰坦尼克號」。條件是這樣的:預測每個人是否能夠生存。一般來說,參與DS的人的任務是收集資料、處理資料、訓練模型、預測等等。在kaggle中,我們可以跳過資料收集階段——它們呈現在平台上。我們需要下載它們然後就可以開始了!

您可以按如下方式執行此操作:

資料選項卡包含包含資料的文件

您在資料科學領域中邁出的第一步。 泰坦尼克號

您在資料科學領域中邁出的第一步。 泰坦尼克號

我們下載了數據,準備了 Jupyter 筆記本並...

第二步

我們現在如何載入這些數據?

首先,讓我們導入必要的函式庫:

import pandas as pd
import numpy as np

Pandas 將允許我們下載 .csv 檔案以進行進一步處理。

需要 Numpy 將我們的數據表表示為帶有數字的矩陣。
前進。讓我們將檔案 train.csv 上傳給我們:

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

我們將透過 dataset 變數引用我們的 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 庫是一個很酷的函式庫,它允許我們完成資料科學的完整工作。它包含大量有趣的機器學習模型,也允許我們進行資料準備。

正如我們所描述的,OneHotEncoder 將允許我們在該表示中編碼一個人的性別。將創建 2 個班級:男、女。如果此人是男性,則在「男性」欄中寫入 1,在「女性」欄中寫入 0。

OneHotEncoder() 之後有 [1] - 這意味著我們要對第 1 列(從零開始計數)進行編碼。

極好的。讓我們更進一步吧!

通常,某些數據會留空(即 NaN - 不是數字)。例如,有關於一個人的信息:他的名字、性別。但沒有關於他年齡的資訊。在這種情況下,我們將應用以下方法:我們將找到所有列的算術平均值,如果列中缺少某些數據,那麼我們將用算術平均值填入空白。

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

現在讓我們考慮一下當資料非常大時會發生的情況。有些數據在[0:1]區間內,而有些數據可能會超過數百、數千。為了消除這種分散並使計算機的計算更加準確,我們將掃描資料並對其進行縮放。讓所有數字不超過三。為此,我們將使用 StandardScaler 函數。

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%的正確答案,而且對數據科學也有一定的推動作用。好奇的可以隨時私訊給我提問。謝謝大家!

來源: www.habr.com

添加評論