衡阳派盒市场营销有限公司

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

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

3天內不再提示

XGBoost中無需手動編碼的分類特征

jf_pJlTbmA9 ? 來源:NVIDIA ? 作者:NVIDIA ? 2023-07-05 16:30 ? 次閱讀

XGBoost 是一種基于決策樹的集成 機器學習算法,基于梯度增強。然而,直到最近,它還不支持分類數據。分類特征在用于訓練或推理之前必須手動編碼。

在序數類別的情況下,例如學校成績,這通常使用標簽編碼來完成,其中每個類別都分配一個與該類別的位置相對應的整數。等級 A 、 B 和 C 可分別分配整數 1 、 2 和 3 。

對于基數類別,類別之間沒有序數關系,例如顏色,這通常使用一個熱編碼來完成。這是為類別特征包含的每個類別創建新的二進制特征的地方。具有紅色、綠色和藍色類別的單個分類特征將是一個熱編碼為三個二進制特征,一個代表每種顏色。

>>> import pandas as pd
>>> df = pd.DataFrame({"id":[1,2,3,4,5],"color":["red","green","blue","green","blue"]})
>>> print(df)
  id  color
0   1    red
1   2  green
2   3   blue
3   4  green
4   5   blue

>>> print(pd.get_dummies(df))
  id  color_blue  color_green  color_red
0   1           0            0          1
1   2           0            1          0
2   3           1            0          0
3   4           0            1          0
4   5           1            0          0

這意味著具有大量類別的分類特征可能會導致數十甚至數百個額外的特征。因此,經常會遇到內存池和最大 DataFrame 大小限制。

對于 XGBoost 這樣的樹學習者來說,這也是一種特別糟糕的方法。決策樹通過找到所有特征的分裂點及其可能的值來訓練,這將導致純度的最大提高。

由于具有許多類別的一個熱編碼分類特征往往是稀疏的,因此分割算法 經常忽略 one-hot 特性有利于較少稀疏的特征,這些特征可以貢獻更大的純度增益。

現在, XGBoost 1.7 包含了一個實驗 特征,它使您可以直接在分類數據上訓練和運行模型,而無需手動編碼。這包括讓 XGBoost 自動標記編碼或對數據進行一次熱編碼的選項,以及 optimal partitioning 算法,用于有效地對分類數據執行拆分,同時避免一次熱解碼的缺陷。 1.7 版還支持缺失值和最大類別閾值,以避免過度擬合。

這篇文章簡要介紹了如何在包含多個分類特征的示例數據集上實際使用新特征。

使用 XGBoost 的分類支持預測恒星類型

要使用新功能,必須首先加載一些數據。在本例中,我使用了 Kaggle star type prediction dataset 。

>>> import pandas as pd
>>> import xgboost as xgb
>>> from sklearn.model_selection import train_test_split
>>> data = pd.read_csv("6 class csv.csv")
>>> print(data.head())

然后,將目標列(星形)提取到其自己的系列中,并將數據集拆分為訓練和測試數據集。

>>> X = data.drop("Star type", axis=1)
>>> y = data["Star type"]
>>> X_train, X_test, y_train, y_test = train_test_split(X, y)

接下來,將分類特征指定為category數據類型。

>>> Y_train = y_train.astype("category")
>>> X_train["Star color"] = X_train["Star color"].astype("category")
>>> X_train["Spectral Class"] = X_train["Spectral Class"].astype("category")

現在,要使用新功能,必須在創建XGBClassifier對象時將enable_categorical參數設置為True。之后,繼續訓練 XGBoost 模型時的正常操作。這適用于 CPUGPU tree_methods。

>>> clf = xgb.XGBClassifier(
    tree_method="gpu_hist", enable_categorical=True, max_cat_to_onehot=1
)
>>> clf.fit(X_train, y_train)

