日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【机器学习】用PyCaret创建整个机器学习管道

發(fā)布時間:2025/3/12 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【机器学习】用PyCaret创建整个机器学习管道 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

作者 | Daniel Morales?

編譯 | VK?

來源 | Towards Data Science

本教程涵蓋了整個ML過程,從數(shù)據(jù)獲取、預(yù)處理、模型訓(xùn)練、超參數(shù)擬合、預(yù)測和存儲模型以備將來使用。

我們將在不到10個命令中完成所有這些步驟,這些命令是自然構(gòu)造的,并且非常直觀易記,例如

create_model(),? tune_model(),? compare_models() plot_model() evaluate_model() predict_model()

讓我們看看全局

在大多數(shù)庫中,不使用PyCaret重新創(chuàng)建整個實驗需要100多行代碼。PyCaret還允許你執(zhí)行更高級的操作,例如高級預(yù)處理、集成、廣義疊加和其他技術(shù),這些技術(shù)允許你完全定制ML管道,這是任何數(shù)據(jù)科學(xué)家必須具備的。

PyCaret是一個開源的、底層的、使用Python的ML庫,它允許你在幾分鐘內(nèi)從準(zhǔn)備數(shù)據(jù)到部署模型。允許科學(xué)家和數(shù)據(jù)分析員從頭到尾高效地執(zhí)行迭代數(shù)據(jù)科學(xué)實驗,并允許他們更快地得出結(jié)論,因為在編程上花費的時間要少得多。這個庫非常類似于Caret de R,但是用python實現(xiàn)的

在數(shù)據(jù)科學(xué)項目中,理解數(shù)據(jù)通常需要很長時間(EDA和特征工程)。那么,如果我們能把花在項目建模部分的時間減少一半呢?

讓我們看看怎么做

首先我們需要先決條件

  • Python 3.6或更高版本

  • PyCaret 2.0或更高版本

在這里你可以找到庫的文件和其他:https://pycaret.org/

首先,請運行以下命令:!pip3 install pycaret

對于google colab用戶:如果你在google colab中運行此筆記本,請在筆記本頂部運行以下代碼以顯示交互式圖像

from?pycaret.utils?import?enable_colab enable_colab()

Pycaret模塊

Pycaret根據(jù)我們要執(zhí)行的任務(wù)進行劃分,并且有不同的模塊,這些模塊代表每種類型的學(xué)習(xí)(有監(jiān)督的或無監(jiān)督的)。在本教程中,我們將使用二分類算法研究監(jiān)督學(xué)習(xí)模塊。

分類模塊

PyCaret分類模塊(pycaret.classification)是一個有監(jiān)督的機器學(xué)習(xí)模塊,用于根據(jù)各種技術(shù)和算法將元素分類為二類。分類問題的一些常見用途包括預(yù)測客戶違約(是或否)、客戶放棄(客戶將離開或留下)、遇到的疾病(陽性或陰性)等等。

PyCaret分類模塊可用于二或多類分類問題。它有18個以上的算法和14個分析模型性能的曲線圖。無論是超參數(shù)調(diào)整、加密還是諸如堆疊之類的高級技術(shù),PyCaret的分類模塊都有。

在本教程中,我們將使用一個UCI數(shù)據(jù)集,稱為默認(rèn)信用卡客戶數(shù)據(jù)集。此資料集包含2005年4月至2005年9月臺灣信用卡客戶的拖欠付款、人口統(tǒng)計資料、信用資料、付款記錄及帳單結(jié)算單的資料。有24000個樣本和25個特征。

數(shù)據(jù)集可以在這里找到。或者在這里你可以找到一個直接的下載鏈接:https://drive.google.com/file/u/2/d/1bVUAk2Y4bdqKx-2NAPk0b4mIOv078zl6/view?usp=sharing

所以,將數(shù)據(jù)集下載到你的環(huán)境中,然后我們將像這樣加載它

[2]:

import?pandas?as?pd

[3]:

df?=?pd.read_csv('datasets/default?of?credit?card?clients.csv')

[4]

df.head()

[4]的輸出

1-獲取數(shù)據(jù)

我們還有另一種加載方法。實際上,這將是我們在本教程中使用的默認(rèn)方式。它直接來自PyCaret數(shù)據(jù)集,是我們管道的第一個方法

from?pycaret.datasets?import?get_data dataset?=?get_data('credit')#?檢查數(shù)據(jù)的形狀 dataset.shape

為了演示predict_model函數(shù)對未查看的數(shù)據(jù)的作用,保留了原始數(shù)據(jù)集中1200條記錄的樣本,以便在預(yù)測中使用。

這不應(yīng)與訓(xùn)練/測試分割相混淆,因為這個特殊的分割是為了模擬真實的場景。另一種思考方式是,在進行ML實驗時,這1200條記錄是不可用的。

[7]:

## sample從對象的一個軸返回一個隨機樣本。那將是22800個樣本,而不是24000個 data?=?dataset.sample(frac=0.95,?random_state=786)

[8]:

data #?我們從原始數(shù)據(jù)集中刪除這些隨機數(shù)據(jù) data_unseen?=?dataset.drop(data.index)

[10]:

#?未查看的數(shù)據(jù)集##?我們重置了兩個數(shù)據(jù)集的索引 data.reset_index(inplace=True,?drop=True) data_unseen.reset_index(inplace=True,?drop=True) print('Data?for?Modeling:?'?+?str(data.shape)) print('Unseen?Data?For?Predictions:?'?+?str(data_unseen.shape))Data?for?Modeling:?(22800,?24) Unseen?Data?For?Predictions:?(1200,?24)

拆分?jǐn)?shù)據(jù)

我們劃分?jǐn)?shù)據(jù)集的方式很重要,因為有些數(shù)據(jù)在建模過程中不會使用,我們將在最后通過模擬真實數(shù)據(jù)來驗證我們的結(jié)果。我們將用于建模的數(shù)據(jù)進行細(xì)分,以便評估訓(xùn)練和測試這兩個場景。因此,我們做了以下工作

驗證數(shù)據(jù)集

  • 是用于提供最終模型的無偏評估的數(shù)據(jù)樣本。

  • 驗證數(shù)據(jù)集提供了用于評估模型的黃金標(biāo)準(zhǔn)。

  • 它只在模型完全訓(xùn)練后使用(使用訓(xùn)練集和測試集)。

  • 驗證集通常用于評估比賽的模型(例如,在許多Kaggle比賽時,測試集與訓(xùn)練測試集一起初始發(fā)布,驗證集僅在比賽即將結(jié)束時發(fā)布,驗證集模型的結(jié)果決定了勝利者)。

  • 很多時候測試集被用作驗證集,但這不是一個好的實踐。

  • 驗證集通常都很好地修復(fù)了。

  • 它包含了仔細(xì)采樣的數(shù)據(jù),這些數(shù)據(jù)涵蓋了模型在現(xiàn)實世界中使用時將面臨的各種類。

訓(xùn)練數(shù)據(jù)集

  • 訓(xùn)練數(shù)據(jù)集:用于訓(xùn)練模型的數(shù)據(jù)樣本。

  • 我們用來訓(xùn)練模型的數(shù)據(jù)集

  • 模型看這些數(shù)據(jù)并學(xué)習(xí)。

測試數(shù)據(jù)集

  • 測試數(shù)據(jù)集:在調(diào)整模型超參數(shù)時,用于提供與訓(xùn)練數(shù)據(jù)集匹配的數(shù)據(jù)樣本。

  • 隨著測試數(shù)據(jù)集中的信息被納入模型中,評估變得更加有偏見。

  • 測試集用于評估給定的模型,但這是用于頻繁評估的。

  • 作為ML工程師,我們使用這些數(shù)據(jù)來微調(diào)模型的超參數(shù)。

  • 因此,模型偶爾會看到這些數(shù)據(jù),但從不從中“學(xué)習(xí)”。

  • 我們使用測試集的結(jié)果,更新更高級別的超參數(shù)

  • 所以測試集會影響模型,但只是間接的。

  • 測試集也稱為開發(fā)集。這是有意義的,因為這個數(shù)據(jù)集在模型的“開發(fā)”階段有幫助。

術(shù)語混淆

  • 有一種混淆測試和驗證集名稱的趨勢。

  • 根據(jù)教程、來源、書籍、視頻或老師/導(dǎo)師的不同,術(shù)語會有所變化,重要的是要保持概念不變。

  • 在我們的例子中,我們已經(jīng)在開始時分離了驗證集

2-設(shè)置PyCaret環(huán)境

現(xiàn)在讓我們設(shè)置Pycaret環(huán)境。函數(shù)的作用是:初始化pycaret中的環(huán)境,并創(chuàng)建轉(zhuǎn)換管道,為建模和部署準(zhǔn)備數(shù)據(jù)。

