<cite id="ffb66"></cite><cite id="ffb66"><track id="ffb66"></track></cite>
      <legend id="ffb66"><li id="ffb66"></li></legend>
      色婷婷久,激情色播,久久久无码专区,亚洲中文字幕av,国产成人A片,av无码免费,精品久久国产,99视频精品3
      網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

      機(jī)器學(xué)習(xí)特征工程:分類變量的數(shù)值化處理方法

      0
      分享至

      編碼是機(jī)器學(xué)習(xí)流程里最容易被低估的環(huán)節(jié)之一,模型沒辦法直接處理文本形式的分類數(shù)據(jù),尺寸(Small/Medium/Large)、顏色(Red/Blue/Green)、城市、支付方式等都是典型的分類特征,必須轉(zhuǎn)成數(shù)值才能輸入到模型中。



      那么問題來了:為什么不直接把 Red 編成 1,Blue 編成 2?這個(gè)做法看起來簡單粗暴,但其實(shí)藏著大坑。下面用一個(gè)小數(shù)據(jù)集來說明。

      數(shù)據(jù)集概述

      Feature | Description
      -------------------|----------------------------------------------------------
      customer_id | Unique customer identifier
      gender | Male or Female
      education_level | High School → Associate → Bachelor's → Master's → PhD
      employment_status | Full-time, Part-time, Self-employed, Unemployed
      city | Customer's city (50+ US cities)
      product_category | Electronics, Clothing, Books, Sports, Home & Garden, Beauty, Food & Beverage
      payment_method | Credit Card, Debit Card, PayPal, Cash
      customer_tier | Bronze → Silver → Gold → Platinum
      satisfaction_level | Dissatisfied → Neutral → Satisfied → Very Satisfied
      credit_score_range | Poor → Fair → Good → Very Good → Excellent
      purchase_amount | Purchase amount in USD
      will_return | Yes or No (target variable)
      Ordinal Encoding

      Ordinal Encoding 思路很簡單:給每個(gè)類別分配一個(gè)數(shù)字,但是模型會(huì)把這些數(shù)字當(dāng)作有序的。

      假設(shè)對 payment_method 做編碼:Cash = 1,PayPal = 2。模型會(huì)認(rèn)為 Cash < PayPal,仿佛 PayPal 比 Cash "更好" 或 "更大"。但支付方式之間根本沒有這種大小關(guān)系因?yàn)樗鼈冎皇遣煌倪x項(xiàng)而已。

      什么時(shí)候 Ordinal Encoding 才合適?當(dāng)數(shù)據(jù)本身就存在真實(shí)的順序關(guān)系時(shí)。比如 education_level:High School < Associate < Bachelor's < Master's < PhD。這是客觀存在的遞進(jìn)關(guān)系,用數(shù)字表示完全沒問題,模型的理解也是對的。

      所以 Ordinal Encoding 的使用場景很明確:只用于那些排名確實(shí)有意義的特征。

      from sklearn.preprocessing import OrdinalEncoder
      ordEnc = OrdinalEncoder()
      print(ordEnc.fit_transform(data[["education_level"]])[:5])
      # Output
      """
      [[1.]
      [2.]
      [3.]
      [4.]
      [2.]]
      """
      One-Hot Encoding

      One-Hot Encoding 換了個(gè)思路:不用數(shù)字而是給每個(gè)類別創(chuàng)建一列。payment_method 有 4 個(gè)值,就變成 4 列,每行只有一個(gè)位置是 1,其余全是 0。

      | payment_cash | payment_credit_card | payment_debit_card | payment_paypal |
      |--------------|---------------------|--------------------|----------------|
      | 1 | 0 | 0 | 0 |
      | 0 | 1 | 0 | 0 |
      | 0 | 0 | 1 | 0 |
      | 0 | 0 | 0 | 1 |

      這樣做的好處是消除了虛假的順序關(guān)系,所有類別被平等對待和線性模型配合得也很好。

      那么代價(jià)是什么?維度會(huì)膨脹。customer_tier 和 payment_method 各 4 個(gè)值,合起來就是 8 列。如果遇到城市這種特征,50 多個(gè)類別直接炸成 50 多列,維度災(zāi)難就來了。

      from sklearn.preprocessing import OneHotEncoder
      oneEnc = OneHotEncoder()
      print(oneEnc.fit_transform(data[["customer_tier", "payment_method"]]).toarray()[:5])
      #output
      """
      [[0. 1. 0. 0. 0. 1. 0. 0.]
      [0. 0. 0. 1. 0. 0. 1. 0.]
      [0. 0. 1. 0. 0. 0. 0. 1.]
      [0. 1. 0. 0. 0. 1. 0. 0.]
      [1. 0. 0. 0. 1. 0. 0. 0.]]
      """
      Target Encoding

      面對高基數(shù)特征(比如 City 有 50 多個(gè)值)One-Hot Encoding 會(huì)把特征空間撐得太大,Target Encoding 的做法是:用每個(gè)類別對應(yīng)的目標(biāo)變量均值來替換。也叫 Mean Encoding。

      舉個(gè)例子,目標(biāo)變量是 will_return(Yes = 1,No = 0):

      | City | will_return |
      |-----------|-------------|
      | Austin | 1 |
      | Austin | 1 |
      | New York | 1 |
      | New York | 0 |
      | New York | 0 |
      | New York | 0 |
      | New York | 1 |

      計(jì)算每個(gè)城市的目標(biāo)均值:Austin → (1 + 1) / 2 = 1.0,New York → (1 + 0 + 0 + 0 + 1) / 5 = 0.4,這樣得到的編碼結(jié)果就是:

      | City | Encoded Value |
      |----------|----------------|
      | Austin | 1.0 |
      | New York | 0.4 |

      這里有一個(gè)坑,Austin 只出現(xiàn)了 2 次而且剛好都是正例,編碼值直接變成 1.0。模型可能會(huì) "學(xué)到" 一個(gè)規(guī)律:看到 Austin 就預(yù)測 will_return = Yes。

      但這個(gè) "規(guī)律" 完全是數(shù)據(jù)量不足造成的假象。樣本太少均值就很不可靠。

      Smoothing 的思路是把類別均值往全局均值方向 "拉" 一拉。公式:

      Encoded Value = (w * Category Mean) + ((1 - w) * Global Mean)

      其中 Category Mean 是該類別的目標(biāo)均值Global Mean 是整個(gè)數(shù)據(jù)集的目標(biāo)均值,w 是一個(gè)和樣本量相關(guān)的權(quán)重。樣本越少w 越小,編碼值就越接近全局均值;樣本越多類別自己的均值就越占主導(dǎo)。這能有效抑制小樣本帶來的過擬合。

      另一個(gè)問題就是 Data Leakage。如果用全量數(shù)據(jù)計(jì)算編碼值再把這個(gè)編碼喂給模型,模型等于直接 "看到了" 答案的統(tǒng)計(jì)信息。比如模型發(fā)現(xiàn) City = 0.34 對應(yīng)的樣本大概率是 will_return = Yes,那它干脆走捷徑,不從其他特征里學(xué)東西了。

      所以就要引入交叉驗(yàn)證,以 5 折為例:把數(shù)據(jù)分成 5 份,對第 1 份的數(shù)據(jù),用第 2 到第 5 份來計(jì)算編碼;對第 2 份的數(shù)據(jù),用第 1、3、4、5 份來計(jì)算編碼;以此類推。每個(gè)樣本的編碼值都來自于它 "沒見過" 的數(shù)據(jù),泄露就切斷了。

      但是副作用是同一個(gè)城市在不同折里的編碼值會(huì)略有差異:New York 在 Fold 1 里可能是 0.50,在 Fold 2 里是 0.45。但這反而是好事,這樣可以讓模型被迫學(xué)習(xí)更一般化的模式而不是死記某個(gè)精確數(shù)值。

      Target Encoding 的優(yōu)點(diǎn):避免維度爆炸,適合高基數(shù)特征,還能把目標(biāo)變量的統(tǒng)計(jì)信息編進(jìn)去。

      但用的時(shí)候得小心:必須加 Smoothing 防止小樣本過擬合,必須用交叉驗(yàn)證防止數(shù)據(jù)泄露。

      from sklearn.preprocessing import TargetEncoder
      data["will_return_int"] = data["will_return"].map({"Yes": 1, "No": 0})
      tarEnc = TargetEncoder(smooth="auto", cv=5) # Those are the default value
      print(data[["city"]][:5])
      print(tarEnc.fit_transform(data[["city"]], data["will_return_int"])[:5])
      """
      city
      0 Houston
      1 Phoenix
      2 Chicago
      3 Phoenix
      4 Phoenix
      [[0.85364466]
      [0.69074308]
      [0.65024828]
      [0.74928653]
      [0.81359495]]
      """
      總結(jié)

      三種編碼方法各有適用場景,選擇取決于特征本身的性質(zhì)。

      實(shí)際操作中可以這樣判斷:特征有天然順序就用 Ordinal Encoding;沒有順序、類別數(shù)量也不多就用 One-Hot Encoding;類別太多就上 Target Encoding,記得配合 Smoothing 和交叉驗(yàn)證。

      真實(shí)項(xiàng)目里,一個(gè)數(shù)據(jù)集往往會(huì)同時(shí)用到這三種方法。

      https://avoid.overfit.cn/post/eeabb03fba684a88a6ccce132f4852b0

      作者: adham ayman

      特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

      Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

      相關(guān)推薦
      熱點(diǎn)推薦
      去日本才發(fā)現(xiàn):年輕人都不穿耐克、阿迪,滿街都是Asics、鬼塚虎

      去日本才發(fā)現(xiàn):年輕人都不穿耐克、阿迪,滿街都是Asics、鬼塚虎

      白宸侃片
      2026-02-24 15:45:22
      巡回賽三連?。⊥跣黎?-2速敗出局,無緣印第安維爾斯32強(qiáng)

      巡回賽三連??!王欣瑜0-2速敗出局,無緣印第安維爾斯32強(qiáng)

      全景體育V
      2026-03-07 07:03:15
      馬克龍就伊朗局勢表態(tài):法國不會(huì)在中東“打仗”

      馬克龍就伊朗局勢表態(tài):法國不會(huì)在中東“打仗”

      參考消息
      2026-03-06 12:58:11
      沒想到竟然這么多工作需要保密的!網(wǎng)友:不讓看非看被一槍斃了

      沒想到竟然這么多工作需要保密的!網(wǎng)友:不讓看非看被一槍斃了

      另子維愛讀史
      2025-12-08 20:58:22
      曝許家印香港大宅挖出460平地牢,潛伏15年才被發(fā)現(xiàn),是為藏啥?

      曝許家印香港大宅挖出460平地牢,潛伏15年才被發(fā)現(xiàn),是為藏啥?

      林子說事
      2026-03-07 10:33:20
      速度滑冰世錦賽:寧忠?guī)r收獲短距離全能、男子1000米兩項(xiàng)季軍

      速度滑冰世錦賽:寧忠?guī)r收獲短距離全能、男子1000米兩項(xiàng)季軍

      懂球帝
      2026-03-07 07:21:57
      萬萬沒想到!64歲的張凱麗,會(huì)因兩會(huì)上的一個(gè)提案,實(shí)現(xiàn)口碑反轉(zhuǎn)

      萬萬沒想到!64歲的張凱麗,會(huì)因兩會(huì)上的一個(gè)提案,實(shí)現(xiàn)口碑反轉(zhuǎn)

      阿雹娛樂
      2026-03-07 04:01:50
      奧運(yùn)會(huì)為什么發(fā)避孕套?難道運(yùn)動(dòng)員都帶伴侶嗎?看完你就明白了!

      奧運(yùn)會(huì)為什么發(fā)避孕套?難道運(yùn)動(dòng)員都帶伴侶嗎?看完你就明白了!

      南權(quán)先生
      2026-02-13 15:17:51
      血淚教訓(xùn)!不能和身邊人訴說的3件事——父母妻兒也不能說

      血淚教訓(xùn)!不能和身邊人訴說的3件事——父母妻兒也不能說

      風(fēng)起見你
      2026-03-07 14:57:38
      女生主動(dòng)起來有多黏人?網(wǎng)友:這些女的太開放了

      女生主動(dòng)起來有多黏人?網(wǎng)友:這些女的太開放了

      帶你感受人間冷暖
      2026-01-27 00:20:06
      絕了絕了!塔圖姆醫(yī)學(xué)奇跡!首秀大戰(zhàn)NBA狀元郎

      絕了絕了!塔圖姆醫(yī)學(xué)奇跡!首秀大戰(zhàn)NBA狀元郎

      籃球?qū)崙?zhàn)寶典
      2026-03-06 17:29:14
      老板娘說她喜歡看書,我說我喜歡看八字可以嗎?

      老板娘說她喜歡看書,我說我喜歡看八字可以嗎?

      太急張三瘋
      2026-03-07 14:40:03
      和訊投顧劉芳新:重磅利好來襲!下周這個(gè)方向即將起爆!

      和訊投顧劉芳新:重磅利好來襲!下周這個(gè)方向即將起爆!

      和訊網(wǎng)
      2026-03-07 13:50:05
      3勝11負(fù)!被勇士碾壓!申京28分遭棄用

      3勝11負(fù)!被勇士碾壓!申京28分遭棄用

      籃球教學(xué)論壇
      2026-03-07 14:53:45
      15年前,那個(gè)當(dāng)著全世界喝下核污染水的日本官員,如今還活著嗎

      15年前,那個(gè)當(dāng)著全世界喝下核污染水的日本官員,如今還活著嗎

      小蜜情感說
      2026-03-06 16:52:42
      張?zhí)m灣灣之行,最寒心的不是兒子抱怨,而是兒媳的冷漠態(tài)度

      張?zhí)m灣灣之行,最寒心的不是兒子抱怨,而是兒媳的冷漠態(tài)度

      鄉(xiāng)野小珥
      2026-03-06 14:13:37
      一段“冒牌江浙滬獨(dú)女”視頻,被全網(wǎng)嘲笑:低認(rèn)知就別硬湊熱度了

      一段“冒牌江浙滬獨(dú)女”視頻,被全網(wǎng)嘲笑:低認(rèn)知就別硬湊熱度了

      妍妍教育日記
      2026-02-27 18:15:43
      身價(jià)暴漲3倍封神!2570萬血虧,曼聯(lián)悔到骨子里

      身價(jià)暴漲3倍封神!2570萬血虧,曼聯(lián)悔到骨子里

      卿子書
      2026-03-06 10:31:22
      百年前20萬白俄難民逃往中國,后代無比驕傲地說:我們是中國人!

      百年前20萬白俄難民逃往中國,后代無比驕傲地說:我們是中國人!

      阿器談史
      2026-03-06 19:45:53
      你身邊有把一手好牌打的稀爛的人嗎?網(wǎng)友:都是上輩子欠人家的

      你身邊有把一手好牌打的稀爛的人嗎?網(wǎng)友:都是上輩子欠人家的

      帶你感受人間冷暖
      2026-01-21 00:15:05
      2026-03-07 15:35:00
      deephub incentive-icons
      deephub
      CV NLP和數(shù)據(jù)挖掘知識(shí)
      1940文章數(shù) 1456關(guān)注度
      往期回顧 全部

      科技要聞

      OpenClaw爆火,六位"養(yǎng)蝦人"自述與AI共生

      頭條要聞

      伊朗大使:250年歷史的美國怎能挑釁3000年歷史的伊朗

      頭條要聞

      伊朗大使:250年歷史的美國怎能挑釁3000年歷史的伊朗

      體育要聞

      塔圖姆歸來:凱爾特人的春之綠

      娛樂要聞

      周杰倫田馥甄的“JH戀” 被扒得底朝天

      財(cái)經(jīng)要聞

      針對"不敢休、不讓休"怪圈 國家出手了

      汽車要聞

      逃離ICU,上汽通用“止血”企穩(wěn)

      態(tài)度原創(chuàng)

      數(shù)碼
      藝術(shù)
      房產(chǎn)
      旅游
      健康

      數(shù)碼要聞

      蘋果M5 Pro芯片GeekBench跑分曝光:多核破2.8萬

      藝術(shù)要聞

      Mark Grantham | 城市街景

      房產(chǎn)要聞

      傳統(tǒng)學(xué)區(qū)房熄火?2月海口二手房爆火的板塊竟然是…

      旅游要聞

      重報(bào)觀察|掘金“花”經(jīng)濟(jì)!“賞花+”拓展多元文旅消費(fèi)

      轉(zhuǎn)頭就暈的耳石癥,能開車上班嗎?

      無障礙瀏覽 進(jìn)入關(guān)懷版