XGBClassifier(base_score=0.5, booster='gbtree', callbacks=None,
              colsample_bylevel=1, colsample_bynode=1, colsample_bytree=1,
              early_stopping_rounds=None, enable_categorical=True,
              eval_metric=None, gamma=0, gpu_id=0, grow_policy='depthwise',
              importance_type=None, interaction_constraints='',
              learning_rate=0.300000012, max_bin=256, max_cat_to_onehot=4,
              max_delta_step=0, max_depth=6, max_leaves=0,
              min_child_weight=1, missing=nan, monotone_constraints='()',
              n_estimators=100, n_jobs=0, num_parallel_tree=1, 
              objective='multi:softprob', predictor='auto', random_state=0, 
              reg_alpha=0, ...)

最后,您可以使用您的模型生成預測,而無需對分類特征進行一次熱編碼或編碼。

>>> X_test["Star color"] = X_test["Star color"]
    .astype("category")
    .cat.set_categories(X_train["Star color"].cat.categories)
>>> X_test["Spectral Class"] = X_test["Spectral Class"]
    .astype("category")
    .cat.set_categories(X_train["Spectral Class"].cat.categories)
>>> print(clf.predict(X_test))
[1 0 3 3 2 5 1 1 2 1 4 3 4 0 0 4 1 5 2 4 4 1 4 5 5 3 1 4 5 2 0 2 5 5 4 2 5
 0 3 3 0 2 3 3 1 0 4 2 0 4 5 2 0 0 3 2 3 4 4 4]

總結

我們演示了如何使用 XGBoost 對分類特征的實驗支持,以改善 XGBoost 在分類數據上的訓練和推理體驗。。

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

    關注

    14

    文章

    5076

    瀏覽量

    103718
  • AI
    AI
    +關注

    關注

    87

    文章

    31513

    瀏覽量

    270328
  • 機器學習
    +關注

    關注

    66

    文章

    8438

    瀏覽量

    133080
