简体   繁体   English

hwo 修复 ValueError:分类指标无法处理多类和连续多输出目标的混合

[英]hwo to repair ValueError: Classification metrics can't handle a mix of multiclass and continuous-multioutput targets

I have a problem with printing confusion matrix.我在打印混淆矩阵时遇到问题。 My code looks like that:我的代码看起来像这样:

TP = (0,0)  # True Positive
FN = (0,1)  # False Negative
FP = (1,0)  # False Positive
TN = (1,1)  # True Negative

def calculate_metrics(cm):
sensivity = cm[TP] / (cm[TP] + cm[FN])
precision = cm[TP] / (cm[TP] + cm[FP])
specificity = cm[TN] / (cm[FP] + cm[TN])
accuracy = (cm[TP] + cm[TN]) / (cm[TP] + cm[FN] + cm[FP] + cm[TN])
f1 = (2 * sensivity * precision) / (sensivity + precision)
return sensivity, precision, specificity, accuracy, f1

def printMetrics(a_name, cm, se, p, sp, acc, f1):
print(f"{a_name}\nMacierz:\n{cm}\nSensivity: {se}\nPrecision: {p}\nSpecificity:{sp}\nAccuracy: {acc}\nf1: {f1}\n")

(X_train, y_train),(X_test,y_test) = cifar10.load_data()

class_cnt = np.unique(y_train).shape[0]

class_cnt = np.unique(y_train).shape[0]
filter_cnt = 32
neuron_cnt = 32
learning_rate = 0.0001
act_func = 'relu'
kernel_size = (3, 3)
pooling_size = (2, 2)
model = Sequential()
conv_rule = 'same'
cm_arr = []
model.add(Conv2D(input_shape=X_train.shape[1:], 
             filters=filter_cnt, 
             kernel_size=kernel_size, 
             padding = conv_rule, 
             activation = act_func))
model.add(AveragePooling2D(pooling_size))

model.add(Conv2D(input_shape=X_train.shape[1:], 
             filters=filter_cnt, 
             kernel_size=kernel_size, 
             padding = conv_rule, 
             activation = act_func))
model.add(AveragePooling2D(pooling_size))

model.add(Conv2D(input_shape=X_train.shape[1:], 
             filters=filter_cnt, 
             kernel_size=kernel_size, 
             padding = conv_rule, 
             activation = act_func))
model.add(AveragePooling2D(pooling_size))

model.add(Conv2D(input_shape=X_train.shape[1:], 
             filters=filter_cnt, 
             kernel_size=kernel_size, 
             padding = conv_rule, 
             activation = act_func))
model.add(AveragePooling2D(pooling_size))
model.add(Flatten())
model.add(Dense(class_cnt, activation='softmax'))
model.compile(optimizer=Adam(learning_rate), 
          loss='SparseCategoricalCrossentropy', 
          metrics='accuracy')
model.summary()
model.fit(X_train, y_train, epochs=class_cnt, validation_data=(X_test, y_test))

model.fit(X_train, y_train)
y_pred = model.predict(X_test)
cm_arr.append(confusion_matrix(y_test, y_pred))
se, p, sp, acc, f1 = calculate_metrics(cm_arr[0])
printMetrics(cm_arr[0], se, p, sp, acc, f1)

https://www.online-python.com/s72HNiP6FM https://www.online-python.com/s72HNiP6FM

I can't figure out why it is not working.我不知道为什么它不起作用。 I have other python file and functions and printing looks the same but I use a different method to divide it into sets of test and training:我还有其他 python 文件和功能,打印看起来一样,但我使用不同的方法将其分为测试和训练集:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, shuffle=True)

After a few attempts and mistakes, I did.经过几次尝试和错误之后,我做到了。 I used this way:我用这种方式:

y_prob = model.predict(X_test)
y_pred = y_prob.argmax(axis=-1)
cm_arr.append(confusion_matrix(y_test, y_pred))
se, p, sp, acc, f1 = calculate_metrics(cm_arr[0])
printMetrics(cm_arr[0], se, p, sp, acc, f1)

also very useful was this site:这个网站也很有用:

https://rschandrastechblog.blogspot.com/2021/05/plotting-confusion-matrix-for-cifar10.html https://rschandrastechblog.blogspot.com/2021/05/plotting-confusion-matrix-for-cifar10.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 混淆矩阵:ValueError:分类指标无法处理多类和连续多输出目标的混合 - Confusion matrix: ValueError: Classification metrics can't handle a mix of multiclass and continuous-multioutput targets ValueError:分类指标无法处理多标签指标和连续多输出目标 sklearn 的混合 - ValueError: Classification metrics can't handle a mix of multilabel-indicator and continuous-multioutput targets sklearn ValueError:分类指标无法处理多标签指标和连续多输出目标错误的混合 - ValueError: Classification metrics can't handle a mix of multilabel-indicator and continuous-multioutput targets error ValueError:分类指标无法处理多标签指标和连续多输出目标的混合 - ValueError: Classification metrics can't handle a mix of multilabel-indicator and continuous-multioutput targets Confusion_matrix ValueError:分类指标无法处理二进制和连续多输出目标的混合 - Confusion_matrix ValueError: Classification metrics can't handle a mix of binary and continuous-multioutput targets f-score:ValueError:分类指标无法处理多标签指标和连续多输出目标的混合 - f-score: ValueError: Classification metrics can't handle a mix of multilabel-indicator and continuous-multioutput targets 分类指标无法处理连续多输出和多标签指标目标的混合 - classification metrics can't handle a mix of continuous-multioutput and multi-label-indicator targets 混淆矩阵() | ValueError:分类指标无法处理多类和多类多输出目标的混合 - confusion_matrix() | ValueError: Classification metrics can't handle a mix of multiclass and multiclass-multioutput targets Keras混淆矩阵:ValueError:分类指标无法处理多类多输出和二进制目标的混合 - Keras confusion matrix: ValueError: Classification metrics can't handle a mix of multiclass-multioutput and binary targets 错误:分类指标无法处理多类多输出和多标记指标目标的混合 - Error: Classification metrics can't handle a mix of multiclass-multioutput and multilabel-indicator targets
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM