簡體   English   中英

CNN模型Keras分類預測結果差異巨大

[英]Huge disparity in classification prediction results in CNN model Keras

我用 Keras 訓練了一個CNN模型, df921 rows x 10165 columns每行是一個具有10160特征的樣本。 然后我使用預訓練模型進行預測。

我確保訓練數據很好地平衡,大約 50% 的樣本帶有標簽0 ,其余 50% 帶有標簽1 模型准確性看起來不錯,但在預測過程中存在問題。

所以輸入數據看起來像這樣:

X = df.iloc[:,0:10160]  
X = X.to_numpy()                      
X = X.reshape([X.shape[0], X.shape[1],1]) 
X_train_1 = X[:,0:10080,:]
X_train_2 = X[:,10080:10160,:].reshape(921,80)      
Y = df.iloc[:,10163:10165]
Y = Y.to_numpy()

我用代碼預測了具有預測標簽“1”(對於label_1 )的樣本數量:

prediction = pd.DataFrame(model.predict([X_train_1,X_train_2])) 
prediction['label_1'] = ['0' if x < 0.5 else '1' for x in prediction['prob']]

prediction[prediction['label_1'] == '1'].shape[0]/921

第二行代碼計算所有樣本中label_1 ==1的樣本label_1 ==1 問題是,鑒於輸入數據的平衡數為10 ,我預計分數約為 50% 左右,但計算的分數介於0.08 ~ 0.98 (如果不是更極端)之間,差異巨大。 可能出了什么問題?

使用model.predict_classes()代替。 否則你會得到概率。

prediction = pd.DataFrame(model.predict_classes([X_train_1,X_train_2])) 
prediction[prediction['label_1'] == '1'].shape[0]/921

如果您使用的是函數式 API,請使用np.argmax()

np.argmax(model.predict([X_train_1,X_train_2]), axis=1)

然后你將需要你需要的預測,作為 0 和 1 而不是概率。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM