±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚcsdn£¬Ö÷Òª½²½âÁËËã·¨µÄ»ù±¾Ë¼Ï룬½áºÏmacOS°²×°XGBoost£¬È»ºóÓÃpythonʵÏÖ£¬ÏêÇéÇë¿´ÏÂÎÄ¡£ |
|
Ŀ¼
Ò»¡¢¼¯³ÉË㷨˼Ïë
¶þ¡¢XGBoost»ù±¾Ë¼Ïë
Èý¡¢MacOS°²×°XGBoost
ËÄ¡¢ÓÃpythonʵÏÖXGBoostËã·¨
ÔÚ¾ºÈüÌâÖо³£»áÓõ½XGBoostËã·¨£¬ÓÃÕâ¸öË㷨ͨ³£»áʹÎÒÃÇÄ£Ð͵Ä׼ȷÂÊÓÐÒ»¸ö½Ï´óµÄÌáÉý¡£¼ÈÈ»ËüЧ¹ûÕâôºÃ£¬ÄÇôËü´ÓÍ·µ½Î²×öÁËÒ»¼þʲôÊÂÄØ£¿ÒÔ¼°ËüÊÇÔõôÑùÈ¥×öµÄÄØ£¿
ÎÒÃÇÏÈÀ´Ö±¹ÛµÄÀí½âÒ»ÏÂʲôÊÇXGBoost¡£XGBoostËã·¨ÊǺ;ö²ßÊ÷Ëã·¨ÁªÏµµ½Ò»ÆðµÄ¡£
Ò»¡¢¼¯³ÉË㷨˼Ïë
ÔÚ¾ö²ßÊ÷ÖУ¬ÎÒÃÇÖªµÀÒ»¸öÑù±¾Íù×ó±ß·Ö»òÕßÍùÓұ߷֣¬×îÖÕµ½´ïÒ¶×Ó½áµã£¬ÕâÑùÀ´½øÐÐÒ»¸ö·ÖÀàÈÎÎñ¡£
ÆäʵҲ¿ÉÒÔ×ö»Ø¹éÈÎÎñ¡£