在pycaret中執(zhí)行任何其他函數(shù)之前必須調(diào)用setup()。它需要兩個必需的參數(shù):pandas dataframe和目標(biāo)列的名稱。這部分配置大部分是自動完成的,但有些參數(shù)可以手動設(shè)置。例如:

  • 默認(rèn)的分割比是70:30(正如我們在上面的段落中看到的),但是可以用“train_size”來更改。

  • K折疊交叉驗證默認(rèn)設(shè)置為10

  • “session_id”是我們經(jīng)典的“random_state”

[12]:

##?設(shè)置環(huán)境 from?pycaret.classification?import?*

注意:運行以下命令后,必須按enter鍵完成此過程。我們會解釋他們是怎么做到的。安裝過程可能需要一些時間才能完成。

[13]:

model_setup?=?setup(data=data,?target='default',?session_id=123)

運行setup()時,PyCaret的推理算法將根據(jù)某些屬性自動推斷出所有特征的數(shù)據(jù)類型。但情況并非總是如此。

為了考慮到這一點,PyCaret在執(zhí)行setup()之后會顯示一個包含特征及其推斷數(shù)據(jù)類型的表。如果正確識別了所有數(shù)據(jù)類型,則可以按enter繼續(xù),或按exit結(jié)束實驗。我們按enter鍵,輸出的結(jié)果應(yīng)該和上面的一樣。

確保數(shù)據(jù)類型是正確的在PyCaret中是至關(guān)重要的,因為它自動執(zhí)行一些預(yù)處理任務(wù),這些任務(wù)對于任何ML實驗都是必不可少的。對于每種類型的數(shù)據(jù),執(zhí)行任務(wù)的方式不同,所以這意味著正確配置非常重要。

我們可以使用setup()中的numeric_features和category_features參數(shù)覆蓋從PyCaret推斷的數(shù)據(jù)類型。一旦設(shè)置成功執(zhí)行,將打印包含幾個重要信息的信息網(wǎng)格。大多數(shù)信息都與運行setup()時生成的預(yù)處理管道有關(guān)

這些特征中的大多數(shù)都超出了本教程的范圍,但是,在此階段需要記住的一些重要的包括

  • session_id:一個偽隨機數(shù),作為種子分布在所有函數(shù)中,以便以后的重現(xiàn)性。

  • 目標(biāo)類型:二或多類。自動檢測并顯示目標(biāo)類型。

  • Label encoded:當(dāng)目標(biāo)變量的類型為string(即“Yes”或“No”)而不是1或0時,它會自動在1和0處對標(biāo)簽進行編碼,并將映射(0:No,1:Yes)顯示為引用

  • 原始數(shù)據(jù):顯示數(shù)據(jù)集的原始形式。在這個實驗中是(22800,24)

  • 缺少值:當(dāng)原始數(shù)據(jù)中缺少值時,將顯示為True

  • 數(shù)值特征:推斷為數(shù)值特征的數(shù)量。

  • 類別特征:推斷為類別特征的數(shù)量

  • 轉(zhuǎn)換后的訓(xùn)練組:注意,原來的(22800,24)形式被轉(zhuǎn)換為(15959,91),由于分類編碼,特征的數(shù)量從24增加到91

  • 轉(zhuǎn)換測試集:測試集中有6841個樣本。此拆分基于默認(rèn)值70/30,可使用配置中的“訓(xùn)練大小”參數(shù)進行更改。

注意一些必須進行建模的任務(wù)是如何自動處理的,例如缺失值的插補(在這種情況下,訓(xùn)練數(shù)據(jù)中沒有缺失的值,但我們?nèi)匀恍枰獮榭床灰姷臄?shù)據(jù)提供插補器)、分類編碼等。

大部分setup()參數(shù)是可選的,用于自定義預(yù)處理管道。

3-比較模型

為了理解PyCaret是如何比較模型和管道中的下一步的,有必要理解N-fold交叉驗證的概念。

N-Fold 交叉驗證

計算有多少數(shù)據(jù)應(yīng)該劃分到測試集中是一個微妙的問題。

如果你的訓(xùn)練集太小,你的算法可能沒有足夠的數(shù)據(jù)來有效地學(xué)習(xí)。另一方面,如果你的測試集太小,那么你的準(zhǔn)確度、精確度、召回率和F1分?jǐn)?shù)可能會有很大的變化。

你可能很幸運,也可能很不幸!一般來說,將70%的數(shù)據(jù)放在訓(xùn)練集中,30%的數(shù)據(jù)放在測試集中是一個很好的起點。有時你的數(shù)據(jù)集太小了,70/30會產(chǎn)生很大的差異。

一種解決方法是執(zhí)行N折交叉驗證。這里的中心思想是,我們將整個過程進行N次,然后平均精度。例如,在10折交叉驗證中,我們將測試集的前10%的數(shù)據(jù),并計算準(zhǔn)確度、精確度、召回率和F1分?jǐn)?shù)。

然后,我們將使交叉驗證建立第二個10%的數(shù)據(jù),我們將再次計算這些統(tǒng)計數(shù)據(jù)。我們可以做這個過程10次,每次測試集都會有一段不同的數(shù)據(jù)。然后我們平均所有的準(zhǔn)確度。

注意:驗證集(這里是黃色)是我們案例中的測試集

了解模型的準(zhǔn)確度是非常寶貴的,因為可以開始調(diào)整模型的參數(shù)以提高模型的性能。

例如,在K-最近鄰算法中,你可以看到當(dāng)你增加或減少K時,精確度會發(fā)生什么變化。一旦你對模型的性能感到滿意,就應(yīng)該輸入驗證集了(在我們的例子中是看不見的)。

它應(yīng)該是你真正感興趣的真實世界數(shù)據(jù)的替代品。它的工作原理與測試集非常相似,只是在構(gòu)建或優(yōu)化模型時從未接觸過這些數(shù)據(jù)。通過找到精度指標(biāo),你可以很好地了解算法在現(xiàn)實世界中的性能。

比較所有模型

在PyCaret setup()完成后,建議將所有模型進行比較以評估性能(除非你確切知道需要什么類型的模型,通常情況下并非如此),該函數(shù)訓(xùn)練模型庫中的所有模型,并使用分層交叉驗證對其進行評分,以評估度量。

輸出將打印一個分?jǐn)?shù)網(wǎng)格,該網(wǎng)格顯示精度、AUC、召回率、精度、F1、Kappa和MCC的平均值(默認(rèn)為10)以及訓(xùn)練時間。開始吧!

[14]:

best_model?=?compare_models()

compare_models()函數(shù)的作用是:一次比較多個模型。這是使用PyCaret的最大優(yōu)點之一。在一行中,你可以看到許多模型之間的比較表。兩個簡單的單詞(甚至不是一行代碼)已經(jīng)使用N倍交叉驗證訓(xùn)練和評估了超過15個模型。

以上打印的表格突出顯示了最高性能指標(biāo),僅供比較之用。默認(rèn)表使用“精度”(從最高到最低)排序,可以通過傳遞參數(shù)來更改。例如,compare_models(sort = 'Recall')將根據(jù)召回而不是準(zhǔn)確度對網(wǎng)格進行排序。

如果要將Fold參數(shù)從默認(rèn)值10更改為其他值,可以使用Fold參數(shù)。例如,compare_models(fold = 5)將在5倍交叉驗證中比較所有模型。減少折疊次數(shù)可以縮短訓(xùn)練時間。

默認(rèn)情況下,compare_models根據(jù)默認(rèn)的排序順序返回性能最好的模型,但是它可以使用N_select參數(shù)返回前N個模型的列表。此外,它還返回一些指標(biāo),如精確度、AUC和F1。另一個很酷的事情是庫如何自動突出顯示最佳結(jié)果。一旦選擇了模型,就可以創(chuàng)建模型,然后對其進行優(yōu)化。我們試試用其他方法:

[15]:

print(best_model)RidgeClassifier(alpha=1.0,?class_weight=None,?copy_X=True,?fit_intercept=True,max_iter=None,?normalize=False,?random_state=123,?solver='auto',tol=0.001)

4-創(chuàng)建模型

create_model是PyCaret中最細(xì)粒度的函數(shù),通常是PyCaret大多數(shù)功能的基礎(chǔ)。正如它的名字所示,這個函數(shù)使用交叉驗證(可以用參數(shù)fold設(shè)置)來訓(xùn)練和評估模型。輸出打印一個計分表,按Fold 顯示精度、AUC、召回率、F1、Kappa和MCC。

在本教程的其余部分中,我們將使用以下模型作為候選模型。這些選擇僅用于說明目的,并不一定意味著他們是最好的執(zhí)行者或這類數(shù)據(jù)的理想選擇

  • 決策樹分類器('dt')

  • K近鄰分類器('knn')

  • 隨機森林分類器('rf')

PyCaret模型庫中有18個分類器可用。要查看所有分類器的列表,請查看文檔或使用models()函數(shù)查看庫。

[16]:

models() dt?=?create_model('dt') #?訓(xùn)練的模型對象存儲在變量'dt'中。 print(dt)DecisionTreeClassifier(ccp_alpha=0.0,?class_weight=None,?criterion='gini',max_depth=None,?max_features=None,?max_leaf_nodes=None,min_impurity_decrease=0.0,?min_impurity_split=None,min_samples_leaf=1,?min_samples_split=2,min_weight_fraction_leaf=0.0,?presort='deprecated',random_state=123,?splitter='best')

[19]:

knn?=?create_model('knn') print(knn)KNeighborsClassifier(algorithm='auto',?leaf_size=30,?metric='minkowski',metric_params=None,?n_jobs=-1,?n_neighbors=5,?p=2,weights='uniform')

[21]:

rf?=?create_model('rf') print(rf)RandomForestClassifier(bootstrap=True,?ccp_alpha=0.0,?class_weight=None,criterion='gini',?max_depth=None,?max_features='auto',max_leaf_nodes=None,?max_samples=None,min_impurity_decrease=0.0,?min_impurity_split=None,min_samples_leaf=1,?min_samples_split=2,min_weight_fraction_leaf=0.0,?n_estimators=100,n_jobs=-1,?oob_score=False,?random_state=123,?verbose=0,warm_start=False)

請注意,所有模型的平均分?jǐn)?shù)與compare_models()上打印的分?jǐn)?shù)匹配。這是因為compare_models()分?jǐn)?shù)網(wǎng)格中打印的指標(biāo)是所有折的平均分?jǐn)?shù)。

你還可以在每個模型的每個print()中看到用于構(gòu)建它們的超參數(shù)。這是非常重要的,因為它是改進它們的基礎(chǔ)。你可以看到RandomForestClassifier的參數(shù)

max_depth=None max_features='auto' min_samples_leaf=1 min_samples_split=2 min_weight_fraction_leaf=0.0 n_estimators=100 n_jobs=-1

5-調(diào)整模型

使用create_model()函數(shù)創(chuàng)建模型時,默認(rèn)的超參數(shù)用于訓(xùn)練模型。要調(diào)整超參數(shù),請使用tune_model()函數(shù)。此函數(shù)使用預(yù)定義搜索空間中的隨機網(wǎng)格搜索自動調(diào)整模型的超參數(shù)。

輸出打印一個分?jǐn)?shù)網(wǎng)格,顯示準(zhǔn)確度、AUC、召回率、精密度、F1、Kappa和MCC,以獲得最佳模型。要使用自定義搜索網(wǎng)格,可以在tune_model函數(shù)中傳遞custom_grid參數(shù)

[23]:

tuned_rf?=?tune_model(rf)

如果我們將這個改進的RandomForestClassifier模型與之前的RandomForestClassifier模型的準(zhǔn)確度指標(biāo)進行比較,我們會發(fā)現(xiàn)一個差異,因為它的精確度從0.8199提高到了0.8203。

[24]:

#?優(yōu)化模型對象存儲在變量“tuned_dt”中。print(tuned_rf) RandomForestClassifier(bootstrap=False,?ccp_alpha=0.0,?class_weight={},criterion='entropy',?max_depth=5,?max_features=1.0,max_leaf_nodes=None,?max_samples=None,min_impurity_decrease=0.0002,?min_impurity_split=None,min_samples_leaf=5,?min_samples_split=10,min_weight_fraction_leaf=0.0,?n_estimators=150,n_jobs=-1,?oob_score=False,?random_state=123,?verbose=0,warm_start=False)

現(xiàn)在我們來比較一下超參數(shù)。我們以前是:

max_depth=None max_features='auto' min_samples_leaf=1 min_samples_split=2 min_weight_fraction_leaf=0.0 n_estimators=100 n_jobs=-1

而現(xiàn)在是:

max_depth=5 max_features=1.0 min_samples_leaf=5 min_samples_split=10 min_weight_fraction_leaf=0.0 n_estimators=150 n_jobs=-1

你可以自己用knn和dt做同樣的比較,探索超參數(shù)之間的差異。

默認(rèn)情況下,tune_model優(yōu)化精度,但可以使用optimize參數(shù)更改此值。例如:tune_model(dt,optimize='AUC')將查找決策樹分類器的超參數(shù),該分類器將導(dǎo)致最高的AUC而不是準(zhǔn)確性。在本例中,我們僅為簡單起見使用了Accuracy的默認(rèn)度量。

一般來說,當(dāng)數(shù)據(jù)集不平衡(像我們正在使用的信用數(shù)據(jù)集)時,精度不是一個很好的度量標(biāo)準(zhǔn)。選擇正確的度量來評估的方法超出了本教程的范圍。

