[英]Training set contains “labels” as inputs to keras model
我看到我的keras模型不能很好地處理輸入列(如果它們不是浮點值)。 我希望能夠使用包含“標簽”的列來訓練模型,而標簽指的是各種ID或編碼的字符串名稱。 理想情況下,它將能夠將這些標簽列集成到其模型中,從而確定這些分類列中的哪些值表示較高的准確性。
例如,我試圖預測比賽的結果(勝利= 1,虧損= 0),並且我想在歷史數據中包括“團隊名稱”和“教練名稱”。 理想情況下,該模型將確定哪些球隊和教練更有可能獲勝。
但是,當我運行model.fit
且training_set包含除int / float值之外的任何內容(本質上是統計性的,不是分類的),它為每個紀元生成相同的准確性,並且損失得分非常高。
這是我定義模型的方式:
model = keras.Sequential([
keras.layers.Dense(1024, activation=tf.nn.relu, kernel_initializer=init_ru, bias_initializer=init_ru),
keras.layers.Dense(512, activation=tf.nn.relu, kernel_initializer=init_ru, bias_initializer=init_ru),
keras.layers.Dense(256, activation=tf.nn.relu),
keras.layers.Dense(128, activation=tf.nn.relu),
keras.layers.Dense(32, activation=tf.nn.relu),
keras.layers.Dense(1, activation=tf.nn.sigmoid)
])
opt = keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.0, amsgrad=True)
model.compile(optimizer=opt,
loss='binary_crossentropy',
metrics=['accuracy'])
如果我不包含任何分類數據,它會很好用,但是我認為,如果我可以將其與分類數據一起使用,它將進一步改善。
處理分類數據的標准方法是創建有效值的字典,然后將類別轉換為one_hot向量。
這是一個帶有示例的合理介紹性文章: https : //machinelearningmastery.com/how-to-one-hot-encode-sequence-data-in-python/
假設您的自變量(功能)在數據框df
,則可以使用:
pd.get_dummies(df.iloc[:,columns_to_be_converted])
numpy數組的示例:
pd.get_dummies(np.array(["Mark","Sarah","Mark","John"]).astype(str))
輸出:
John Mark Sarah
0 0 1 0
1 0 0 1
2 0 1 0
3 1 0 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.