- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想计算我的分类器的 AUC、精确度和准确度。我在做监督学习:
这是我的工作代码。此代码适用于二进制类,但不适用于多类。请假设您有一个包含二进制类的数据框:
sample_features_dataframe = self._get_sample_features_dataframe()
labeled_sample_features_dataframe = retrieve_labeled_sample_dataframe(sample_features_dataframe)
labeled_sample_features_dataframe, binary_class_series, multi_class_series = self._prepare_dataframe_for_learning(labeled_sample_features_dataframe)
k = 10
k_folds = StratifiedKFold(binary_class_series, k)
for train_indexes, test_indexes in k_folds:
train_set_dataframe = labeled_sample_features_dataframe.loc[train_indexes.tolist()]
test_set_dataframe = labeled_sample_features_dataframe.loc[test_indexes.tolist()]
train_class = binary_class_series[train_indexes]
test_class = binary_class_series[test_indexes]
selected_classifier = RandomForestClassifier(n_estimators=100)
selected_classifier.fit(train_set_dataframe, train_class)
predictions = selected_classifier.predict(test_set_dataframe)
predictions_proba = selected_classifier.predict_proba(test_set_dataframe)
roc += roc_auc_score(test_class, predictions_proba[:,1])
accuracy += accuracy_score(test_class, predictions)
recall += recall_score(test_class, predictions)
precision += precision_score(test_class, predictions)
最后,我当然将结果除以 K,以获得平均 AUC、精度等。这段代码工作正常。但是,我无法为多类计算相同的值:
train_class = multi_class_series[train_indexes]
test_class = multi_class_series[test_indexes]
selected_classifier = RandomForestClassifier(n_estimators=100)
selected_classifier.fit(train_set_dataframe, train_class)
predictions = selected_classifier.predict(test_set_dataframe)
predictions_proba = selected_classifier.predict_proba(test_set_dataframe)
我发现对于多类我必须为平均值添加参数“weighted”。
roc += roc_auc_score(test_class, predictions_proba[:,1], average="weighted")
我得到一个错误:raise ValueError("{0} format is not supported".format(y_type))
ValueError:不支持多类格式
最佳答案
您不能将 roc_auc
用作多类模型的单个汇总指标。如果你愿意,你可以计算每类 roc_auc
,如
roc = {label: [] for label in multi_class_series.unique()}
for label in multi_class_series.unique():
selected_classifier.fit(train_set_dataframe, train_class == label)
predictions_proba = selected_classifier.predict_proba(test_set_dataframe)
roc[label] += roc_auc_score(test_class, predictions_proba[:,1])
然而,更常见的是使用 sklearn.metrics.confusion_matrix
来评估多类模型的性能。
关于python - 计算多类的sklearn.roc_auc_score,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39685740/
我想计算我的分类器的 AUC、精确度和准确度。我在做监督学习: 这是我的工作代码。此代码适用于二进制类,但不适用于多类。请假设您有一个包含二进制类的数据框: sample_features_dataf
我正在对现有数据框执行 k-fold XV,我需要获得 AUC 分数。问题是 - 有时测试数据只包含 0,而不包含 1! 我尝试使用 this例如,但数字不同: import numpy as np
我正在使用 scikit-learn 中的 roc_auc_score 函数来评估我的模型性能。但是,无论我使用 predict() 还是 predict_proba(),我都会得到不同的值 p_pr
我正在尝试使用 sklearn.metrics.roc_auc_score 使用以下方法计算 ROC 曲线下的面积: roc_auc = sklearn.metrics.roc_auc_score(a
我很难理解 scikit-learn 中 roc_auc_score() 和 auc() 之间的区别(如果有的话)。 我想预测具有不平衡类的二进制输出(Y=1 约为 1.5%)。 分类器 model_
我正在训练一个 RandomForestClassifier (sklearn) 来预测信用卡欺诈。然后当我测试模型并检查 rocauc 分数时,当我使用 roc_auc_score 时会得到不同的值
我想评估我的机器学习模型。我使用 roc_auc_score() 计算了 ROC 曲线下的面积,并使用 sklearn 的 plot_roc_curve() 函数绘制了 ROC 曲线。在第二个函数中,
我正在尝试使用 sklearn 的 roc_auc_score() 函数计算多类问题的 AUC 分数。 我有形状为 [n_samples,n_classes] 的预测矩阵和形状为 [n_samples
我正在尝试确定 roc_auc_score用于验证集上的拟合模型。 我看到有关函数输入的一些相互矛盾的信息。 Documentation说: "y_score 类似数组的形状 (n_samples,)
刚接触 sklearn,请保持温柔。使用不同的 roc_auc 评分计算客户流失率,我得到 3 个不同的分数。分数 1 和 3 接近,分数与分数 2 之间存在显着差异。感谢您指导为什么会出现这种差异以
我对 cross_val_score 评分指标“roc_auc”和我可以直接导入和调用的 roc_auc_score 之间的区别感到困惑。 文档 ( http://scikit-learn.org/s
在某些情况下, tf.metrics.auc 产生的值与 sklearn.metrics.roc_auc_score 非常不同。 我无法确定这种情况的特殊性是什么,但我能够获得一个可重现的例子: 代码
我正在使用 逻辑回归 进行预测。我的预测是 0 和 1。在根据给定数据训练我的模型后,以及在训练重要特征时,即 X_important_train 请参见屏幕截图。我得到大约 70% 的分数,但是当我
我正在使用分层 10 折交叉验证来寻找模型,该模型从具有最高 auc 的 X(X 有 34 个标签)预测 y(二元结果)。我设置了 GridSearchCV: log_reg = LogisticRe
我是一名优秀的程序员,十分优秀!