我用Keras訓練了一個模型,每個行都是一個帶有特征的樣本。然后,我使用預訓練模型進行預測。CNNdf921 rows x 10165 columns10160我確保訓練數據是平衡的,大約50%的樣本帶有標簽,其余50%的樣本帶有標簽。模型準確性看起來不錯,但在預測過程中存在問題。01因此,輸入數據如下所示: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”(for)的樣本數量:label_1prediction = 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第二行代碼計算所有樣本中樣本的比例。問題是,鑒于輸入數據具有平衡的數量和,我期望分數約為50%左右,但計算出的分數介于范圍?(如果不是更極端)之間,差異巨大??赡艹隽耸裁磫栴}?label_1 ==1100.080.98
1 回答

拉風的咖菲貓
TA貢獻1995條經驗 獲得超2個贊
請改用。否則,您將獲得概率。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而不是概率。
添加回答
舉報
0/150
提交
取消