sklearn中cross_val_score、cross_val_predict的用法比较

交叉验证的概念,直接粘贴scikit-learn官网的定义:


scikit-learn中计算交叉验证的函数:

cross_val_score:得到K折验证中每一折的得分,K个得分取平均值就是模型的平均性能

cross_val_predict:得到经过K折交叉验证计算得到的每个训练验证的输出预测


方法:

cross_val_score:分别在K-1折上训练模型,在余下的1折上验证模型,并保存余下1折中的预测得分

cross_val_predict:分别在K-1上训练模型,在余下的1折上验证模型,并将余下1折中样本的预测输出作为最终输出结果的一部分

结论:

cross_val_score计算得到的平均性能可以作为模型的泛化性能参考

cross_val_predict计算得到的样本预测输出不能作为模型的泛化性能参考


代码样例:

from sklearn import datasets
import numpy as np
from sklearn.tree import DecisionTreeClassifier
from sklearn import datasets
import numpy as np
from sklearn.tree import DecisionTreeClassifier

# 加载鸢尾花数据集
iris = datasets.load_iris()
iris_train = iris.data
iris_target = iris.target
print(iris_train.shape)
print(iris_target.shape)
(150, 4)
(150,)

# 构建决策树分类模型
tree_clf = DecisionTreeClassifier()
tree_clf.fit(iris_train, iris_target)
tree_predict = tree_clf.predict(iris_train)
​
# 计算决策树分类模型的准确率
from sklearn.metrics import accuracy_score
print("Accuracy:", accuracy_score(iris_target, tree_predict))
Accuracy: 1.0

# 交叉验证cross_val_score输出每一折上的准确率
from sklearn.model_selection import cross_val_predict, cross_val_score, cross_validate
tree_scores = cross_val_score(tree_clf, iris_train, iris_target, cv=3)
print(tree_scores)
[0.98039216 0.92156863 1.        ]

# 交叉验证cross_val_predict输出每个样本的预测结果
tree_predict = cross_val_predict(tree_clf, iris_train, iris_target, cv=3)
print(tree_predict)
print(len(tree_predict))
print(accuracy_score(iris_target, tree_predict))
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1
 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 1 2 2 2 2
 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 1 2 2 2 2 2 2 2 2 2
 2 2]
150
0.96

print(tree_clf.predict(iris_train))
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2]

# 交叉验证cross_validate对cross_val_score结果进行包装,并包含fit的时间等信息
tree_val = cross_validate(tree_clf, iris_train, iris_target, cv=3)
print(tree_val)
{'fit_time': array([0., 0., 0.]), 'score_time': array([0., 0., 0.]), 'test_score': array([0.98039216, 0.92156863, 0.97916667])}

​

​

交叉验证评价方式scoring的参数链接:3.3. Metrics and scoring: quantifying the quality of predictions — scikit-learn 1.0.2 documentation

  • 38
    点赞
  • 147
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: `cross_val_predict` 是 `scikit-learn` 库的一个函数,用于在交叉验证的框架下生成模型的预测结果。 它的使用方式如下: ```python from sklearn.model_selection import cross_val_predict from sklearn import linear_model lr = linear_model.LinearRegression() predicted = cross_val_predict(lr, X, y, cv=10) ``` 其,`lr` 是一个线性回归模型,`X` 是特征数据,`y` 是目标变量。`cv=10` 表示采用 10 折交叉验证。`cross_val_predict` 函数会返回一个包含所有预测结果的数组 `predicted`。 需要注意的是,`cross_val_predict` 函数并不会返回模型本身,而是仅仅返回预测结果。如果需要获取模型对象,需要使用 `cross_val_score` 函数。 除此之外,`cross_val_predict` 还可以接受其他参数,如 `method`(默认为 `predict`,即使用模型的 `predict` 方法进行预测)、`fit_params`(传递给模型的其他参数)等,具体可以参考官方文档的说明。 ### 回答2: cross_val_predict是scikit-learn库的一个函数,用于通过交叉验证来生成模型的预测结果。 具体地,cross_val_predict函数需要传入一个指定的机器学习模型、输入特征矩阵X和目标变量y。它还需要指定交叉验证的折数,可以通过cv参数来设置。该函数会根据指定的模型和数据集,将每个样本都使用交叉验证的方式来预测目标变量。 cross_val_predict函数返回一个数组,这个数组的每个元素是模型对于对应样本的预测值。也就是说,对于每个样本,使用训练得到的模型和其他折的数据来预测其目标变量的值。这样,通过交叉验证的方式,我们可以得到对每个样本的多次预测结果。 与传统的cross_val_score函数不同,cross_val_predict函数返回的结果是一个与输入数据X和目标变量y形状相同的数组。这样,我们可以方便地将预测结果与真实值进行比较,并进行后续的模型评估和分析。 总的来说,cross_val_predict函数是一个方便的工具,通过交叉验证生成模型的预测结果。它可以帮助我们更好地了解模型在不同样本上的表现,并进行模型评估和改进。 ### 回答3: cross_val_predict是一种用于交叉验证的方法,它用于预测模型的输出变量。与常规的交叉验证方法相比,cross_val_predict不仅返回预测结果,还返回每个样本的预测值。这个方法适用于对模型性能进行评估,特别是评估预测值和真实值之间的相关性。 我们通常使用cross_val_predict的一般步骤如下: 1. 导入所需的库和数据。 2. 设置特征和目标变量。 3. 创建一个机器学习模型,例如线性回归模型。 4. 使用cross_val_predict方法进行交叉验证预测,设置必要的参数,例如模型、特征和目标变量。 5. 获取模型的预测结果。 cross_val_predict方法的优点之一是,它可以在没有任何测试数据的情况下生成模型的预测结果。这意味着我们可以使用整个数据集进行训练,而不需要保留部分数据用于模型测试。同时,由于使用了交叉验证,模型的评估也更可靠。然而,需要注意的是,在使用cross_val_predict时,我们需要确保所使用的数据集的特征和目标变量都已经准备好,并且适用于机器学习模型的训练。 总而言之,cross_val_predict是一种用于预测模型输出变量并进行交叉验证的方法。通过该方法,我们可以使用整个数据集进行模型训练,并获得每个样本的预测结果。这种方法有助于我们评估模型的性能,并检查预测值与实际值之间的相关性。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值