1. 程式人生 > >Sklearn,xgboost機器學習多分類實驗

Sklearn,xgboost機器學習多分類實驗

一. 背景

多分類是一個機器學習的常見任務,本文將基於復旦大學中文文字分類語料,使用sklearn和xgboost來進行多分類實驗

預裝軟體包:
1. Jieba分詞:

環境: linux fedora 23 

2. Sklearn: 

3.xgboost:

安裝好後進入到python-package:pythonsetup.py install

二. LCCT程式碼和資料集

1.程式碼

 LCCT  (Learning to Classify Chinese Text)

                   git  clone https://github.com/jaylenzhang/lcct.git

2.資料集

由復旦大學李榮陸提供。fudan_test.json為測試語料,共9833篇文件;fudan_train.json為訓練語料,共9804篇文件,分為20個類別。訓練語料和測試語料基本按照1:1的比例來劃分。本文將訓練和測試資料混合一起進行5折交叉驗證。收集工作花費了不少人力和物力,所以請大家在使用時儘量註明來源(復旦大學計算機資訊與技術系國際資料庫中心自然語言處理小組)

下載資料集後,在當前目錄下建立data目錄,並將檔案解壓。

資料集類別統計

類別

資料量

Economy

3200

Computer

2714

Sports

2506

Enviornment

2434

Politics

2048

Agriculture

2042

Art

1480

Space

1280

History

932

Military

148

Education

118

Transport

114

Law

102

Medical

102

Philosophy

88

Literature

66

Mine

66

Energy

64

Electronics

54

Communication

50

總計

19608

三. 配置檔案

[basic_conf]
work_dir=/home/disk1/zhangzhiming/code/ml/lcct/  # 設定當前工作路徑,需要修改
word_min_count=4 # 文件集中詞頻低於4的將會被去掉
label2clsName=label.clsName #  <0, Art>
id2docName=id.docName  #
word2id=word.id
word2idf=word.idf
tfidf_svm=tfid.svm
 
train_test_dir=train_test_dir
 
[pre_process]
file_tag=classify
json_data=classify.json
wordseg_data=classify.seg
vocab_data=classify.voc
tfidf_data=classify.tfidf
train_test_dir=train_test_dir
train_test_rate=0.5
cross_validation_num=5
 [feature_selection]
is_chi2=0
chi2_best_k=10000

四. 預處理

         cd ./ scripts

         執行: sh ./run_pre_process.sh


         1.分詞。採用結巴分詞。

         2.生成字典。去掉停用詞,過濾掉詞頻小於等於2的詞,生成字典。

         3.計算idf。

         4.計算tf以及tfidf。

         6.生成libsvm資料格式

                  1)重取樣: 以訓練資料最多的類別為取樣上線進行取樣。

五. 分類實驗

         1.分類器

                   選擇了樸素貝葉斯,SGCclassifier,logistic regression random_forest,decision_tree,xgboost 等。

         2.  執行

                   cd./scripts

                   sh   run_train_and_test.sh

         3.實驗結果

                  採用5折交叉驗證

classifier

acc

precision

recall

f1-score

train_time(s)

XGBOOST

0.959

0.96

0.959

0.959

588.17

NB

0.821

0.873

0.821

0.841

0.577

SGD

0.925

0.936

0.925

0.929

9.393

LR

0.939

0.94

0.939

0.939

55.869

RF

0.913

0.918

0.913

0.912

5.367

DT

0.894

0.898

0.894

0.895

20.95

六. 特徵工程

         1.Sklearn常見的特徵工程方法:

         這裡實驗了卡方檢驗,在配置檔案中設定

[feature_selection]
is_chi2=0
chi2_best_k=10000

         2.程式碼:

  卡方檢驗    

 def choose_best_chi2(self,train_x,train_y,test_x):
        ch2 = SelectKBest(chi2, k = self.chi2_best_k)
        train_x_ch2 = ch2.fit_transform(train_x, train_y)
        text_x_ch2 = ch2.transform(test_x)
        return train_x_ch2, text_x_ch2
呼叫:
if self.is_chi2:
                train_x,test_x = self.choose_best_chi2(train_x, train_y,test_x)


       

         3.實驗結果

classifier

acc

precision

recall

f1-score

train_time(s)

XGBOOST

0.957

0.959

0.957

0.958

161.932

NB

0.77

0.824

0.77

0.788

0.206

SGD

0.925

0.934

0.925

0.928

3.586

LR

0.929

0.93

0.929

0.929

37.192

RF

0.936

0.939

0.936

0.936

3.315

DT

0.895

0.898

0.895

0.896

8.588

參考文獻:

1. 李榮陸王建會陳曉雲陶曉鵬胡運發. "使用最大熵模型進行中文文字分類." 計算機研究與發展42.1 (2005): 94-101.

相關推薦

Sklearn,xgboost機器學習分類實驗

一. 背景 多分類是一個機器學習的常見任務,本文將基於復旦大學中文文字分類語料,使用sklearn和xgboost來進行多分類實驗。 預裝軟體包: 1. Jieba分詞: 環境: linux fedora 23  2. Sklearn:  3.xgboost: 安裝好

機器學習-分類問題

一、背景 為何選擇svm來嘗試解決多分類問題,以下為決策樹和svm用於多分類的表現上的差異: 二、SVM支援向量機(Support vector machine) 設計k個SVM兩類分類器; 設計兩兩k(k-1)/2個SVM兩類分類器。 線上

吳恩達-機器學習(3)-分類、邏輯迴歸、分類、過擬合

文章目錄 Classification and Representation Classification Hypothesis Representation Decision Boundary

Sklearn機器學習概述