¿´ÉÏÃæÒ»¸öͼÀý×ó±ß£ºÓÐ5¸öÑù±¾£¬ÏÖÔÚÏë¿´ÏÂÕâ5¸öÈËÔ¸²»Ô¸ÒâÈ¥ÍæÓÎÏ·£¬Õâ5¸öÈËÏÖÔÚ¶¼·Öµ½ÁËÒ¶×Ó½áµãÀïÃæ£¬¶Ô²»Í¬µÄÒ¶×Ó½áµã·ÖÅ䲻ͬµÄÈ¨ÖØÏÕýÊý´ú±íÕâ¸öÈËÔ¸ÒâÈ¥ÍæÓÎÏ·£¬¸ºÊý´ú±íÕâ¸öÈ˲»Ô¸ÒâÈ¥ÍæÓÎÏ·¡£ËùÒÔÎÒÃÇ¿ÉÒÔͨ¹ýÒ¶×Ó½áµãºÍȨֵµÄ½áºÏ£¬À´×ÛºÏµÄÆÀÅе±Ç°Õâ¸öÈ˵½µ×ÊÇÔ¸Ò⻹ÊDz»Ô¸ÒâÈ¥ÍæÓÎÏ·¡£ÉÏÃæ¡¸tree1¡¹ÄǸöСÄк¢ËüËù´¦µÄÒ¶×Ó½áµãµÄȨֵÊÇ+2£¨¿ÉÒÔÀí½âΪµÃ·Ö£©¡£
Óõ¥¸ö¾ö²ßÊ÷ºÃÏñЧ¹ûÒ»°ãÀ´Ëµ²»ÊÇÌ«ºÃ£¬»òÕß˵¿ÉÄÜ»áÌ«¾ø¶Ô¡£Í¨³£ÎÒÃÇ»áÓÃÒ»ÖÖ¼¯³ÉµÄ·½·¨£¬¾ÍÊÇÒ»¿ÃÊ÷Ч¹û¿ÉÄܲ»Ì«ºÃ£¬ÓÃÁ½¿ÃÊ÷ÄØ£¿
¿´Í¼ÀýÓұߵġ¸tree2¡¹£¬ËüºÍ×ó±ßµÄ²»Í¬ÔÚÓÚËüʹÓÃÁËÁíÍâµÄÖ¸±ê£¬³öÁËÄêÁäºÍÐԱ𣬻¹¿ÉÒÔ¿¼ÂÇʹÓõçÄÔÆµÂÊÕâ¸ö»®·ÖÊôÐÔ¡£Í¨¹ýÕâÁ½¿ÃÊ÷¹²Í¬°ïÎÒÃǾö²ßµ±Ç°Õâ¸öÈËÔ¸²»Ô¸ÒâÍæÓÎÏ·£¬Ð¡Äк¢ÔÚ¡¸tree1¡¹µÄȨֵÊÇ+2£¬ÔÚ¡¸tree2¡¹µÄȨֵÊÇ+0.9£¬
ËùÒÔСÄк¢×îÖÕµÄȨֵÊÇ+2.9£¨¿ÉÒÔÀí½âΪµÃ·ÖÊÇ+2.9£©¡£ÀÏÒ¯Ò¯×îÖÕµÄȨֵҲÊÇͨ¹ýÒ»ÑùµÄ¹ý³ÌµÃµ½µÄ¡£
ËùÒÔ˵£¬ÎÒÃÇͨ³£ÔÚ×ö·ÖÀà»òÕ߻عéÈÎÎñµÄʱºò£¬ÐèÒªÏëÒ»ÏëÒ»µ©Ñ¡ÔñÓÃÒ»¸ö·ÖÀàÆ÷¿ÉÄܱí´ïЧ¹û²¢²»ÊǺܺã¬ÄÇô¾ÍÒª¿¼ÂÇÓÃÕâÑùÒ»¸ö¼¯³ÉµÄ˼Ïë¡£ÉÏÃæµÄͼÀýÖ»ÊǾÙÁËÁ½¸ö·ÖÀàÆ÷£¬Æäʵ»¹¿ÉÒÔÓиü¶à¸ü¸´ÔÓµÄÈõ·ÖÀàÆ÷£¬Ò»Æð×éºÏ³ÉÒ»¸öÇ¿·ÖÀàÆ÷¡£
¶þ¡¢XGBoost»ù±¾Ë¼Ïë
XGBoostµÄ¼¯³É±íʾÊÇʲô£¿ÔõôԤ²â£¿Çó×îÓŽâµÄÄ¿±êÊÇʲô£¿¿´ÏÂͼµÄ˵Ã÷Äã¾ÍÄÜһĿÁËÈ»¡£

ÔÚXGBoostÀÿ¿ÃÊ÷ÊÇÒ»¸öÒ»¸öÍùÀïÃæ¼ÓµÄ£¬Ã¿¼ÓÒ»¸ö¶¼ÊÇÏ£ÍûЧ¹ûÄܹ»ÌáÉý£¬ÏÂͼ¾ÍÊÇXGBoostÕâ¸ö¼¯³ÉµÄ±íʾ£¨ºËÐÄ£©¡£

Ò»¿ªÊ¼Ê÷ÊÇ0£¬È»ºóÍùÀïÃæ¼ÓÊ÷£¬Ï൱ÓÚ¶àÁËÒ»¸öº¯Êý£¬ÔÙ¼ÓµÚ¶þ¿ÃÊ÷£¬Ï൱ÓÚÓÖ¶àÁËÒ»¸öº¯Êý...µÈµÈ£¬ÕâÀïÐèÒª±£Ö¤¼ÓÈëеĺ¯ÊýÄܹ»ÌáÉýÕûÌå¶Ô±í´ïЧ¹û¡£ÌáÉý±í´ïЧ¹ûµÄÒâ˼¾ÍÊÇ˵¼ÓÉÏеÄÊ÷Ö®ºó£¬Ä¿±êº¯Êý£¨¾ÍÊÇËðʧ£©µÄÖµ»áϽµ¡£
Èç¹ûÒ¶×Ó½áµãµÄ¸öÊýÌ«¶à£¬ÄÇô¹ýÄâºÏµÄ·çÏÕ»áÔ½´ó£¬ËùÒÔÕâÀïÒªÏÞÖÆÒ¶×Ó½áµãµÄ¸öÊý£¬ËùÒÔÔÚÔÀ´Ä¿±êº¯ÊýÀïÒª¼ÓÉÏÒ»¸ö³Í·£Ïomega(ft)¡¹¡£

ÕâÀï¾Ù¸ö¼òµ¥µÄÀý×Ó¿´¿´³Í·£Ïomega(ft)¡¹ÊÇÈçºÎ¼ÆËãµÄ£º

Ò»¹²3¸öÒ¶×Ó½áµã£¬È¨ÖØ·Ö±ðÊÇ2£¬0.1£¬-1£¬´øÈ롸omega(ft)¡¹Öо͵õ½ÉÏÃæÍ¼ÀýµÄʽ×Ó£¬³Í·£Á¦¶ÈºÍ¡¸lambda¡¹µÄÖµÈËΪ¸ø¶¨¡£
XGBoostËã·¨ÍêÕûµÄÄ¿±êº¯Êý¼ûÏÂÃæÕâ¸ö¹«Ê½£¬ËüÓÉ×ÔÉíµÄËðʧº¯ÊýºÍÕýÔò»¯³Í·£Ïomega(ft)¡¹Ïà¼Ó¶ø³É¡£

¹ØÓÚÄ¿±êº¯ÊýµÄÍÆµ¼±¾ÎÄÕ²»×÷Ïêϸ½éÉÜ¡£¹ý³Ì¾ÍÊÇ£º¸øÄ¿±êº¯Êý¶ÔÈ¨ÖØÇ󯫵¼£¬µÃµ½Ò»¸öÄܹ»Ê¹Ä¿±êº¯Êý×îСµÄÈ¨ÖØ£¬°ÑÕâ¸öÈ¨ÖØ´ú»Øµ½Ä¿±êº¯ÊýÖУ¬Õâ¸ö»Ø´ú½á¹û¾ÍÊÇÇó½âºóµÄ×îСĿ±êº¯ÊýÖµ£¬ÈçÏ£º



ÆäÖеÚÈý¸öʽ×ÓÖеÄÒ»½×µ¼¶þ½×µ¼µÄÌݶÈÊý¾Ý¶¼ÊÇ¿ÉÒÔËã³öÀ´µÄ£¬Ö»ÒªÖ¸¶¨ÁËÖ÷º¯ÊýÖеÄÁ½¸ö²ÎÊý£¬Õâ¾ÍÊÇÒ»¸öÈ·¶¨µÄÖµ¡£ÏÂÃæ¸ø³öÒ»¸öÖ±¹ÛµÄÀý×ÓÀ´¿´ÏÂÕâ¸ö¹ý³Ì¡£

