日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

编码方式_机器学习中常用的编码方式

發布時間:2025/4/5 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编码方式_机器学习中常用的编码方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在建模的時候,有時各個feature不是數值型或者連續數值分類,這種情況下需要對這些特征值進行編碼,sklearn中提供了多種編碼方法。

1.??LabelEncoder?

LabelEncoder可以對不連續的數值編碼,例如:

from?sklearn import?preprocessing
encode = preprocessing.LabelEncoder()
test = [1,2,3,2,5]
encode.fit(test)
encode.transform(test)

返回:

?array([0, 1, 2, 1, 3])

對文本編碼:

from?sklearn import?preprocessing
encode = preprocessing.LabelEncoder()
test = ['peking', 'shanghai', 'peking']
encode.fit(test)
encode.transform(test)

返回:

array([0, 1, 0])

2.? OneHotEncoder?

對于有的數據,如果我們簡單的用數值替換,這些數值大小會影響到權重矩陣的計算。其中一個解決方法就是采用OneHotEncoder,這種表示方式將每一個分類特征變量可能的取值轉變成m個二值特征,對于每一條數據這m個值中僅有一個特征值為1,其他的都為0。比如:

from?sklearn.preprocessing import?OneHotEncoder

?data = [['peking',40],
????????['shanghai',22],
????????['peking',50]]

data = pd.DataFrame(data,columns=['city','number'])

# 先轉為數值型
uniq_type = data['city'].unique()
for?j in?range(len(uniq_type)):
????data['city'] = data['city'].apply(lambda?x:j if?x==uniq_type[j] else?x)

data2 = data[['city']]
encode2 = OneHotEncoder()
encode2.fit(data2)
encode2.transform(data2).toarray()

返回:

array([[1., 0.],

? ? ? ?[0., 1.],

? ? ? ?[1., 0.]])

這樣將第一列分類特征變成了兩列。效果類似于:

3.? CountEncoder?

Count encoding是將分類特征替換為它們的出現次數,比如某個分類中'Peking'出現了10次,那么'Peking'就會被替換為10. 我們可以用`categorical-encodings`包中的`CountEncoder`實現。

import?category_encoders as?ce
features = ['Peking', 'Peking', 'Shanghai', 'Peking', 'Guangzhou', 'Shanghai']
count_enc = ce.CountEncoder()
count_enc.fit_transform(features)

返回(第一列是索引):

0? 3

1? 3

2? 2

3? 3

4? 1

5? 2

4.? TargetEncoder?

Target encoding其實就是將分類特征替換為對應目標值的后驗概率。比如以下例子:

第三列編碼值的計算過程其實很簡單,比如說cat出現次數是5次,5次中target是1的次數有2次,因為編碼值為0.4 。

import?pandas as?pd
from?category_encoders import?TargetEncoder

encoder = TargetEncoder()
df['Encoded Animal '] = encoder.fit_transform(df['Animal'], df['Target'])

參考:https://medium.com/analytics-vidhya/target-encoding-vs-one-hot-encoding-with-simple-examples-276a7e7b3e64

總結

以上是生活随笔為你收集整理的编码方式_机器学习中常用的编码方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。