ANN的多类分类

时间:2018-03-11 11:49:06

标签: python-3.x machine-learning neural-network

我在Python中使用ANN进行多类分类(12个类)。但是我收到了错误。以下是代码段:

import keras
from keras.models import Sequential
from keras.layers import Dense

# Initialising the ANN
# Initialising the ANN
classifier = Sequential()

# Adding the input layer and the first hidden layer
classifier.add(Dense(units = 8, kernel_initializer = 'uniform', activation = 'relu', input_dim = 4))

# Adding the second hidden layer
classifier.add(Dense(units = 8, kernel_initializer = 'uniform', activation = 'relu'))

# Adding the output layer
classifier.add(Dense(units = 13, kernel_initializer = 'uniform', activation = 'softmax'))

# Compiling the ANN
classifier.compile(optimizer = 'adam', loss = 'sparse_categorical_crossentropy', metrics = ['accuracy'])

# Fitting the ANN to the Training set
classifier.fit(X_train, y_train, batch_size =200 , epochs = 100)

# Predicting the Test set results
y_pred = classifier.predict(X_test)

   # Making the Confusion Matrix
   from sklearn.metrics import confusion_matrix
   cm = confusion_matrix(y_test, y_pred)

程序一直运行,直到运行神经代码并找到y_pred。之后我得到了这个错误,即没有形成混淆矩阵。

错误:

ValueError: Classification metrics can't handle a mix of multiclass and continuous-multioutput targets

2 个答案:

答案 0 :(得分:0)

from sklearn.metrics import confusion_matrix

y_pred = classifier.predict(X_test)

predictions = np.argmax(y_pred, axis=-1) 

cm = confusion_matrix(y_test, y_pred)

我希望它能解决您的问题

答案 1 :(得分:-2)

from sklearn.metrics import confusion_matrix
from sklearn.preprocessing import LabelEncoder

y_pred = classifier.predict(X_test) 
predictions = np.argmax(y_pred, axis=-1) 

label_encoder = LabelEncoder().fit(y_test)
label_y = label_encoder.transform(y_test)

cm = confusion_matrix(label_y, predictions)