在為生產(chǎn)選擇最佳模型時,度量并不是你應(yīng)該考慮的唯一標(biāo)準(zhǔn)。其他要考慮的因素包括訓(xùn)練時間、k-folds的標(biāo)準(zhǔn)差等。現(xiàn)在,讓我們繼續(xù)考慮隨機森林分類器tuned_rf,作為本教程其余部分的最佳模型

6-繪制模型

在完成模型(步驟8)之前,plot#model()函數(shù)可以通過AUC、混淆矩陣、決策邊界等不同方面來分析性能。該函數(shù)獲取一個經(jīng)過訓(xùn)練的模型對象,并根據(jù)訓(xùn)練/測試集返回一個圖形。

有15種不同的繪圖,請參閱plot_model()文檔以獲取可用繪圖的列表。

[25]:

#?AUC?圖plot_model(tuned_rf,?plot?=?'auc') ##?PR?曲線plot_model(tuned_rf,?plot?=?'pr') ##?特征重要性plot_model(tuned_rf,?plot='feature') ##?混淆矩陣plot_model(tuned_rf,?plot?=?'confusion_matrix')

7-評估模型

分析模型性能的另一種方法是使用evaluate_model()函數(shù),該函數(shù)顯示給定模型的所有可用圖形的用戶界面。在內(nèi)部它使用plot_model()函數(shù)。

[29]:

evaluate_model(tuned_rf)

8-最終確定模型

模型的建立是實驗的最后一步。PyCaret中的正常機器學(xué)習(xí)工作流從setup()開始,然后使用compare_models()對所有模型進行比較,并預(yù)先選擇一些候選模型(基于感興趣的度量),以執(zhí)行各種建模技術(shù),如超參數(shù)擬合、裝配、堆疊等。

此工作流最終將引導(dǎo)你找到用于對新的和未查看的數(shù)據(jù)進行預(yù)測的最佳模型。

finalize_model()函數(shù)使模型擬合完整的數(shù)據(jù)集,包括測試樣本(在本例中為30%)。此函數(shù)的目的是在將模型部署到生產(chǎn)環(huán)境之前,對模型進行完整的數(shù)據(jù)集訓(xùn)練。我們可以在predict_model()之后或之前執(zhí)行此方法。我們要在這之后執(zhí)行。

最后一句警告。使用finalize_model()完成模型后,整個數(shù)據(jù)集(包括測試集)將用于訓(xùn)練。因此,如果在使用finalize_model()之后使用模型對測試集進行預(yù)測,則打印的信息網(wǎng)格將產(chǎn)生誤導(dǎo),因為它試圖對用于建模的相同數(shù)據(jù)進行預(yù)測。

為了證明這一點,我們將在predict_model()中使用final_rf來比較信息網(wǎng)格與前面的網(wǎng)格。

[30]:

final_rf?=?finalize_model(tuned_rf)

[31]:

#?部署的最終隨機森林模型參數(shù) print(final_rf)RandomForestClassifier(bootstrap=False,?ccp_alpha=0.0,?class_weight={},criterion='entropy',?max_depth=5,?max_features=1.0,max_leaf_nodes=None,?max_samples=None,min_impurity_decrease=0.0002,?min_impurity_split=None,min_samples_leaf=5,?min_samples_split=10,min_weight_fraction_leaf=0.0,?n_estimators=150,n_jobs=-1,?oob_score=False,?random_state=123,?verbose=0,warm_start=False)

9-用模型預(yù)測

在最終確定模型之前,建議通過預(yù)測測試和查看評估指標(biāo)來執(zhí)行最終檢查。如果你查看信息表,你將看到30%(6841個樣本)的數(shù)據(jù)被分離為測試集樣本。

我們在上面看到的所有評估指標(biāo)都是基于訓(xùn)練集(70%)的交叉驗證結(jié)果。現(xiàn)在,使用存儲在tuned_rf變量中的最終訓(xùn)練模型,我們根據(jù)測試樣本進行預(yù)測,并評估指標(biāo),看它們是否與CV結(jié)果有實質(zhì)性差異

[32]:

predict_model(final_rf)

測試集的準(zhǔn)確度為0.8199,而tuned_rf的結(jié)果為0.8203。這并不是一個顯著的區(qū)別。如果測試集和訓(xùn)練集的結(jié)果之間存在較大差異,這通常表示過擬合,但也可能是由于其他幾個因素造成的,需要進一步調(diào)查。

在本例中,我們將繼續(xù)完成模型,并對不可見的數(shù)據(jù)進行預(yù)測(我們在開始時分離的5%的數(shù)據(jù),它們從未暴露在PyCaret中)。