收藏 人收藏

    評論

    相關推薦

    基于xgboost的風力發電機葉片結冰分類預測 精選資料下載

    xgboost中文叫做極致梯度提升模型,官方文檔鏈接:https://xgboost.readthedocs.io/en/latest/tutorials/model.html2018年9月6日筆記
    發表于 07-12 06:44

    編碼器的分類及其工作原理

    稱為碼盤,后者稱為碼尺。編碼器的分類1.按按碼盤的刻孔方式可分為絕對編碼器和增量編碼器絕對編碼器由機械位置決定的每個位置是唯一的,它
    發表于 09-14 09:16

    基于快速低秩編碼與局部約束的圖像分類算法

    ;其次,在視覺詞典采取K最近鄰( KNN)策略查找聚類中心對應的K個視覺單詞,并將其組成對應的視覺詞典;最后,使用快速低秩編碼算法獲得局部相似特征集合對應的特征
    發表于 11-24 16:39 ?0次下載
    基于快速低秩<b class='flag-5'>編碼</b>與局部約束的圖像<b class='flag-5'>分類</b>算法

    基于棧式自編碼的惡意代碼分類算法

    針對傳統機器學習方法不能有效地提取惡意代碼的潛在特征,提出了基于棧式自編碼( stacked auto en-coder,SAE)的惡意代碼分類算法。其次從大量訓練樣本中學習并提取惡意代碼紋理圖像
    發表于 01-16 17:19 ?0次下載
    基于棧式自<b class='flag-5'>編碼</b>的惡意代碼<b class='flag-5'>分類</b>算法

    一種新的目標分類特征深度學習模型

    受限和高識別率要求,提取圖像的局部方向梯度直方圖( HOG)特征,構建稀疏自編碼器棧對HOG特征進行深層次編碼,設計Softmax多分類器對
    發表于 03-20 17:30 ?0次下載
    一種新的目標<b class='flag-5'>分類</b><b class='flag-5'>特征</b>深度學習模型

    面試中出現有關Xgboost總結

    介紹 Xgboost是GB算法的高效實現,xgboost的基學習器除了可以是CART(gbtree)也可以是線性分類器(gblinear)
    發表于 03-20 16:48 ?4492次閱讀

    XGBoost原理概述 XGBoost和GBDT的區別

    相比于經典的GBDT,xgboost做了一些改進,從而在效果和性能上有明顯的提升。
    的頭像 發表于 07-16 18:54 ?7.9w次閱讀
    <b class='flag-5'>XGBoost</b>原理概述 <b class='flag-5'>XGBoost</b>和GBDT的區別

    基于XGBoost的樹突狀細胞算法綜述

    樹突狀細胞算法(DCA)要求輸入3類信號,需要通過人工選取或統計學等方式提前進行特征提取。為準確、高效地提取特征,提岀一種基于 Xgboost的DCA。通過使用ⅹ Gboost算法迭代生成決策樹
    發表于 06-09 14:48 ?3次下載

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

    機器學習算法只接受數值輸入,所以如果我們遇到分類特征的時候都會對分類特征進行編碼,本文總結了常見的11個
    的頭像 發表于 11-28 15:45 ?3722次閱讀

    XGBoost 2.0介紹

    ,還將介紹新機制和更新。 這是一篇很長的文章,因為我們首先從梯度增強決策樹開始。 基于樹的方法,如決策樹、隨機森林以及擴展后的XGBoost,在處理表格數據方面表現出色,這是因為它們的層次結構天生就善于對表格格式中常見的分層關系進行建模。它們在自動檢測和整合特征之間復雜
    的頭像 發表于 11-03 10:12 ?535次閱讀
    <b class='flag-5'>XGBoost</b> 2.0介紹

    BP神經網絡在語言特征信號分類的應用

    Network),即反向傳播神經網絡,作為一種強大的多層前饋神經網絡,憑借其優異的非線性映射能力和高效的學習機制,在語言特征信號分類展現出了巨大的潛力。本文將從BP神經網絡的基本原理、語言
    的頭像 發表于 07-10 15:44 ?475次閱讀

    xgboost超參數調優技巧 xgboost在圖像分類的應用

    一、XGBoost超參數調優技巧 XGBoost(eXtreme Gradient Boosting)是一種基于梯度提升決策樹(GBDT)的高效梯度提升框架,在機器學習競賽和實際業務應用取得了卓越
    的頭像 發表于 01-31 15:16 ?82次閱讀

    xgboost在圖像分類的應用

    和易用性,在各種機器學習任務得到了廣泛應用,包括分類、回歸和排序問題。在圖像分類領域,盡管深度學習模型(如卷積神經網絡CNN)占據主導地位,但XGBoost仍然有其獨特的應用價值,特
    的頭像 發表于 01-19 11:16 ?370次閱讀

    使用Python實現xgboost教程

    裝: bash復制代碼conda install -c conda-forge xgboost 2. 導入必要的庫 在你的Python腳本或Jupyter Notebook,導入必要的庫: python復制代碼 import xgbo
    的頭像 發表于 01-19 11:21 ?396次閱讀

    常見xgboost錯誤及解決方案

    。 對分類特征進行獨熱編碼(One-Hot Encoding)或標簽編碼(Label Encoding)。 使用 sklearn.preprocessing
    的頭像 發表于 01-19 11:22 ?459次閱讀
    平山县| 澳门百家乐官网论| 百家乐走势图备用网站| 免费百家乐官网预测工具| 订做百家乐官网桌子| 香港六合彩官方网| 大发888官方正版网| 百家乐77scs| 百家乐公开| 做生意房门挂啥招财| 郑州百家乐官网的玩法技巧和规则| 大发888娱乐城 34| 威尼斯人娱乐城真人赌博| 百家乐官网网站| 百家乐龙虎玩| 百家乐庄闲和收益| 线上百家乐是如何作弊| 玩百家乐平台| 百家乐电脑游戏高手| 百家乐投注网中国| 好运来百家乐现金网| 太阳城百家乐怎样开户| 百家乐平台哪个好本站所有数据都是网友推荐及提供 | 大发888线上娱乐城百家乐| 百家乐必赢| 中国百家乐的玩法技巧和规则 | 大发888网页多少| 大发888游戏客户端| 大发888娱乐场下载远程| 丹阳棋牌游戏中心| 万达百家乐娱乐城| 百家乐最保险的方法| 百家乐赌博筹码大不大| 怎么看百家乐走势| 永利赌场| 太阳城娱乐网| 百家乐官网手机投注平台| 线上百家乐官网网站| 淘宝博百家乐官网的玩法技巧和规则 | 青州市| 百家乐官网波音平台开户导航|