首页 > 解决方案 > Keras 预测在一类中收集

问题描述

我正在使用 keras 和 python 2.x 并尝试对数据集进行分类。问题是预测总是集中在一个类中。

我是 keras 的新手,我该怎么办?

这是我的混淆矩阵;

    Confusion Matrix
    [[  0  37   0]
     [  0 823   0]
     [  0  26   0]]

这是我的报告。

 precision    recall  f1-score   support

     -1       0.00      0.00      0.00        37
      0       0.93      1.00      0.96       823
      1       0.00      0.00      0.00        26

平均/总计 0.86 0.93 0.89 886

这是我的代码:

dataset= pd.read_csv("kartnEgitim.csv"  )

giris=dataset.iloc [40:,1:20].get_values()
cikis=dataset.iloc [40:,20].get_values()

from sklearn.model_selection import train_test_split
egitimData, testData, egitimEtiket, testEtiket = train_test_split(giris, cikis, test_size = 0.2)

#from sklearn.preprocessing import StandardScaler
#sc = StandardScaler()
#egitimData = sc.fit_transform(egitimData)
#testData = sc.transform(testData)

egitimData=keras.utils.normalize(egitimData,axis=1)
testData=keras.utils.normalize(testData,axis=1)

model=Sequential()
model.add(Dense(6,input_dim=19,activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(6,activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(3))
model.add(Activation('softmax'))


model.compile(optimizer='adam' ,loss='sparse_categorical_crossentropy' , metrics=['accuracy'])
model.fit(egitimData, egitimEtiket,epochs=10,batch_size=64,class_weight='auto') # ,batch_size=64

val_loss, val_acc=model.evaluate(testData,testEtiket)
print(val_loss,val_acc)

# Predicting the Test set results
predictions = model.predict_classes(testData)

from sklearn.metrics import confusion_matrix,classification_report
print('Confusion Matrix')
cm = confusion_matrix(testEtiket, predictions, labels=[-1, 0, 1])
print (cm)

print('Classification Report')
print(classification_report(testEtiket, predictions,target_names = ['-1', '0', '1']))

我是 keras 的新手,我该怎么办?

标签: pythonmachine-learningkeras

解决方案


推荐阅读