提示:使用create_model()時,最好查看訓(xùn)練集結(jié)果的標(biāo)準(zhǔn)差。

predict_model()函數(shù)還用于預(yù)測未查看的數(shù)據(jù)集。唯一不同的是,這次我們將傳遞參數(shù)數(shù)據(jù)。data_unseen是在教程開始時創(chuàng)建的變量,包含5%(1200個示例)的原始數(shù)據(jù)集,這些數(shù)據(jù)集從未公開給PyCaret。

[33]:

unseen_predictions?=?predict_model(final_rf,?data=data_unseen) unseen_predictions.head()

請轉(zhuǎn)到上一個結(jié)果的最后一列,你將看到一個名為Score的新特征

Label是預(yù)測,score是預(yù)測的概率。請注意,預(yù)測結(jié)果與原始數(shù)據(jù)集連接,而所有轉(zhuǎn)換都在后臺自動執(zhí)行。

我們已經(jīng)完成了實驗,最終確定了tuned_rf模型,該模型現(xiàn)在存儲在final_rf變量中。

我們還使用了final_rf中存儲的模型來預(yù)測未知數(shù)據(jù)。這就結(jié)束了我們的實驗,但還有一個問題:當(dāng)你有更多的新數(shù)據(jù)要預(yù)測時會發(fā)生什么?你必須把整個實驗再看一遍嗎?

答案是否定的,PyCaret內(nèi)置的save_model()函數(shù)允許你保存模型以及所有轉(zhuǎn)換管道以供以后使用,并存儲在本地環(huán)境中的Pickle中

(提示:保存模型時最好使用文件名中的日期,這有利于版本控制)

讓我們看看下一步

10-保存/加載模型

保存模型

[35]:

save_model(final_rf,?'datasets/Final?RF?Model?19Nov2020')Transformation?Pipeline?and?Model?Succesfully?Saved

[35]:

(Pipeline(memory=None,steps=[('dtypes',DataTypes_Auto_infer(categorical_features=[],display_types=True,?features_todrop=[],id_columns=[],ml_usecase='classification',numerical_features=[],?target='default',time_features=[])),('imputer',Simple_Imputer(categorical_strategy='not_available',fill_value_categorical=None,fill_value_numerical=None,numeric_stra...RandomForestClassifier(bootstrap=False,?ccp_alpha=0.0,class_weight={},?criterion='entropy',max_depth=5,?max_features=1.0,max_leaf_nodes=None,?max_samples=None,min_impurity_decrease=0.0002,min_impurity_split=None,min_samples_leaf=5,min_samples_split=10,min_weight_fraction_leaf=0.0,n_estimators=150,?n_jobs=-1,oob_score=False,?random_state=123,verbose=0,?warm_start=False)]],verbose=False),'datasets/Final?RF?Model?19Nov2020.pkl')

加載模型

要在同一環(huán)境或其他環(huán)境中加載在將來某個日期保存的模型,我們將使用PyCaret的load_model()函數(shù),然后輕松地將保存的模型應(yīng)用到新的未查看的數(shù)據(jù)中以進行預(yù)測

[37]:

saved_final_rf?=?load_model('datasets/Final?RF?Model?19Nov2020')Transformation?Pipeline?and?Model?Successfully?Loaded

一旦模型加載到環(huán)境中,就可以使用相同的predict_model()函數(shù)來預(yù)測任何新數(shù)據(jù)。接下來,我們應(yīng)用加載模型來預(yù)測我們以前使用過的相同數(shù)據(jù)。

[38]:

new_prediction?=?predict_model(saved_final_rf,?data=data_unseen)

[39]:

new_prediction.head()

[39]:

from?pycaret.utils?import?check_metric check_metric(new_prediction.default,?new_prediction.Label,?'Accuracy')

[41]:

0.8167

利弊

與任何新庫一樣,仍有改進的余地。我們將列出在使用該庫時發(fā)現(xiàn)的一些利弊。

優(yōu)點:

  • 它使項目的建模部分更加容易。

  • 只需一行代碼就可以創(chuàng)建許多不同的分析。

  • 在擬合模型時,可以不用傳遞參數(shù)列表。PyCaret會自動為你執(zhí)行此操作。

  • 你有許多不同的選項來評估模型,同樣,只需要一行代碼

  • 因為它是在著名的ML庫之上構(gòu)建的,所以可以很容易地將其與傳統(tǒng)方法進行比較

缺點:

  • 這個庫是早期版本,所以它還不夠成熟,容易受到bug的影響

  • 作為所有的automl庫,它是一個黑匣子,所以你不能真正看到里面發(fā)生了什么。因此,我不推薦初學(xué)者使用。

  • 這可能會使學(xué)習(xí)過程有點膚淺。

結(jié)論

本教程涵蓋了整個ML過程,從數(shù)據(jù)攝取、預(yù)處理、模型訓(xùn)練、超參數(shù)擬合、預(yù)測和存儲模型以備以后使用。

我們只用了不到10個命令就完成了所有這些步驟,這些命令都是自然構(gòu)造的,并且非常直觀易記,例如create_model()、tune_model()、compare_models()。如果不使用PyCaret重新創(chuàng)建整個實驗,大多數(shù)庫需要100多行代碼。

該庫還允許你執(zhí)行更高級的操作,例如高級預(yù)處理、集成、廣義疊加和其他技術(shù),這些技術(shù)允許你完全定制ML管道,這是任何數(shù)據(jù)科學(xué)家必須具備的

往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機器學(xué)習(xí)在線手冊深度學(xué)習(xí)筆記專輯《統(tǒng)計學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載機器學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)專輯 獲取本站知識星球優(yōu)惠券,復(fù)制鏈接直接打開: https://t.zsxq.com/qFiUFMV 本站qq群704220115。加入微信群請掃碼:

總結(jié)

以上是生活随笔為你收集整理的【机器学习】用PyCaret创建整个机器学习管道的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久久久久草 | 黄色骚视频 | 91免费视频入口 | av网站在线观看免费 | 色骚网| av噜噜| 亚洲影音先锋 | 亚洲综合激情网 | 亚洲一区二区三区四区五区午夜 | 成人xxxx | 911成人网 | 成人欧美一区二区三区在线播放 | 欧美激情 国产精品 | 日本中文在线视频 | 亚洲人视频 | 中文字幕+乱码+中文乱码www | 草草影院最新网址 | av毛片在线播放 | 亚洲人一区二区三区 | 人妻熟人中文字幕一区二区 | 日韩欧美网 | 99热精品在线观看 | 加勒比hezyo黑人专区 | 国产免费黄色小视频 | 欧美福利视频一区 | 图片区亚洲色图 | 成人免费视频国产免费麻豆 | 久久久精品国产免费爽爽爽 | 欧美性猛交乱大交3 | 人体裸体bbb欣赏 | 国产一二三区免费视频 | 羞羞网站在线看 | 国产一区二区三区电影在线观看 | 色一情一乱一区二区三区 | 国产视频999 | 国产精品久久视频 | 在线成人一区二区 | 我们的2018在线观看免费高清 | 久久亚洲AV成人无码国产人妖 | 欧美一级片一区二区 | 亚洲精品a级| xxx日本黄色 | 亚洲狠狠爱 | 亚洲h视频在线观看 | 午夜影视体验区 | 女人喂男人奶水做爰视频 | 深爱激情丁香 | 国产精品污网站 | 热热热色| 亚欧洲精品视频 | 精品久久久久久久久久岛国gif | 特黄aaaaaaaaa毛片免 | 天天操女人 | 91在线综合 | 娇小tube性极品娇小 | 国产精品久久久久一区二区 | 欧美性在线视频 | 黄色成人av在线 | 香蕉视频网页版 | 日美女逼逼 | 色涩色| 欧美日韩一区二区三区四区五区六区 | 美女被男人插 | 色爽爽一区二区三区 | 日韩高清一区二区 | 性v天堂| www.欧美在线| 国产精品久久久久久久久久久久久久久久 | 午夜国产一级 | 欧美视频一区二区三区在线观看 | 国产喷水吹潮视频www | 免费看91视频 | av网址导航 | 国产午夜成人久久无码一区二区 | 欧美黄色免费观看 | av免费观看不卡 | 欧美黑人又粗又大又爽免费 | 国产在线欧美 | 欧美一区二区人人喊爽 | 四虎永久在线视频 | 日韩精品免费一区二区三区 | 免费黄色av网站 | 国产三级全黄 | 欧美福利在线观看 | 亚洲视频精选 | 午夜性视频 | 日本少妇激情 | 国产三级三级三级 | 亚洲精品水蜜桃 | 日韩精品在线观看一区 | 国产偷拍一区二区 | 亚洲欧洲综合在线 | 午夜精品福利一区二区三区蜜桃 | 福利一区在线观看 | 免费精品国产 | 亚洲AV无码国产精品播放在线 | 成年人网站免费 | 四季av日韩精品一区 | 色久视频 |