在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

常見的11個分類變量編碼方法

新機器視覺 ? 來源:Deephub IMBA ? 作者:Deephub IMBA ? 2022-11-28 15:45 ? 次閱讀

機器學習算法只接受數值輸入,所以如果我們遇到分類特征的時候都會對分類特征進行編碼,本文總結了常見的11個分類變量編碼方法。

1、ONE HOT ENCODING

最流行且常用的編碼方法是One Hot Enoding。一個具有n個觀測值和d個不同值的單一變量被轉換成具有n個觀測值的d個二元變量,每個二元變量使用一位(0,1)進行標識。

例如:

e6159f14-6d8f-11ed-8abf-dac502259ad0.png

編碼后:

最簡單的實現是使用pandas的' get_dummies

new_df=pd.get_dummies(columns=[‘Sex’], data=df)

2、Label Encoding

為分類數據變量分配一個唯一標識的整數。這種方法非常簡單,但對于表示無序數據的分類變量是可能會產生問題。比如:具有高值的標簽可以比具有低值的標簽具有更高的優先級。

例如上面的數據,我們編碼后得到了下面的結果:

e623e682-6d8f-11ed-8abf-dac502259ad0.png

sklearn的LabelEncoder 可以直接進行轉換:

from sklearn.preprocessing import LabelEncoder le=LabelEncoder() df[‘Sex’]=le.fit_transform(df[‘Sex’])

3、Label Binarizer

LabelBinarizer 是一個用來從多類別列表創建標簽矩陣的工具類,它將把一個列表轉換成一個列數與輸入集合中惟一值的列數完全相同的矩陣。

例如這個數據:

轉化后結果為:

from sklearn.preprocessing import LabelBinarizer lb = LabelBinarizer() new_df[‘Sex’]=lb.fit_transform(df[‘Sex’])

4、Leave one out Encoding

Leave One Out 編碼時,目標分類特征變量對具有相同值的所有記錄會被平均以確定目標變量的平均值。在訓練數據集和測試數據集之間,編碼算法略有不同。因為考慮到分類的特征記錄被排除在訓練數據集外,因此被稱為“Leave One Out”。

對特定類別變量的特定值的編碼如下。

ci = (Σj != i tj / (n — 1 + R)) x (1 + εi) where ci = encoded value for ith record tj = target variable value for jth record n = number of records with the same categorical variable value R = regularization factor εi = zero mean random variable with normal distribution N(0, s)

例如下面的數據:

e634c3bc-6d8f-11ed-8abf-dac502259ad0.png

編碼后:

為了演示這個編碼過程,我們創建數據集:

importpandasaspd; data = [[‘1’, 120], [‘2’, 120], [‘3’, 140], [‘2’, 100], [‘3’, 70], [‘1’, 100],[‘2’, 60], [‘3’, 110], [‘1’, 100],[‘3’, 70] ] df = pd.DataFrame(data, columns = [‘Dept’,’Yearly Salary’])

然后進行編碼:

import category_encoders as ce tenc=ce.TargetEncoder() df_dep=tenc.fit_transform(df[‘Dept’],df[‘Yearly Salary’]) df_dep=df_dep.rename({‘Dept’:’Value’}, axis=1) df_new = df.join(df_dep)

這樣就得到了上面的結果。

5、Hashing

當使用哈希函數時,字符串將被轉換為一個惟一的哈希值。因為它使用的內存很少可以處理更多的分類數據。對于管理機器學習中的稀疏高維特征,特征哈希是一種有效的方法。它適用于在線學習場景,具有快速、簡單、高效、快速的特點。

例如下面的數據:

e64761ca-6d8f-11ed-8abf-dac502259ad0.png

編碼后:

e653dbc6-6d8f-11ed-8abf-dac502259ad0.png

代碼如下:

from sklearn.feature_extraction import FeatureHasher # n_features contains the number of bits you want in your hash value. h = FeatureHasher(n_features = 3, input_type =’string’) # transforming the column after fitting hashed_Feature = h.fit_transform(df[‘nom_0’]) hashed_Feature = hashed_Feature.toarray() df = pd.concat([df, pd.DataFrame(hashed_Feature)], axis = 1) df.head(10)

6、Weight of Evidence Encoding

(WoE) 開發的主要目標是創建一個預測模型,用于評估信貸和金融行業的貸款違約風險。證據支持或駁斥理論的程度取決于其證據權重或 WOE。

如果P(Goods) / P(Bads) = 1,則WoE為0。如果這個組的結果是隨機的,那么P(Bads) > P(Goods),比值比為1,證據的權重(WoE)為0。如果一組中P(Goods) > P(bad),則WoE大于0。

因為Logit轉換只是概率的對數,或ln(P(Goods)/P(bad)),所以WoE非常適合于邏輯回歸。當在邏輯回歸中使用wo編碼的預測因子時,預測因子被處理成與編碼到相同的尺度,這樣可以直接比較線性邏輯回歸方程中的變量。

例如下面的數據:

會被編碼為:

e69af4fc-6d8f-11ed-8abf-dac502259ad0.png

代碼如下:

from category_encoders import WOEEncoder df = pd.DataFrame({‘cat’: [‘a’, ‘b’, ‘a’, ‘b’, ‘a’, ‘a’, ‘b’, ‘c’, ‘c’], ‘target’: [1, 0, 0, 1, 0, 0, 1, 1, 0]}) woe = WOEEncoder(cols=[‘cat’], random_state=42) X = df[‘cat’] y = df.target encoded_df = woe.fit_transform(X, y)

7、Helmert Encoding

Helmert Encoding將一個級別的因變量的平均值與該編碼中所有先前水平的因變量的平均值進行比較。

反向 Helmert 編碼是類別編碼器中變體的另一個名稱。它將因變量的特定水平平均值與其所有先前水平的水平的平均值進行比較。

e6adb0ba-6d8f-11ed-8abf-dac502259ad0.png

會被編碼為:

代碼如下:

import category_encoders as ce encoder=ce.HelmertEncoder(cols=’Dept’) new_df=encoder.fit_transform(df[‘Dept’]) new_hdf=pd.concat([df,new_df], axis=1) new_hdf

8、Cat Boost Encoding

是CatBoost編碼器試圖解決的是目標泄漏問題,除了目標編碼外,還使用了一個排序概念。它的工作原理與時間序列數據驗證類似。當前特征的目標概率僅從它之前的行(觀測值)計算,這意味著目標統計值依賴于觀測歷史。

TargetCount:某個類別特性的目標值的總和(到當前為止)。

Prior:它的值是恒定的,用(數據集中的觀察總數(即行))/(整個數據集中的目標值之和)表示。

featucalculate:到目前為止已經看到的、具有與此相同值的分類特征的總數。

編碼后的結果如下:

代碼:

import category_encoders category_encoders.cat_boost.CatBoostEncoder(verbose=0, cols=None, drop_invariant=False, return_df=True, handle_unknown=’value’, handle_missing=’value’, random_state=None, sigma=None, a=1) target = df[[‘target’]] train = df.drop(‘target’, axis = 1) # Define catboost encoder cbe_encoder = ce.cat_boost.CatBoostEncoder() # Fit encoder and transform the features cbe_encoder.fit(train, target) train_cbe = cbe_encoder.transform(train)

9、James Stein Encoding

James-Stein 為特征值提供以下加權平均值:

觀察到的特征值的平均目標值。

平均期望值(與特征值無關)。

James-Stein 編碼器將平均值縮小到全局的平均值。該編碼器是基于目標的。但是James-Stein 估計器有缺點:它只支持正態分布。

它只能在給定正態分布的情況下定義(實時情況并非如此)。為了防止這種情況,我們可以使用 beta 分布或使用對數-比值比轉換二元目標,就像在 WOE 編碼器中所做的那樣(默認使用它,因為它很簡單)。