機器 com png 技術分享 logs sklearn ges learn images 機器學習概述 SKLearn相關模塊 老師扯得閑篇 『Sklearn』機器學習概述

機器學習分類問題實戰(基於UCI Bank Marketing Dataset)

表示 般的 機構 文件 cnblogs opened csv文件 mas htm 導讀: 分類問題是機器學習應用中的常見問題,而二分類問題是其中的典型,例如垃圾郵件的識別。本文基於UCI機器學習數據庫中的銀行營銷數據集,從對數據集進行探索,數據預處理和特征工程,到學習

機器學習-KNN分類

pos show sha key borde 不同 簡單的 測試 solid 1. K-近鄰(k-Nearest Neighbors,KNN)的原理 通過測量不同特征值之間的距離來衡量相似度的方法進行分類。 2. KNN算法過程 訓練樣本集:樣本集中每個特征值都

機器學習二——分類算法--決策樹DecisionTree

其中 .cn 比較 輸出 選擇 結構 沒有 ati 流程圖 機器學習算法評估標準:準確率,速度,強壯性(噪音影響較小),可規模性,可解釋性。 1、決策樹 Decision Tree:決策樹是一個類似於流程圖的樹結構,其中每個內部節點表示在一個屬性上的測試,每一個分支代表

機器學習三--分類--鄰近取樣(Nearest Neighbor)

post 個數 均衡 urn learning clas 根據 () end 最鄰近規則分類 K-Nearest Neighbor 步驟:   1、為了判斷未知實例的類別,以所有已知類別的實例作為參考。   2、選擇參數K。   3、計算未知實例與所有已知實例的距離。   

機器學習(四) 分類算法--K近鄰算法 KNN

class 給定 sort sta shape counter 3.5 解釋 sqrt 一、K近鄰算法基礎 KNN------- K近鄰算法--------K-Nearest Neighbors 思想極度簡單 應用數學知識少 (近乎為零) 效果好(缺點?) 可以解

機器學習分類與主要演算法對比

重要引用:Andrew Ng Courera Machine Learning;從機器學習談起;關於機器學習的討論;機器學習常見演算法分類彙總;LeNet Homepage;pluskid svm   首先讓我們瞻仰一下當今機器學習領域的執牛耳者:   這幅圖上的三人是當今機器學習界的

吳恩達機器學習-變數線性迴歸 吳恩達機器學習 - 變數線性迴歸

原 吳恩達機器學習 - 多變數線性迴歸 2018年06月18日 17:50:26 離殤灬孤狼 閱讀數:84 收起

機器學習分類和迴歸區別闡述

很多人分不清楚分類和迴歸,我來講一下,我們經常會碰到這樣的問題: 1、如何將信用卡申請人分為低、中、高風險群? 2、如何預測哪些顧客在未來半年內會取消該公司服務,哪些電話使用者會申請增值服務? 3、如何預測具有某些特徵的顧客是否會購買一臺新的計算機? 4、如何預測病人應當接受三種

機器學習分類決策樹與迴歸決策樹案例

一、回顧 什麼是決策樹,資訊熵 構建決策樹的過程 ID3、C4.5和CRAT演算法 上面三篇,主要介紹了相關的理論知識,其中構建決策樹的過程可以很好地幫助我們理解決策樹的分裂屬性的選擇。 本篇所有原始碼:Github 二

機器學習分類決策樹DecisionTreeClassifier

機器學習之分類決策樹DecisionTreeClassifier # -*- coding: utf-8 -*- """ Created on Fri Nov 23 21:06:54 2018 @author: muli """ import numpy as np

機器學習分類與迴歸的解決與區別

機器學習可以解決很多問題,其中最為重要的兩個是 迴歸與分類。 這兩個問題怎麼解決, 它們之間又有什麼區別呢? 以下舉幾個簡單的例子,以給大家一個概念 1. 線性迴歸 迴歸分析常用於分析兩個變數X和Y 之間的關係。 比如 X=房子大小 和 Y=房價 之間的關係, X=(公園人流量,公園門票票價

【深度學習-機器學習分類度量指標 : 正確率、召回率、靈敏度、特異度,ROC曲線、AUC等

在分類任務中,人們總是喜歡基於錯誤率來衡量分類器任務的成功程度。錯誤率指的是在所有測試樣例中錯分的樣例比例。實際上,這樣的度量錯誤掩蓋了樣例如何被分錯的事實。在機器學習中,有一個普遍適用的稱為混淆矩陣(confusion matrix)的工具,它可以幫助人們更好地瞭解

機器學習SVC分類預測三個月後的股價

思路:通過學習近兩年的每個季度報的基本面財務資料,建立模型,買入並持有預測三個月後會漲5%以上的股票,直到下一批季度報 資料採集:用到了大約10018行資料(已去除缺失值,不採用填充),其中採用了兩個技術指標(趨勢指標CYES,CYEL) circulating_market_ca

機器學習分類與迴歸問題的區別與聯絡

分類和迴歸問題之間存在重要差異。 從根本上說,分類是關於預測標籤,而回歸是關於預測數量。 我經常看到諸如以下問題: 如何計算迴歸問題的準確性? 像這樣的問題是沒有真正理解分類和迴歸之間的差異以及試圖衡量的準確度的症狀。 在本教程中,您將發現分類和迴歸之間的差異。

機器學習3-分類及模型驗證

目錄 機器分類 人工分類 二元分類 多元分類 樸素貝葉斯分類 訓練相關 劃分訓練集和測試集 交叉驗證 混淆矩陣 分類報告 基於決策樹的分類 基於投

機器學習分類問題的效能度量

機器學習之分類問題的效能度量 # -*- coding: utf-8 -*- """ Created on Mon Dec 10 10:54:09 2018 @author: muli """ from sklearn.metrics import accuracy