簡體   English   中英

訓練集包含“標簽”作為keras模型的輸入

[英]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.

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