10、M Estimator Encoding:

Target Encoder的一個更直接的變體是M Estimator Encoding。它只包含一個超參數m,它代表正則化冪。m值越大收縮越強。建議m的取值范圍為1 ~ 100。

11、 Sum Encoder

Sum Encoder將類別列的特定級別的因變量(目標)的平均值與目標的總體平均值進行比較。在線性回歸(LR)的模型中,Sum Encoder和ONE HOT ENCODING都是常用的方法。兩種模型對LR系數的解釋是不同的,Sum Encoder模型的截距代表了總體平均值(在所有條件下),而系數很容易被理解為主要效應。在OHE模型中,截距代表基線條件的平均值,系數代表簡單效應(一個特定條件與基線之間的差)。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編碼
    +關注

    關注

    6

    文章

    963

    瀏覽量

    55318
  • 變量
    +關注

    關注

    0

    文章

    614

    瀏覽量

    28742

原文標題:11 個常見的分類特征的編碼技術

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    各類電機有沒有編碼器?如何分類

    工業電機中,有些電機自帶編碼器,而有些則不帶。編碼器通常用于提供電機的位置、速度或方向等反饋信息,以實現更精確的控制。以下是對電機及其編碼器的分類和特點的詳細分析: ? 一、電機
    的頭像 發表于 03-16 11:09 ?355次閱讀

    編碼常見的故障問題及案例分析

    編碼器作為自動化控制系統中的重要組件,負責將機械位移轉換為電信號,以供上位機、PLC或驅動器等設備讀取和處理。然而,在使用過程中,編碼器可能會遇到多種故障。以下是對編碼常見故障及案例
    的頭像 發表于 03-07 11:05 ?676次閱讀

    常見xgboost錯誤及解決方案

    XGBoost(eXtreme Gradient Boosting)是一種流行的機器學習算法,用于解決分類和回歸問題。盡管它非常強大和靈活,但在使用過程中可能會遇到一些常見的錯誤。以下是一些常見
    的頭像 發表于 01-19 11:22 ?1811次閱讀

    bcd編碼的優缺點 bcd編碼常見錯誤

    。以下是BCD編碼的一些優缺點以及常見的錯誤: BCD編碼的優點: 直觀易懂 :BCD編碼直接將十進制數轉換為二進制,對于人類來說非常直觀,易于理解和檢查。 減少錯誤 :由于BCD
    的頭像 發表于 12-20 17:17 ?1158次閱讀

    編碼常見故障及解決方法

    ,磁編碼器也不例外。以下是一些磁編碼器的常見故障及其解決方法: 1. 信號輸出異常 故障現象: 編碼器輸出信號不穩定或無輸出。 信號輸出與實
    的頭像 發表于 11-23 09:11 ?1346次閱讀

    如何優化base64編碼的性能

    Base64編碼是一種廣泛使用的編碼方法,用于將二進制數據轉換為ASCII字符串。它在許多場景中非常有用,例如在電子郵件、網頁和存儲系統中傳輸二進制數據。然而,Base64編碼和解碼可能會對性能
    的頭像 發表于 11-10 14:17 ?1779次閱讀

    base64與URL編碼的區別和聯系

    景和特點。 Base64編碼 Base64是一種基于64可打印字符來表示二進制數據的編碼方法。它最初被設計用于在電子郵件中傳輸二進制數據,但后來也被廣泛應用于其他領域,如網絡通信、數據存儲等。 特點 兼容性 :Base64
    的頭像 發表于 11-10 11:11 ?1240次閱讀

    base64編碼和解碼的使用方法

    Base64編碼是一種基于64可打印字符來表示二進制數據的編碼方法。它將每3字節的二進制數據編碼為4
    的頭像 發表于 11-10 10:48 ?3436次閱讀

    編碼常見的類型有哪些?

    不同的分類標準,可以有以下幾種主要類型: 一、按工作原理分類 增量式編碼器 : 將位移轉換成周期性的電信號,再把這個電信號轉變成計數脈沖,用脈沖的個數表示位移的大小。 增量式編碼器在旋
    的頭像 發表于 10-25 09:30 ?1850次閱讀

    Linux環境變量配置方法

    Linux上環境變量配置分為設置永久變量和臨時變量兩種。環境變量設置方法同時要考慮環境Shell類型,不同類型的SHELL設置臨時
    的頭像 發表于 10-23 13:39 ?461次閱讀

    雷達的基本分類方法

    電子發燒友網站提供《雷達的基本分類方法.pdf》資料免費下載
    發表于 09-11 09:09 ?6次下載

    伺服控制系統的分類方式和常見伺服控制系統介紹

    伺服控制系統是一種能對試驗裝置的機械運動按預定要求進行自動控制的操作系統。伺服系統的分類方法很多,常見分類方法有以下三種:1、按被控量參數
    的頭像 發表于 08-26 17:46 ?1142次閱讀
    伺服控制系統的<b class='flag-5'>分類</b>方式和<b class='flag-5'>常見</b>伺服控制系統介紹

    編碼器的常見故障及解決方法

    編碼器作為工業自動化系統中不可或缺的一部分,其穩定性和可靠性對于整個系統的運行至關重要。然而,在實際應用中,編碼器也時常會遇到各種故障,導致系統性能下降甚至無法正常運行。本文將詳細探討編碼器的
    的頭像 發表于 05-29 16:01 ?5775次閱讀

    旋轉編碼器的常見類型

    詳細介紹旋轉編碼器的常見類型,包括增量式編碼器和絕對式編碼器兩大類,并對它們的特點、工作原理、應用場合等進行深入探討。
    的頭像 發表于 05-29 15:59 ?1282次閱讀

    波形編碼是?常見的波形編碼方法主要包括哪些?

    波形編碼是基于對語音信號波形的數字化處理,試圖使處理后重建的語音信號波形與原語音信號波形保持一致。
    的頭像 發表于 05-01 17:17 ?3604次閱讀
    波形<b class='flag-5'>編碼</b>是?<b class='flag-5'>常見</b>的波形<b class='flag-5'>編碼方法</b>主要包括哪些?
    主站蜘蛛池模板: 综合激情网站 | 狠狠操狠狠 | 夜夜摸夜夜操 | 老师您的兔子好软水好多动漫视频 | h视频在线观看免费网站 | 一区二区免费 | 色多多视频在线播放 | 国产做a爰片久久毛片a | 日本www在线观看 | www亚洲免费| 亚洲网站免费看 | 免费抓胸吻胸激烈视频网站 | 成人国产三级在线播放 | 中日韩黄色大片 | 色婷婷一区二区三区四区成人网 | 性夜黄a爽爽免费视频国产 羞羞答答xxdd影院欧美 | 美女扒开尿口给男人看大全 | 热re99久久精品国产99热 | 精品新一区二区三区四区 | 日日躁夜夜躁狠狠天天 | 性生活黄色毛片 | 全免费a级毛片免费看不卡 全日本爽视频在线 | 天天碰天天操 | 天天色综合6 | 午夜看片在线观看 | 99久久久免费精品免费 | 欧美色图在线视频 | 种子天堂bt磁力在线资源 | 老师今晚让你爽个够 | 色成人亚洲| 手机在线观看视频你懂的 | 国产女人18毛片水真多18精品 | 午夜影视啪啪免费体验区入口 | 欧美日韩国产成人精品 | 狠狠色丁香久久综合五月 | 色五月在线视频 | 午夜欧美精品久久久久久久久 | 四虎国产精品免费观看 | 亚洲精品美女久久久 | 欧美性色综合网 | 精品精品国产高清a毛片牛牛 |