使用MultiTrain在數據集上訓練多個機器學習分類模型示例
現在,讓我們用MultiTrain庫訓練一個數據集,看看它與傳統的測試模型方法相比是如何工作的。
注意:訓練結果可作為選擇適合您特定情況的最佳模型的參考。為了使模型執行得更好,需要進行更多的超參數調優。
在本教程中,我們將使用手機價格分類數據集(https://www.kaggle.com/datasets/iabhishekofficial/mobile-price-classification)處理一個分類問題
安裝庫
pip install MultiTrain
導入所需的Python庫
要處理這個數據集,我們需要導入以下庫
import warnings
import pandas as pd
import seaborn as sns
from MultiTrain import MultiClassifier
from numpy import mean,
arange from matplotlib import pyplot as plt
warning.filterwarnings('ignore')
導入機器學習數據集
現在,讓我們也導入我們將使用的數據集
df = pd.read_csv(“train_phone.csv”)
檢查數據集標簽是否平衡
我們檢查數據集中包含的標簽,以確定它是是否平衡,這將幫助我們決定如何訓練數據集。
在運行下面的代碼時,您將發現數據集標簽是均勻分布的。
# price_range is the column name for the labels
df["price_range"].value_counts()
模型訓練
我們將跳過探索性數據分析,這里的重點是看看我們如何使用 MultiTrain 來實現它的目的。
下一步是將數據集劃分為特征和標簽。
features = df.drop('price_range', axis=1)
labels = df['price_range']
在定義了訓練特征和標簽之后,我們現在需要進一步將它們分為訓練集和測試集。模型將使用訓練集進行訓練,并使用測試集對其性能進行評估。
然后必須在MultiTrain庫中定義MultiClassifier對象。我們正在處理的數據集包括四個不同的標簽,這使它成為一個多類問題。
通過定義隨機狀態參數,在數據集上訓練的所有機器學習模型將產生一致的結果。設置“cores”為“-1”可以確保訓練使用CPU中的所有內核來提高性能。
train = MultiClassifier(random_state=42,
imbalanced=False,
target_class='multiclass',
cores=-1)
# It's important to assign this method to a variable because it
# returns the training and test splits to be used in the fit method
returned_split = train.split(X=features,
y=labels,
randomState=42,
sizeOfTest=0.2)
fit = train.fit(X=features,
y=labels,
splitting=True,
split_data=returned_split,
show_train_score=True)
您也可以使用 KFold 拆分對數據集進行訓練。
train = MultiClassifier(random_state=42,
imbalanced=False,
target_class='multiclass',
cores=-1)
# setting kf to True tells the fit method to use the KFold Split for # training.
fit = train.fit(X=features,
y=labels,
kf=True,
fold=5,
show_train_score=True)
您還可以將單個模型與scikit-learn實現進行比較,以查看它們是否產生類似的結果。