我正在嘗試在UCI銀行營銷數據 - >https://archive.ics.uci.edu/ml/datasets/bank+marketing上構建決策樹和隨機森林分類器。數據集中有許多分類特徵(具有字符串值)。如何處理spark tree中的決策樹,隨機森林的分類特徵?
在spark ml文檔中,提到可以使用StringIndexer或VectorIndexer通過索引將分類變量轉換爲數字。我選擇使用StringIndexer(矢量索引需要矢量特徵和矢量彙編器,它將特徵轉換爲矢量特徵只接受數字類型)。使用這種方法,分類特徵的每個級別都將根據其頻率(對於類別特徵的最頻繁標籤爲0)分配數值。
我的問題是隨機森林或決策樹算法如何理解新特徵(派生自分類特徵)與連續變量不同。將索引特徵視爲在算法中是連續的?這是正確的方法嗎?或者,我應該繼續使用單熱編碼進行分類功能。
我從這個論壇讀了一些答案,但是我沒有弄清楚最後一部分。
感謝您的詳細回覆。我更關心名義數據。在火花毫升中,我無法提供字符串值,因爲它是隨機森林。我需要將其轉換爲數字值。當我將它轉換爲數字時,這些值的順序沒有意義,所以看起來像我將不得不爲隨機森林的名義分類特徵做一個熱點編碼。所以,你的回答「取決於你對數據的理解。儘管隨機森林和一些增強方法不需要單向編碼,但大多數ML算法都需要它」不適用於標稱數據。如果你不同意,請告訴我。 – user6200992
是的,如果您知道特定列包含標稱數據,請執行一個熱門編碼。如果它是一個有序的數據,你可以做StringIndexing。 (儘管對有序數據進行一次熱編碼並不錯) – vdep