更簡易的機器學習-pycaret的安裝和環境初始化

1、安裝

pip install pycaret

在Googlecolab中還要運行:

from pycaret.utils import enable_colab 
enable_colab()

2、獲取數據

(1)利用pandas庫載入

import pandas as pd
data = pd.read_csv('c:/path_to_data/file.csv')

(2)使用自帶的數據

from pycaret.datasets import get_data
data = get_data('juice') 

數據集列表:

Dataset Data Types Default Task Target Variable # Instances # Attributes
anomaly Multivariate Anomaly Detection None 1000 10
france Multivariate Association Rule Mining InvoiceNo, Description 8557 8
germany Multivariate Association Rule Mining InvoiceNo, Description 9495 8
bank Multivariate Classification (Binary) deposit 45211 17
blood Multivariate Classification (Binary) Class 748 5
cancer Multivariate Classification (Binary) Class 683 10
credit Multivariate Classification (Binary) default 24000 24
diabetes Multivariate Classification (Binary) Class variable 768 9
electrical_grid Multivariate Classification (Binary) stabf 10000 14
employee Multivariate Classification (Binary) left 14999 10
heart Multivariate Classification (Binary) DEATH 200 16
heart_disease Multivariate Classification (Binary) Disease 270 14
hepatitis Multivariate Classification (Binary) Class 154 32
income Multivariate Classification (Binary) income >50K 32561 14
juice Multivariate Classification (Binary) Purchase 1070 15
nba Multivariate Classification (Binary) TARGET_5Yrs 1340 21
wine Multivariate Classification (Binary) type 6498 13
telescope Multivariate Classification (Binary) Class 19020 11
glass Multivariate Classification (Multiclass) Type 214 10
iris Multivariate Classification (Multiclass) species 150 5
poker Multivariate Classification (Multiclass) CLASS 100000 11
questions Multivariate Classification (Multiclass) Next_Question 499 4
satellite Multivariate Classification (Multiclass) Class 6435 37
asia_gdp Multivariate Clustering None 40 11
elections Multivariate Clustering None 3195 54
facebook Multivariate Clustering None 7050 12
ipl Multivariate Clustering None 153 25
jewellery Multivariate Clustering None 505 4
mice Multivariate Clustering None 1080 82
migration Multivariate Clustering None 233 12
perfume Multivariate Clustering None 20 29
pokemon Multivariate Clustering None 800 13
population Multivariate Clustering None 255 56
public_health Multivariate Clustering None 224 21
seeds Multivariate Clustering None 210 7
wholesale Multivariate Clustering None 440 8
tweets Text NLP tweet 8594 2
amazon Text NLP / Classification reviewText 20000 2
kiva Text NLP / Classification en 6818 7
spx Text NLP / Regression text 874 4
wikipedia Text NLP / Classification Text 500 3
automobile Multivariate Regression price 202 26
bike Multivariate Regression cnt 17379 15
boston Multivariate Regression medv 506 14
concrete Multivariate Regression strength 1030 9
diamond Multivariate Regression Price 6000 8
energy Multivariate Regression Heating Load / Cooling Load 768 10
forest Multivariate Regression area 517 13
gold Multivariate Regression Gold_T+22 2558 121
house Multivariate Regression SalePrice 1461 81
insurance Multivariate Regression charges 1338 7
parkinsons Multivariate Regression PPE 5875 22
traffic Multivariate Regression traffic_volume 48204 8

3、設置環境

(1)第一步:導入模組

pycaret提供以下6種模組,當你導入相應的模組之後,就將環境切換到了該環境下。

S.No Module How to Import
1 Classification from pycaret.classification import *
2 Regression from pycaret.regression import *
3 Clustering from pycaret.clustering import *
4 Anomaly Detection from pycaret.anomaly import *
5 Natural Language Processing from pycaret.nlp import *
6 Association Rule Mining from pycaret.arules import *

(2)第二步:初始化設置

對於PyCaret中的所有模組都是通用的,設置是開始任何機器學習實驗的第一步,也是唯一的必需步驟。 除默認情況下執行一些基本處理任務外,PyCaret還提供了廣泛的預處理功能,這些功能在結構上將普通的機器學習實驗提升為高級解決方案。 在本節中,我們僅介紹了設置功能的必要部分。 可以在此處找到所有預處理功能的詳細資訊。 下面列出的是初始化設置時PyCaret執行的基本默認任務:

數據類型推斷:在PyCaret中執行的任何實驗都始於確定所有特徵的正確數據類型。 設置函數執行有關數據的基本推斷,並執行一些下游任務,例如忽略ID和Date列,分類編碼,基於PyCaret內部演算法推斷的數據類型的缺失值插補。 執行設置後,將出現一個對話框(請參見以下示例),其中包含所有特徵及其推斷的數據類型的列表。 數據類型推斷通常是正確的,但是一旦出現對話框,用戶應查看列表的準確性。 如果正確推斷了所有數據類型,則可以按Enter鍵繼續,否則,請鍵入「 quit」以停止實驗。

如果您由於無法正確推斷一種或多種數據類型而選擇輸入「退出」,則可以在setup命令中覆蓋它們,方法是傳遞categorical_feature參數以強制分類類型,而numeric_feature參數則強制數字類型。 同樣,為了忽略某些功能以成為實驗的一部分,您可以在設置程式中傳遞ignore_features參數。

注意:如果您不希望PyCaret顯示確認數據類型的對話框,則可以在設置過程中以「 True」(靜默)方式傳遞為True,以執行無人看管的實驗。 我們不建議您這樣做,除非您完全確定推斷是正確的,或者您之前已經進行過實驗,或者正在使用numeric_feature和categorical_feature參數覆蓋數據類型。

數據清理和準備:設置功能會自動執行缺失值插補和分類編碼,因為它們對於任何機器學習實驗都是必不可少的。 默認情況下,平均值用於數字特徵的插補,而最頻繁使用的值或模式用於分類特徵。 您可以使用numeric_imputation和categorical_imputation參數來更改方法。 對於分類問題,如果目標不是數字類型,則安裝程式還將執行目標編碼。

數據取樣:如果樣本量大於25,000,PyCaret會根據不同的樣本量自動構建初步的線性模型,並提供可視化效果,以根據樣本量顯示模型的性能。 然後可以使用該圖來評估模型的性能是否隨樣本數量的增加而增加。 如果不是,您可以選擇較小的樣本量,以提高實驗的效率和性能。 請參見下面的示例,在該示例中,我們使用了pycaret存儲庫中的「銀行」數據集,其中包含45,211個樣本。

訓練測試拆分:設置功能還執行訓練測試拆分(針對分類問題進行了分層)。 默認的分割比例為70:30,但是您可以在設置程式中使用train_size參數進行更改。 僅在Train set上使用k倍交叉驗證,才能對PyCaret中已訓練好的機器學習模型和超參數優化進行評估。

將會話ID分配為種子:如果未傳遞session_id參數,則會話ID是默認生成的偽隨機數。 PyCaret將此id作為種子分發給所有函數,以隔離隨機效應。 這樣可以在以後在相同或不同的環境中實現可重現性。

以下是一些例子:

分類:

from pycaret.datasets import get_data
diabetes = get_data('diabetes')
# Importing module and initializing setup
from pycaret.classification import *
clf1 = setup(data = diabetes, target = 'Class variable')

回歸:

from pycaret.datasets import get_data
boston = get_data('boston')
# Importing module and initializing setup
from pycaret.regression import *
reg1 = setup(data = boston, target = 'medv')

聚類:

from pycaret.datasets import get_data
jewellery = get_data('jewellery')
# Importing module and initializing setup
from pycaret.clustering import * 
clu1 = setup(data = jewellery)

異常檢測:

from pycaret.datasets import get_data
anomalies = get_data('anomaly')
# Importing module and initializing setup
from pycaret.anomaly import *
ano1 = setup(data = anomalies)

自然語言處理:

from pycaret.datasets import get_data
kiva = get_data('kiva')
# Importing module and initializing setup
from pycaret.nlp import *
nlp1 = setup(data = kiva, target = 'en')

關聯規則挖掘:

from pycaret.datasets import get_data
france = get_data('france')
# Importing module and initializing setup
from pycaret.arules import *
arules1 = setup(data = france, transaction_id = 'InvoiceNo', item_id = 'Description')