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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

xgboost小试

發布時間:2024/1/17 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 xgboost小试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. virtualenv 創建一個虛擬環境

virtualenv xgboost-env cd xgboost-env

2. 下載代碼

git clone --recursive https://github.com/dmlc/xgboost

--recursive : 下載所有關聯的包

3. 編譯

cd xgboost make -j4

“-j4”是4核并行的意思

?

4. 運行demo

cd demo/binary_classification python mapfeat.py python mknfold.py agaricus.txt 1 ../../xgboost mashroom.conf

查看打印結果

5. 代碼解析

demo/binary_classification下是一個根據對蘑菇特征對其是否有毒進行判別對一個demo。數據源來自https://archive.ics.uci.edu/ml/datasets/Mushroom,數據中包括蘑菇對形狀、顏色等特征,以及是否有毒的標簽。原始數據存放在agaricus-lepiota.data里,內容如下所示。它有23列,其中第一列是標簽列,p表示有毒,e表示沒有毒。后面的22列是22個特征對應的特征值。

p,x,s,n,t,p,f,c,n,k,e,e,s,s,w,w,p,w,o,p,k,s,u e,x,s,y,t,a,f,c,b,k,e,c,s,s,w,w,p,w,o,p,n,n,g e,b,s,w,t,l,f,c,b,n,e,c,s,s,w,w,p,w,o,p,n,n,m p,x,y,w,t,p,f,c,n,n,e,e,s,s,w,w,p,w,o,p,k,s,u e,x,s,g,f,n,f,w,b,k,t,e,s,s,w,w,p,w,o,e,n,a,g e,x,y,y,t,a,f,c,b,n,e,c,s,s,w,w,p,w,o,p,k,n,g e,b,s,w,t,a,f,c,b,g,e,c,s,s,w,w,p,w,o,p,k,n,m ... ...

agaricus-lepiota.fmap 文件里存放特征映射關系,比如蘑菇頭形狀(cap-shap)為鐘型(bell)的用b表示,圓錐型(conical)的用c表示;蘑菇頭顏色(cap-color)為棕色(brown)的用n表示,淺黃色(buff)的用b表示,等等??偣?2個特征映射,對應agaricus-lepiota.data里的第1~22列(第0列為標簽)。

1. cap-shape: bell=b,conical=c,convex=x,flat=f,knobbed=k,sunken=s 2. cap-surface: fibrous=f,grooves=g,scaly=y,smooth=s 3. cap-color: brown=n,buff=b,cinnamon=c,gray=g,green=r,pink=p,purple=u,red=e,white=w,yellow=y 4. bruises?: bruises=t,no=f 5. odor: almond=a,anise=l,creosote=c,fishy=y,foul=f, musty=m,none=n,pungent=p,spicy=s 6. gill-attachment: attached=a,descending=d,free=f,notched=n 7. gill-spacing: close=c,crowded=w,distant=d ... ...

數據源的詳細解釋,可以看文件agaricus-lepiota.names。

?

mapfeat.py: 把原始數據agaricus-lepiota.data轉換成LibSVM格式的數據文件的腳本。LibSVM的格式中,每一行表示一個實例。其中第一列是標簽(lable)。在二分法里,1表示正樣本,0表示負樣本。后面每一列都是一個key:value的鍵值對。如下面所示,第一行的"101"表示編號為101的特征,"1.2"表示該特征的特征值。

1 101:1.2 102:0.03 0 1:2.1 10001:300 10002:400

?

通過執行下面的命令,把原始數據轉換成LibSVM格式,并存放在新生成的agaricus.txt里。

python mapfeat.py

agaricus.txt文件格式如下,第一列的“1”表示正樣本(有毒),“0”表示負樣本(無毒)。第一行第二列的“3”表示第3個特征,即“cap-shap是否為convex”,“1”表示“是”(原始數據用x表示)?!?0”表示第10個特征,即"cap-surface是否為smooth", 1表示是(原始數據用s表示)。以此類推。

1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 ... ...

?

下面的命令將數據隨機分成訓練集(agaricus.txt.train)和測試集(agaricus.txt.test)兩部分,80%的數據分配給訓練集,20%分配給測試集。

python mknfold.py agaricus.txt 1

?

訓練之。

../../xgboost mushroom.conf

mushroom.conf里存放訓練時的一些配置參數。

程序會打印一些訓練過程中的內容,并最終生成模型,叫0002.model。

?

預測

../../xgboost mushroom.conf task=pred model_in=0002.model

這個命令用0002.model對測試集進行預測,并將預測結果生成到pred.txt文件里。pred.txt的行數與test集中一直,每一行有一個介于[0-1]的值,它表示對該行樣本對預測。值越接近與1,則表示越可能為正樣本(有毒),越接近于0表示越可能是負樣本(無毒)??梢阅妙A測值與test集中對實際標簽對比,看看正確性如何。

?

保存模型

通過下面命令,可以把模型轉換成容易閱讀對格式。

../../xgboost mushroom.conf task=dump model_in=0002.model name_dump=dump.raw.txt ../../xgboost mushroom.conf task=dump model_in=0002.model fmap=featmap.txt name_dump=dump.nice.txt

?

在訓練過的模型上繼續訓練

../../xgboost mushroom.conf model_in=0002.model num_round=2 model_out=continue.model

這個命令會在?0002.mode模型上在進行兩輪boost,然后把結果存為continue.model。注意:使用這種方法時,中途不能改變?mushroom.conf 里面的配置。

?

多線程

如果系統支持多線程,可以增加nthread參數來進行并行計算。比如nthread=10表示10個線程同時計算。

?

?

?

https://xgboost.readthedocs.io/en/latest//get_started/index.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的xgboost小试的全部內容,希望文章能夠幫你解決所遇到的問題。

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