我在機器學習python的scikit-learn軟件包中使用SVM分類器。 我的功能是整數。當我調用fit函數時,我得到用戶警告「Scaler假定浮點值作爲輸入,得到int32」,SVM返回它的預測,我計算混淆矩陣(我有2個類)和預測精度。 我試圖避免用戶警告,所以我將這些功能保存爲浮動。事實上,警告消失了,但我得到了完全不同的混淆矩陣和預測準確性(令人驚訝的是不太準確) 有人知道它爲什麼會發生嗎?有什麼更可取的,我應該作爲浮動或整數發送功能? 謝謝!SVM整數特徵
SVM整數特徵
回答
您應該將它們轉換爲浮點數,但實現方式取決於整數要素實際表示的內容。
你的整數是什麼意思?他們是否是類別成員指標(例如:1 == sport,2 == business,3 == media,4 == people ...)或具有訂單關係的數字度量標準(3大於2又是大於1)。例如,你不能說「人」比「媒體」大。這是毫無意義的,會讓機器學習算法混淆這個假設。
因此,應將分類特徵轉換爲每個特徵作爲每個可能類別的幾個布爾特徵(值爲0.0或1.0)。在scikit-learn中查看DictVectorizer class以更好地理解我的分類特徵。
如果有數字值只是將它們轉換爲浮點數,也許可以使用定標器將它們鬆散地放在[-1,1]範圍內。如果它們跨越幾個數量級(例如單詞出現次數),那麼取對數計數可能會產生更好的結果。 http://scikit-learn.org/stable/modules/preprocessing.html
編輯:在本節文檔的功能,預處理和示例的詳細文檔還閱讀本指南,對功能表現更多的細節和預處理:http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf
謝謝!我的特徵是具有訂單關係的數字度量,範圍爲0-9。我剛剛轉換爲浮動與浮法鑄造。這很奇怪,它給了我不同的結果。 –
您可以用http://gist.github.com上展示問題的簡約再現案例(python腳本+數據子集)填寫bug報告,並鏈接http://github.com/上的新問題scikit-learn/scikit-learn/issues? – ogrisel
- 1. SVM:從臨牀特徵中提取特徵矢量
- 2. 連接SURF特徵和氡特徵來訓練SVM
- 3. R中的SVM特徵選擇
- 4. 支持圖像特徵分類的SVM?
- 5. 正常化SVM的特徵值
- 6. 使用GLCM特徵的SVM分類器
- 7. OpenCV + HOG + SVM:支持SVM單特徵向量所需的幫助
- 8. 整數特徵(is_integer,is_integral)
- 9. 犰狳整數特徵分解
- 10. sklearn svm非整數輸出
- 11. 如何使用SVM處理條件特徵?
- 12. 通過添加多項式特徵損壞了SVM迴歸
- 13. 機器學習-svm特徵融合技術
- 14. Scikits學習:線性內核SVM中的特徵權重
- 15. 如何使HOG特徵向量適應線性svm輸入
- 16. SVM機器學習:LibSVM中的特徵表示
- 17. 使用SIFT特徵訓練SVM分類器
- 18. SVM是否具有內部特徵選擇?
- 19. 如何爲SVM的關係提取構建特徵?
- 20. 如何在特徵提取中使用svm分類器
- 21. 如何使用「多類」SVM計算SFS(順序特徵選擇)?
- 22. 如何使用scikit-learn的SVM和直方圖作爲特徵?
- 23. 使用邊緣檢測器作爲SVM中的特徵矢量
- 24. SVM分類中的特徵選擇 - 奇怪行爲
- 25. 調整vlfeat SVM
- 26. 特徵提取器在手寫數字示例中使用scikit-learn實現SVM
- 27. 如何在Octave/Matlab中繪製svm(11-D特徵數據)的結果?
- 28. 調整R(線性SVM內核)中的svm參數
- 29. Scala中的特徵,函數N或特徵繼承函數N?
- 30. '代碼完整的設計特徵'
浮標是首選,因爲整數將被複制/轉換成浮點數組,所以你在浪費內存。不過,奇怪的是你應該得到不同的結果。 –