如何将 sklearn 的分类报告用于 keras 模型?
How to use classification report from sklearn for keras models?
所以我写了一个网络,其中包含以下内容用于多class class化:
-y_labels 转换为 to_categorical
-最后一层使用一个带有 3 个神经元的 sigmoid 函数作为我的 classes
-模型编译使用 categorical_crossentropy 作为损失函数
所以我用了
model.predict_classes(x_test)
然后我将其用作
classification_report(y_test,pred)
y_test 的形式为 to_categorical
我收到以下错误:
ValueError: Mix type of y not allowed, got types set(['binary', 'multilabel-indicator'])
我的问题是我怎样才能将它转换回来以便按原样使用它?
错误只是表明 y_test
和 pred
是不同的类型。检查 multiclass.py 中的函数 type_of_target
。如此处所示,y
之一是 classes 的指示符,另一个是 class 向量的指示符。您可以通过打印形状 y_test.shape , pred.shape
来推断哪一个是什么。
此外,由于您使用的是 model.predict_classes
而不是 model.predict
,因此 model.predict_classes
的输出将只是 classes 而不是 class 向量。
因此,您需要通过以下方式转换其中之一:
# class --> class vector
from keras.utils import np_utils
x_vec = np_utils.to_categorical(x, nb_classes)
# class vector --> class
x = x_vec.argmax(axis=-1)
所以我写了一个网络,其中包含以下内容用于多class class化: -y_labels 转换为 to_categorical -最后一层使用一个带有 3 个神经元的 sigmoid 函数作为我的 classes -模型编译使用 categorical_crossentropy 作为损失函数 所以我用了
model.predict_classes(x_test)
然后我将其用作
classification_report(y_test,pred)
y_test 的形式为 to_categorical 我收到以下错误:
ValueError: Mix type of y not allowed, got types set(['binary', 'multilabel-indicator'])
我的问题是我怎样才能将它转换回来以便按原样使用它?
错误只是表明 y_test
和 pred
是不同的类型。检查 multiclass.py 中的函数 type_of_target
。如此处所示,y
之一是 classes 的指示符,另一个是 class 向量的指示符。您可以通过打印形状 y_test.shape , pred.shape
来推断哪一个是什么。
此外,由于您使用的是 model.predict_classes
而不是 model.predict
,因此 model.predict_classes
的输出将只是 classes 而不是 class 向量。
因此,您需要通过以下方式转换其中之一:
# class --> class vector
from keras.utils import np_utils
x_vec = np_utils.to_categorical(x, nb_classes)
# class vector --> class
x = x_vec.argmax(axis=-1)