£¨ÕâÀï¶à˵һ¾ä£ºObj´ú±íÁ˵±ÎÒÃÇÖ¸¶¨Ò»¸öÊ÷µÄ½á¹¹µÄʱºò£¬ÔÚÄ¿±êÉÏ×î¶à»á¼õÉÙ¶àÉÙ£¬ÎÒÃÇ¿ÉÒÔ°ÑËü½Ð×ö½á¹¹·ÖÊý£¬Õâ¸ö·ÖÊýԽСԽºÃ£©
¶ÔÓÚÿ´ÎÀ©Õ¹£¬ÎÒÃÇÒÀ¾ÉҪö¾ÙËùÓпÉÄܵķ½°¸¡£¶ÔÓÚij¸öÌØ¶¨µÄ·Ö¸î£¬ÎÒÃÇÒª¼ÆËã³öÕâ¸ö·Ö¸îµÄ×ó×ÓÊ÷µÄµ¼ÊýºÍºÍÓÒ×ÓÊýµ¼ÊýºÍÖ®ºÍ£¨¾ÍÊÇÏÂͼÖеĵÚÒ»¸öºìÉ«·½¿ò£©£¬È»ºóºÍ»®·ÖǰµÄ½øÐбȽϣ¨»ùÓÚËðʧ£¬¿´·Ö¸îºóµÄËðʧºÍ·Ö¸îǰµÄËðʧÓÐûÓз¢Éú±ä»¯£¬±ä»¯Á˶àÉÙ£©¡£±éÀúËùÓзָѡÔñ±ä»¯×î´óµÄ×÷Ϊ×îºÏÊʵķָ

Èý¡¢MacOS°²×°XGBoost
ÓÃpip°²×°XGBoost
µÚÒ»²½, °²×°HomeBrew.
/usr/bin/ruby
-e "$(curl -fsSL https://raw.githubusercontent.com
/Homebrew/ install/master/install)" |
HomeBrewÊÇMacµÄÒ»¸ö°ü¹ÜÀíÈí¼þ, ÀàËÆÓÚLinuxÀïÃæµÄapt-get
µÚ¶þ²½, °²×°llvm
µÚÈý²½£¬°²×°clang-omp
ÓÐÈËÌáµ½clang-ompÒѾ´ÓHomeBrewÒÆ³ýÁË, Èç¹ûÕÒ²»µ½clang-omp¿ÉÒÔ³¢ÊÔ
brew install
--with-clang llvm |
µÚËIJ½£¬°²×°XGBoost
²âÊÔһϣ¬´ó¹¦¸æ³É£¡

ËÄ¡¢ÓÃpythonʵÏÖXGBoostËã·¨
pima-indians-diabetes.csvÎļþÖаüÀ¨ÁË8ÁÐÊýÖµÐÍ×Ô±äÁ¿£¬ºÍµÚ9ÁÐ0-1µÄ¶þ·ÖÀàÒò±äÁ¿£¬µ¼Èëµ½pythonÖÐÓÃXGBoostËã·¨×ö̽Ë÷ÐÔ³¢ÊÔ£¬µÃµ½Ô¤²âÊý¾ÝµÄ׼ȷÂÊΪ77.95%¡£
import xgboost
from numpy import loadtxt
from xgboost import XGBClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# ÔØÈëÊý¾Ý¼¯
dataset = loadtxt('pima-indians-diabetes.csv',
delimiter=",")
# split data into X and y
X = dataset[:,0:8]
Y = dataset[:,8]
# °ÑÊý¾Ý¼¯²ð·Ö³ÉѵÁ·¼¯ºÍ²âÊÔ¼¯
seed = 7
test_size = 0.33
X_train, X_test, y_train, y_test = train_test_split(X,
Y, test_size=test_size, random_state=seed)
# ÄâºÏXGBoostÄ£ÐÍ
model = XGBClassifier()
model.fit(X_train, y_train)
# ¶Ô²âÊÔ¼¯×öÔ¤²â
y_pred = model.predict(X_test)
predictions = [round(value) for value in y_pred]
# ÆÀ¹ÀÔ¤²â½á¹û
accuracy = accuracy_score(y_test, predictions)
print("Accuracy: %.2f%%" % (accuracy
* 100.0))
|
½á¹ûÊä³ö£º
ÔÚpythonµÄXGBoost°üÖÐ×îÖØÒªµÄº¯ÊýÊÇXGBClassifier()£¬º¯ÊýÖÐÉæ¼°µ½¶àÖÖ²ÎÊý£¬´ËÍ⻹¿ÉÒÔ¹Ø×¢plot_importance()£¬¸ü¶àµÄ˵Ã÷ÎÒ½«ÔÚÒÔºó½øÐиüС£
|