多类分类如何计算加权精度?

2024-09-30 14:34:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我对不平衡的类进行多类分类。我使用SGDClassifier(), GradientBoostingClassifier(), RandomForestClassifier(), and LogisticRegression()class_weight='balanced'。比较结果。需要计算精度。我尝试了以下方法来计算加权精度:

n_samples = len(y_train)
weights_cof = float(n_samples)/(n_classes*np.bincount(data[target_label].as_matrix().astype(int))[1:])
sample_weights = np.ones((n_samples,n_classes)) * weights_cof
print accuracy_score(y_test, y_pred, sample_weight=sample_weights)

y_train是一个二进制数组。因此sample_weightsy_trainn_samples, n_classes)具有相同的形状。运行脚本时,收到以下错误:

更新:

^{pr2}$

Tags: andsamplenp分类trainclassclassessamples
1条回答
网友
1楼 · 发布于 2024-09-30 14:34:09

这个错误似乎表明样本权重和y_test/y_pred数组的形状不同。基本上,该方法使用y_test == y_pred创建一个布尔数组,并将其与sample_weights一起传递给np.average。该方法中的第一个检查是确保输入的数组和权重的形状相同,在本例中显然不是这样。在

更新

你的评论“sample_weights,yüu test,和y_pred具有相同的形状(n_samples,n_classes)”暴露了这个问题。根据^{}y_pred和{}(在您的例子中,y_test和{})应该是一维的。你可能在使用一个热编码标签吗?如果是这样,您应该将它们转换为单值标签,然后再次尝试精度分数。在

相关问题 更多 >