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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

一日一学--如何对数值型特征进行分桶

發布時間:2023/12/10 编程问答 80 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一日一学--如何对数值型特征进行分桶 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊上方“算法猿的成長“,關注公眾號,選擇加“星標“或“置頂”

總第 120 篇文章,本文大約 1200 字,閱讀大約需要 3?分鐘

今天這篇文章主要是介紹在特征工程中,對數值型特征進行分桶操作的方法。


簡介

分桶是離散化的常用方法,將連續型特征離線化為一系列 0/1 的離散特征;

當數值特征跨越不同的數量級的時候,模型可能會只對大的特征值敏感,這種情況可以考慮分桶操作。

分桶操作可以看作是對數值變量的離散化,之后通過二值化進行 one-hot 編碼。

分桶的數量和寬度可以根據業務領域的經驗來指定,但也有一些常規的做法:

  • 等距分桶。每個桶的寬度是固定的,即值域范圍是固定的,比如是 0-99,100-199,200-299等;這種適合樣本分布比較均勻的情況,避免出現有的桶的數量很少,而有的桶數量過多的情況;

  • 等頻分桶,也稱為分位數分桶。也就是每個桶有一樣多的樣本,但可能出現數值相差太大的樣本放在同個桶的情況;

  • 模型分桶。使用模型找到最佳分桶,比如聚類,將特征分成多個類別,或者樹模型,這種非線性模型天生具有對連續型特征切分的能力,利用特征分割點進行離散化。

  • 分桶的優點

    • 分桶后得到的稀疏向量,內積乘法運算速度更快,計算結果更方便存儲;

    • 對異常數據有很強的魯棒性

    需要注意的是

    • 要讓桶內的屬性取值變化對樣本標簽的影響基本在一個不大的范圍,即不能出現單個桶內,樣本標簽輸出變化很大的情況;

    • 每個桶內都有足夠的樣本,如果樣本太少,隨機性太大,不具有統計意義上的說服力;

    • 每個桶內的樣本進行分布均勻;

    等距分桶

    對于等距分桶的操作:

    • 當數字跨越多個數量級時,最好用10個冪(或任何常數的冪)來分組:0-9、10-99、100-999、100-9999等。

    • 容器寬度呈指數增長,從O(10)、O(100)到O(1000)和以上。要從計數映射到bin,取計數的log值

    對數變換是處理具有重尾分布的正數的有力工具。(重尾分布在尾部范圍內的概率比高斯分布的概率大)。它將分布在高端的長尾壓縮成較短的尾部,并將低端擴展成較長的頭部。

    下面是展示的代碼例子:

    數值較少的例子:

    import numpy as np # 生成 20 個 0-99 之間的隨機整數 small_counts?=?np.random.randint(0,?100,?20)# 進行分箱操作, 通過對數據除以 10 分到 0-9 總共 9 個箱里, # 返回的結果就是對應數據應該劃分到的箱的編號 np.floor_divide(small_counts,?10)

    數據之間的間隔較大的例子:

    # 構造一個間隔更大的數組例子,可以通過取對數 log10 來進行分箱 large_counts = [296, 8286, 64011, 80, 3, 725, 867, 2215, 7689, 11495, 91897, 44, 28, 7971, 926, 122, 22222] np.floor(np.log10(large_counts))

    等頻分桶

    對于等頻分桶,也稱為按分位數分桶,為了計算分位數和映射數據到分位數箱,我們可以使用 Pandas 庫。pandas.DataFrame.quantile 和 pandas.Series.quantile 用于計算分位數。pandas.qcut 將數據映射到所需數量的分位數。

    代碼例子如下:

    large_counts = [296, 8286, 64011, 80, 3, 725, 867, 2215, 7689, 11495, 91897, 44, 28, 7971, 926, 122, 22222] # 將數據映射到所需數量的分位數 pd.qcut(large_counts, 4, labels=False) # 計算指定分位數點的數據 large_counts_series = pd.Series(large_counts) large_counts_series.quantile([0.25,?0.5,?0.75])

    參考文章:

    • 淺談微視推薦系統中的特征工程

    • http://fe4ml.apachecn.org/#/docs/2.簡單數字的奇特技巧



    精選AI文章

    1.?機器學習入門學習資料推薦

    2.初學者的機器學習入門實戰教程!

    3.常用機器學習算法匯總比較(完)

    4.特征工程之數據預處理(上)

    5.實戰|手把手教你訓練一個基于Keras的多標簽圖像分類器

    精選python文章

    1.?Python 基礎入門--簡介和環境配置

    2.?python版代碼整潔之道

    3.?快速入門 Jupyter notebook

    4.?Jupyter 進階教程

    5.?10個高效的pandas技巧

    精選教程資源文章

    1.?[資源分享] TensorFlow 官方中文版教程來了

    2.?[資源]推薦一些Python書籍和教程,入門和進階的都有!

    3.?[Github項目推薦] 推薦三個助你更好利用Github的工具

    4.?Github上的各大高校資料以及國外公開課視頻

    5.?GitHub上有哪些比較好的計算機視覺/機器視覺的項目?

    歡迎關注我的微信公眾號--算法猿的成長,或者掃描下方的二維碼,大家一起交流,學習和進步!

    ?

    如果覺得不錯,在看、轉發就是對小編的一個支持!

    總結

    以上是生活随笔為你收集整理的一日一学--如何对数值型特征进行分桶的全部內容,希望文章能夠幫你解決所遇到的問題。

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