- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试找出如何使用 cross_validate 生成混淆矩阵。我能够使用目前的代码打印出分数。
# Instantiating model
model = DecisionTreeClassifier()
#Scores
scoring = {'accuracy' : make_scorer(accuracy_score),
'precision' : make_scorer(precision_score),
'recall' : make_scorer(recall_score),
'f1_score' : make_scorer(f1_score)}
# 10-fold cross validation
scores = cross_validate(model, X, y, cv=10, scoring=scoring)
print("Accuracy (Testing): %0.2f (+/- %0.2f)" % (scores['test_accuracy'].mean(), scores['test_accuracy'].std() * 2))
print("Precision (Testing): %0.2f (+/- %0.2f)" % (scores['test_precision'].mean(), scores['test_precision'].std() * 2))
print("Recall (Testing): %0.2f (+/- %0.2f)" % (scores['test_recall'].mean(), scores['test_recall'].std() * 2))
print("F1-Score (Testing): %0.2f (+/- %0.2f)" % (scores['test_f1_score'].mean(), scores['test_f1_score'].std() * 2))
但我正在尝试将该数据放入混淆矩阵中。我可以使用 cross_val_predict 制作混淆矩阵 -
y_train_pred = cross_val_predict(model, X, y, cv=10)
confusion_matrix(y, y_train_pred)
这很好,但由于它正在执行自己的交叉验证,因此结果不会匹配。我只是在寻找一种方法来生成具有匹配结果的两者。
任何帮助或指示都会很棒。谢谢!
最佳答案
我认为最好的方法是将混淆矩阵定义为记分器,而不是或除了您定义的其他矩阵之外。幸运的是,这是用户指南中的示例;参见第三个项目符号 here :
def confusion_matrix_scorer(clf, X, y):
y_pred = clf.predict(X)
cm = confusion_matrix(y, y_pred)
return {'tn': cm[0, 0], 'fp': cm[0, 1],
'fn': cm[1, 0], 'tp': cm[1, 1]}
cv_results = cross_validate(svm, X, y, cv=5,
scoring=confusion_matrix_scorer)
然后 cv_results['test_tp']
(等)是一个列表,其中包含每个折叠的真阳性数。现在,您可以使用最适合您的方式聚合混淆矩阵。
首先想到的是另一种方法,我将在此处添加它,以防它有助于理解 sklearn 如何处理事物。但我绝对认为第一种方法更好。
您可以在 cross_validate
中设置 return_estimator
,在这种情况下,返回的字典有一个关键字 estimator
,其值为拟合模型列表。不过,您仍然需要能够找到相应的测试折叠。为此,您可以手动定义 cv
对象(例如 cv = StratifiedKFold(10)
和 cross_validate(..., cv=cv)
; 然后 cv
仍将包含进行拆分的相关数据。因此您可以使用拟合估计器对适当的测试折叠进行评分,生成混淆矩阵。或者您可以使用 cross_val_predict(.. ., cv=cv)
,但此时你重复拟合,所以你可能应该跳过 cross_validate
并自己执行循环。
关于python - 使用 cross_validate 生成混淆矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65645125/
我正在尝试找出如何使用 cross_validate 生成混淆矩阵。我能够使用目前的代码打印出分数。 # Instantiating model model = DecisionTreeClassif
我正在使用 scikit-learn cross_validation( http://scikit-learn.org/stable/modules/cross_validation.html )
我正在尝试找出如何使用 cross_validate 生成混淆矩阵。我能够使用目前的代码打印出分数。 # Instantiating model model = DecisionTreeClassif
我正在使用 scikit-learn cross_validation( http://scikit-learn.org/stable/modules/cross_validation.html )
我尝试在 python 2 中使用以下语句导入 cross_validation from sklearn import cross_validation 但我收到以下错误 cannot import
正在学习机器学习类(class),我想将数据分为训练集和测试集。我想将其拆分,使用决策树对其进行训练,然后打印出我的测试集的分数。我的代码中的交叉验证参数已给出。有人看到我做错了什么吗? 我得到的错误
我正在尝试在分类问题中同时使用 cross_validate 函数和 SMOTE 函数,我想知道如何正确执行此操作。 这是我用来在机器学习分类算法中调用 cross_validation 的简单函数:
使用 LeaveOneOut 的 sklearn.cross_validation 中可能存在错误。x_test 和 y_test 没有在 LeaveOneOut 中使用。相反,验证是使用 x_tra
我在 sci-kit 学习文档中找不到此信息。但根据我得到的数字,分数看起来不像是均方误差。 最佳答案 cross_val_score 调用您传入的估算器的 .score() 方法,返回的内容因估算器
当我导入时,我使用的是 anaconda import sklearn as sk 它有效但导入时: from sklearn.cross_validation import train_test_s
我有以下代码,它执行 5 倍交叉验证并返回几个指标值。 iris = load_iris() clf = SVC() scoring = {'acc': 'accuracy',
我正在尝试一下 scikit-learn,并希望为所执行的网格搜索的一个特定超参数组合重现交叉验证分数。 对于网格搜索,我使用了 GridSearchCV 类,并为一个特定的超参数组合重现结果,我使用
我尝试使用 pandas_ml 库完成交叉验证 df = pdml.ModelFrame(features, target) estimators = {'SVM: SVR': df.svm.SVR(
我无法从 sklearn 库中导入 cross_validation;我使用 sklearn 版本 0.20.0 from sklearn import cross_validation 后面的代码:
我正在尝试将我的数据集拆分为训练和测试数据集,但出现此错误: X_train,X_test,Y_train,Y_test = sklearn.cross_validation.train_test_s
我面临以下错误的问题: ModuleNotFoundError: No module named 'sklearn.cross_validation' 当我检查使用 pip freeze 安装的软件包
我正在尝试做: from sklearn.model_selection import cross_validate 如here所述。 但是得到错误: ImportError: cannot impo
我正在尝试一个代码,但它显示了这个错误 NameError:name 'cross_validation' is not defined 当我运行这一行时 X_train, X_test, y_tra
只是想知道 sklearn.cross_validation.cross_val_score 到底是什么?文档说这是内部评分方法。它是否提供 FPR/精度/召回率? 最佳答案 默认情况下,cross_
我正在使用: sklearn.cross_validation.cross_val_score 进行交叉验证并获得每次运行的结果。 这个函数的输出是分数。 是否有一种方法可以获取在 cross_val
我是一名优秀的程序员,十分优秀!