model_selection.cross_val_score函数介绍
目录
- 前言
- 主要功能
- 函数签名
- 示例
前言
model_selection.cross_val_score 是 scikit-learn 库中一个非常实用的函数,它用于评估一个模型在给定的数据集上的性能。通过进行交叉验证,cross_val_score 可以帮助用户更好地理解模型在不同数据分割下的表现,从而获得模型更为稳健的评估指标。
以下是对这个函数的详细介绍:
主要功能
cross_val_score 通过将数据集划分成 k 个互斥的子集(俗称“折”),然后在 k 次训练/测试迭代中,每一次使用 k-1 个子集进行训练,并使用剩下的子集进行测试。这个过程称为 k 折交叉验证。最终返回模型在每次测试中的评分。
函数签名
sklearn.model_selection.cross_val_score(estimator, X, y=None, *, groups=None, scoring=None, cv=None, n_jobs=None, verbose=0, fit_params=None, pre_dispatch='2*n_jobs', error_score=nan)
参数描述
- estimator:需要评估的模型。这通常是一个实现了 fit 和 predict 方法的对象,比如Pipeline、RandomForestClassifier 等。
- X:特征数据。可以是 numpy 数组或 pandasDataFrame,包含模型训练所需的特征。
- y:目标变量(即标签)。对于监督学习问题,这是需要预测的目标。
- groups:用于分组策略的分组标签数组(可选)。在某些算法如分层交叉验证中很有用。
- scoring:评分标准。可以是字符串来指定常用的评分方法(如 accuracy、roc_auc),也可以是自定义的评分函数。
- cv:交叉验证生成器或可迭代类型,决定数据分割策略。默认是 5 折交叉验证。可以指定为整数(k 值)以进行 k 折交叉验证。
- n_jobs:并行运行的作业数量。n_jobs=-1 会使用所有可用的CPU。
- verbose:控制详细程度的参数。数值越大输出的信息越详细。 fit_params:传递给 fit 方法的参数(可选)。
- pre_dispatch:指定在并行执行时预先分派任务的数量。默认是 ‘2*n_jobs’。
- error_score:在出现异常时指定返回值。默认返回 nan。
返回值
scores:包含每次测试集上评分的数组。通常返回每次交叉验证的得分列表,长度与 cv 的次数相同。
示例
from sklearn.model_selection import cross_val_score
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
# 加载数据
X, y = load_iris(return_X_y=True)
# 实例化模型
clf = RandomForestClassifier(random_state=0)
# 执行交叉验证,使用样本数据和默认的 5 折
scores = cross_val_score(clf, X, y, cv=5, scoring='accuracy')
print("Cross-validation scores:", scores)
print("Mean accuracy:", scores.mean())
Cross-validation scores: [0.96666667 0.96666667 0.93333333 0.96666667 1. ]
Mean accuracy: 0.9666666666666668
这个例子首先加载了 Iris 数据集,并使用 RandomForestClassifier 对其进行评估,执行5次交叉验证。最后打印每次迭代的准确率和平均准确率。
cross_val_score 是用于模型选择和评估模型泛化能力的一种有效方法。通过调整不同的参数和评分标准,用户可以得到一个可靠的模型表现评估结果。