iris流程图_如何搭建一个简单的机器学习流水线?
閱讀此分步教程,學(xué)會通過導(dǎo)入scikit-learn包來搭建一個簡單的機(jī)器學(xué)習(xí)流水線(pipeline)
一個機(jī)器學(xué)習(xí)模型中,有很多可移動的組件需要被組合在一起,模型才能被執(zhí)行并成功的得到結(jié)果。把機(jī)器學(xué)習(xí)過程的各個部分結(jié)合在一起的過程就被稱作一條 pipeline(管道,流水線)。
Pipeline是一個很籠統(tǒng)廣義的概念,但對于數(shù)據(jù)科學(xué)家來說卻尤為重要。在軟件工程領(lǐng)域,人們通過建立pipeline來開發(fā)軟件,并且從源代碼到軟件發(fā)布都遵循該流程。
同樣的,在機(jī)器學(xué)習(xí)中,構(gòu)建pipeline,使數(shù)據(jù)沿pipeline“流動”,從原始格式,最終得到有用的信息。這使我們能夠建立多種機(jī)器學(xué)習(xí)方法并行的pipeline系統(tǒng),從而來比較各種方法的性能。
Pipeline的每一步輸入的數(shù)據(jù),都是經(jīng)過前一步處理過的,也就是某一數(shù)據(jù)處理單元的輸出,是下一步的輸入。
數(shù)據(jù)在pipeline中流動,就像水在水管中流動。精通pipeline思想,能讓我們有效的創(chuàng)建一個無差錯的機(jī)器學(xué)習(xí)模型,另外,pipeline也是自動化機(jī)器學(xué)習(xí)系統(tǒng)中非常重要的組成部分。
一條簡單的pipeline
我們首先導(dǎo)入一個名為 Iris 的數(shù)據(jù)集,該數(shù)據(jù)集可以在 scikit-learn 的簡單數(shù)據(jù)集庫中找到(http://scikit-learn.org/stable/auto_examples/datasets/plot_iris_dataset.html)。
該數(shù)據(jù)集包含 4 個特征和 150 條數(shù)據(jù)。我們會用以下幾步來構(gòu)建pipeline,并使用Iris數(shù)據(jù)集, 來訓(xùn)練我們的模型。對于該數(shù)據(jù)集,我們考慮的問題是:用四個特征來預(yù)測一個給定的 Iris 數(shù)據(jù)的種類,如圖一所示的流程圖。
在該pipeline中,我們使用 MinMaxScaler 方法對輸入數(shù)據(jù)進(jìn)行預(yù)處理,用 logistic 回歸方法來預(yù)測 Iris 的種類。然后,根據(jù)準(zhǔn)確性來評估模型:
1.第一步是從 scikit-learn 中導(dǎo)入所需的包,這些包提供很多函數(shù)來幫助我們完成該任務(wù)。
我們必須從 sklearn.pipline 中添加 pipline 方法,該方法會提供一些建立機(jī)器學(xué)習(xí)pipeline的一些必要方法:
from sklearn.datasets import load_iris
from sklearn.preprocessing import MinMaxScaler
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
2.接下來導(dǎo)入 Iris 數(shù)據(jù)集,并將其分為訓(xùn)練和測試集兩部分。
在本次示例中,我們用原數(shù)據(jù)集的80%來訓(xùn)練模型,保留20%的數(shù)據(jù)來測試模型的準(zhǔn)確率。我們能用 shape 函數(shù)來查看數(shù)據(jù)集的維度信息:
# Load and split the data
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data,iris.target, test_size = .2, )
X_train.shape
3.結(jié)果顯示訓(xùn)練集有4列和120行,符合 Iris 數(shù)據(jù)集 80% 的比例,結(jié)果如下:
4.接下來,我們輸出該數(shù)據(jù)集:
print(X_train)以下是譯者運(yùn)行代碼得到的結(jié)果:
[[5.1 3.8 1.5 0.3]
[7.7 3. 6.1 2.3]
[6.7 3.1 5.6 2.4]
[5.9 3. 4.2 1.5]
[6.3 2.5 4.9 1.5]
[6.3 3.4 5.6 2.4]
[6.8 3.2 5.9 2.3]
[4.8 3. 1.4 0.3]
[6.7 3. 5. 1.7]
......
5.下一步是創(chuàng)建一個 pipeline 對象,該對象的格式是 (key , value) 對。Key 包含每一步的名字,用字符串表示;value 是函數(shù)名或者實(shí)際的方法名稱。下面的代碼片段中,我們將 MinMaxScaler() 方法命名為 minmax,LogisticRegression() 方法命名為 lr:pipe_lr = Pipeline([('minmax', MinMaxScaler()), ('lr'LogisticRegression())])
6.然后,我們將 pipeline 對象 pipe_lr 在訓(xùn)練集上進(jìn)行擬合:
pipe_lr.fit(X_train, y_train)
7.執(zhí)行完上述代碼后,你會得到下面的輸出,該輸出展示了擬合后的模型的最終結(jié)構(gòu):
8.最后一步是用評價函數(shù)在測試集上對模型進(jìn)行評分:
score = pipe_lr.score(X_test, y_test)
print('Logistic Regression pipeline test accuracy: %.3f' % score)
如下圖所示,模型的準(zhǔn)確率是 0.867,也即 86.7%。
(譯注:該準(zhǔn)確率和數(shù)據(jù)集的劃分有關(guān)系,每次運(yùn)行,數(shù)據(jù)集的隨機(jī)劃分不同,準(zhǔn)確率也不同)
在該示例中,我們創(chuàng)建了一個包含 minmax 標(biāo)準(zhǔn)化和 Logistic 回歸兩步的pipeline。當(dāng)我們在 pipe_lr 上進(jìn)行擬合時,MinMaxScaler 對輸入數(shù)據(jù)執(zhí)行了 fit 和 transform 方法,然后數(shù)據(jù)流向預(yù)測函數(shù), logistic回歸函數(shù)。pipeline中的這些中間步驟被稱為 transformers,而最后一步被稱作 estimator。
關(guān)注集智AI學(xué)園公眾號
獲取更多更有趣的AI教程吧!
搜索微信公眾號:swarmAI
集智AI學(xué)園QQ群:426390994
學(xué)園網(wǎng)站:http://campus.swarma.org
總結(jié)
以上是生活随笔為你收集整理的iris流程图_如何搭建一个简单的机器学习流水线?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: word中光标选择一列文字_Word中文
- 下一篇: python的垃圾处理机制_Python