现在,让我们用MultiTrain库训练一个数据集,看看它与传统的测试模型方法相比是如何工作的。
注意:训练结果可作为选择适合您特定情况的最佳模型的参考。为了使模型执行得更好,需要进行更多的超参数调优。
在本教程中,我们将使用手机价格分类数据集(https://www.kaggle.com/datasets/iabhishekofficial/mobile-price-classification)处理一个分类问题
安装库
pip install MultiTrain
- 1.
导入所需的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')
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
导入机器学习数据集
现在,让我们也导入我们将使用的数据集
df = pd.read_csv(“train_phone.csv”)
- 1.
检查数据集标签是否平衡
我们检查数据集中包含的标签,以确定它是是否平衡,这将帮助我们决定如何训练数据集。
在运行下面的代码时,您将发现数据集标签是均匀分布的。
# price_range is the column name for the labels
df["price_range"].value_counts()
- 1.
- 2.
模型训练
我们将跳过探索性数据分析,这里的重点是看看我们如何使用 MultiTrain 来实现它的目的。
下一步是将数据集划分为特征和标签。
features = df.drop('price_range', axis=1)
labels = df['price_range']
- 1.
- 2.
在定义了训练特征和标签之后,我们现在需要进一步将它们分为训练集和测试集。模型将使用训练集进行训练,并使用测试集对其性能进行评估。
然后必须在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)
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
您也可以使用 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)
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
您还可以将单个模型与scikit-learn实现进行比较,以查看它们是否产生类似的结果。