设想一下您要测试给定数据集是否具有足够的特征来训练机器学习算法,或者在给定数据集上测试不同算法的性能,这两种情况在数据科学领域非常普遍。
通常情况下,要测试特征是否有效,可以训练没有正则化的模型,并验证损失函数是否接近零。
使用哪种算法?
该问题的答案类似于探索性数据分析(EDA)的过程。进行探索性数据分析可以深入了解数据集。同样,有几种方法可以找到最适合该数据集的最佳算法,但这通常需要在循环中迭代多个模型,这可能很耗时。要克服此限制,可以使用lazypredict
(Python库)作为选择最佳性能算法的起点。
本文展示了一个示例,该示例分别使用循环迭代和lazypredict
来比较分类算法的性能。此外,它还显示了使用lazypredict
对波士顿住房数据集(Boston housing)测试不同回归算法的性能。
在iris数据集上比较分类算法
在进行算法比较之前,让我们谈谈数据集。iris数据集由3类(Setosa,Versicolor,Virginica)组成,每种iris植物有50个样本。
这些类别之间的区别特征是萼片长度(sepal length),萼片宽度(sepal width),花瓣长度(petal length)和花瓣宽度(petal width)。下图显示了基于类别的特征之间的关系。
下面的代码显示了数据探索和特征缩放的步骤。
# import libraries
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import classification_report
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
# iris dataset
from sklearn.datasets import load_iris
# boston housing price
from sklearn.datasets import load_boston
# load iris
iris = load_iris()
# feature matrix in "X"
X = iris.data
# target in "y"
y = iris.target
# create pandas df
data_iris = pd.DataFrame(X, columns=iris.feature_names)
data_iris['target'] = pd.DataFrame(y.reshape(-1,1