TensorFlow2中提供的幾種處理特征列的方法小結(jié)
TensorFlow 2 提供了多種處理特征列的方法,用于對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換,然后把轉(zhuǎn)換后的數(shù)據(jù)傳入TensorFlow的layers.DenseFeatures層,并將該層作為神經(jīng)網(wǎng)絡(luò)的輸入層。
1. 處理數(shù)值列
一個(gè)特征列的輸出將成為模型的輸入。 數(shù)值列(numeric column) 是最簡(jiǎn)單的列類型。它用于表示實(shí)數(shù)特征。使用此列時(shí),模型將從 dataframe 中接收未更改的列值。
用法示例:
photo_count = feature_column.numeric_column('PhotoAmt') demo(photo_count)
2. 對(duì)數(shù)值列進(jìn)行分桶(或分段)
通常,如果不希望將數(shù)字直接輸入模型,而是根據(jù)數(shù)值范圍將其值分成不同的類別。例如,考慮代表一個(gè)人年齡的原始數(shù)據(jù)。我們可以用 分桶列(bucketized column)將年齡分成幾個(gè)分桶(buckets),而不是將年齡表示成數(shù)值列。請(qǐng)注意下面的 one-hot 數(shù)值表示每行匹配的年齡范圍。
用法示例:
age = feature_column.numeric_column('Age') age_buckets = feature_column.bucketized_column(age, boundaries=[1, 3, 5]) demo(age_buckets)
3. 處理分類列
在數(shù)據(jù)集中,如果分類列用字符串表示(例如 ‘fixed’,‘normal’,或 ‘reversible’)。我們無(wú)法直接將字符串提供給模型。相反,我們必須首先將它們映射到數(shù)值。分類詞匯列(categorical vocabulary columns)提供了一種用 one-hot 向量表示字符串的方法。詞匯表可以用 categorical_column_with_vocabulary_list 作為 list 傳遞,或者用 categorical_column_with_vocabulary_file 從文件中加載。
用法示例:
# 把分類字段轉(zhuǎn)換為分類列(categorical_column) animal_type = feature_column.categorical_column_with_vocabulary_list('Type', ['Cat', 'Dog']) # 把分類列(categorical_column)轉(zhuǎn)換為獨(dú)熱編碼 animal_type_one_hot = feature_column.indicator_column(animal_type) demo(animal_type_one_hot)
4. 使用Embedding處理分類列
假設(shè)我們不是只有幾個(gè)可能的字符串,而是每個(gè)類別有數(shù)千(或更多)值。 由于多種原因,隨著類別數(shù)量的增加,使用 one-hot 編碼訓(xùn)練神經(jīng)網(wǎng)絡(luò)變得不可行。我們可以使用嵌入列來(lái)克服此限制。嵌入列(embedding column)將數(shù)據(jù)表示為一個(gè)低維度密集向量,而非多維的 one-hot 向量,該低維度密集向量可以包含任何數(shù),而不僅僅是 0 或 1。嵌入的大?。ㄔ谙旅娴氖纠袨?8)是必須調(diào)整的參數(shù)。
關(guān)鍵點(diǎn):當(dāng)分類列具有許多可能的值時(shí),最好使用嵌入列。
用法示例:
# Notice the input to the embedding column is the categorical column we previously created breed1 = feature_column.categorical_column_with_vocabulary_list('Breed1', dataframe.Breed1.unique()) breed1_embedding = feature_column.embedding_column(breed1, dimension=8) demo(breed1_embedding)
5. 經(jīng)過(guò)哈希處理的特征列
表示具有大量數(shù)值的分類列的另一種方法是使用 categorical_column_with_hash_bucket。該特征列計(jì)算輸入的一個(gè)哈希值,然后選擇一個(gè) hash_bucket_size 分桶來(lái)編碼字符串。使用此列時(shí),您不需要提供詞匯表,并且可以選擇使 hash_buckets 的數(shù)量遠(yuǎn)遠(yuǎn)小于實(shí)際類別的數(shù)量以節(jié)省空間。
關(guān)鍵點(diǎn):該技術(shù)的一個(gè)重要缺點(diǎn)是可能存在沖突,不同的字符串被映射到同一個(gè)范圍。實(shí)際上,無(wú)論如何,經(jīng)過(guò)哈希處理的特征列對(duì)某些數(shù)據(jù)集都有效。
用法示例:
breed1_hashed = feature_column.categorical_column_with_hash_bucket('Breed1', hash_bucket_size=10) demo(feature_column.indicator_column(breed1_hashed))
6. 使用組合的特征列
將多種特征組合到一個(gè)特征中,稱為特征組合(feature crosses),它讓模型能夠?yàn)槊糠N特征組合學(xué)習(xí)單獨(dú)的權(quán)重。這里,我們將創(chuàng)建一個(gè) age 和 thal 組合的新特征。請(qǐng)注意,crossed_column 不會(huì)構(gòu)建所有可能組合的完整列表(可能非常大)。相反,它由 hashed_column 支持,因此可以選擇表的大小。
用法示例
crossed_feature = feature_column.crossed_column([age_buckets, animal_type], hash_bucket_size=10) demo(feature_column.indicator_column(crossed_feature))
經(jīng)過(guò)前面這些方法預(yù)處理之后,可以把它們拼接起來(lái)一起作為神經(jīng)網(wǎng)絡(luò)的輸入層。
到此這篇關(guān)于TensorFlow2中提供的幾種處理特征列的方法小結(jié)的文章就介紹到這了,更多相關(guān)TensorFlow2 處理特征列內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Tensorflow--取tensorf指定列的操作方式
- Tensorflow中批量讀取數(shù)據(jù)的案列分析及TFRecord文件的打包與讀取
- TensorFlow通過(guò)文件名/文件夾名獲取標(biāo)簽,并加入隊(duì)列的實(shí)現(xiàn)
- tensorflow 獲取checkpoint中的變量列表實(shí)例
- Tensorflow矩陣運(yùn)算實(shí)例(矩陣相乘,點(diǎn)乘,行/列累加)
- 利用Tensorflow的隊(duì)列多線程讀取數(shù)據(jù)方式
- tensorflow 變長(zhǎng)序列存儲(chǔ)實(shí)例
- 基于TensorFlow常量、序列以及隨機(jī)值生成實(shí)例
相關(guān)文章
Python編程快速上手——Excel到CSV的轉(zhuǎn)換程序案例分析
這篇文章主要介紹了Python Excel到CSV的轉(zhuǎn)換程序,結(jié)合具體案例形式分析了Python操作Excel到CSV轉(zhuǎn)換的操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2020-02-02在django view中給form傳入?yún)?shù)的例子
今天小編就為大家分享一篇在django view中給form傳入?yún)?shù)的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07pycharm通過(guò)anaconda安裝pyqt5的教程
PyCharm是一種Python IDE,帶有一整套可以幫助用戶在使用Python語(yǔ)言開(kāi)發(fā)時(shí)提高其效率的工具,這篇文章主要介紹了pycharm通過(guò)anaconda來(lái)安裝pyqt5的教程,需要的朋友可以參考下2020-03-03Python中eval()函數(shù)的詳細(xì)使用教程
eval函數(shù)在Python中具有非常重要的地位,熟練的使用eval函數(shù)能夠?yàn)槲覀兊腜ython編程提供很多的便利之處,下面這篇文章主要給大家介紹了關(guān)于Python中eval()函數(shù)的詳細(xì)使用,需要的朋友可以參考下2022-07-07python實(shí)現(xiàn)Excel多行多列的轉(zhuǎn)換的示例
本文主要介紹了python實(shí)現(xiàn)Excel多行多列的轉(zhuǎn)換的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03pytorch VGG11識(shí)別cifar10數(shù)據(jù)集(訓(xùn)練+預(yù)測(cè)單張輸入圖片操作)
這篇文章主要介紹了pytorch VGG11識(shí)別cifar10數(shù)據(jù)集(訓(xùn)練+預(yù)測(cè)單張輸入圖片操作),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06Python實(shí)現(xiàn)銀行賬戶資金交易管理系統(tǒng)
這篇文章主要介紹了Python銀行賬戶資金交易管理系統(tǒng),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01