xgboost使用案例一

来源:互联网 发布:计算机算法需要学什么 编辑:程序博客网 时间:2024/06/08 18:17
# -*- encoding:utf-8 -*-#xgboost安装教程 参考 http://blog.csdn.net/lht_okk/article/details/54311333#xgboost原理参考 http://www.cnblogs.com/mfryf/p/6238185.html#http://blog.csdn.net/bryan__/article/details/52056112import xgboost as xgbimport numpy as npfrom sklearn.model_selection import train_test_splitdef iris_type(s):    it={'Iris-setosa': 0, 'Iris-versicolor': 1, 'Iris-virginica': 2}    return it[s]if __name__=="__main__":    path='10.iris.data'    data=np.loadtxt(path,dtype=float,delimiter=',',converters={4:iris_type})    x,y=np.split(data,(4,),axis=1)    #print 'x',x    #print 'y',y    x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=1,test_size=50)    data_train=xgb.DMatrix(x_train,label=y_train)    data_test=xgb.DMatrix(x_test,label=y_test)    watch_list=[(data_test,'eval'),(data_train,'train')]    #设置参数    #max_depth:树的最大深度,缺省值为6通常取值3-10    #eta:为了防止过拟合,更新过程中用到的收缩步长,在每次提升计算之后,算法会直接获得新特征的权重    #eta通过缩减特征的权重使得提升计算过程更加保守,默认值0.3  取值范围[0,1] 通常设置为[0.01-0.2]    #silent:取0时表示打印出运行时信息,取1时表示以缄默方式运行,不打印运行时信息。缺省值为0    #建议取0,过程中的输出数据有助于理解模型以及调参。另外实际上我设置其为1也通常无法缄默运行    #objective:缺省值 reg:linear 定义学习任务及相应的学习目标,可选目标函数如下:    # “reg:linear” –线性回归。    #“reg:logistic” –逻辑回归。    #“binary:logistic” –二分类的逻辑回归问题,输出为概率。    #“binary:logitraw” –二分类的逻辑回归问题,输出的结果为wTx。    #“count:poisson” –计数问题的poisson回归,输出结果为poisson分布,在poisson回归中,max_delta_step的缺省值为0    #“multi:softmax” –让XGBoost采用softmax目标函数处理多分类问题,同时需要设置参数num_class(类别个数)    #“multi:softprob” –和softmax一样,但是输出的是ndata * nclass的向量,可以将该向量reshape成ndata行nclass列的矩阵。没行数据表示样本所属于每个类别的概率。    #“rank:pairwise” –set XGBoost to do ranking task by minimizing the pairwise loss    param={'max_depth':2,'eta':1,'silent':1,'objective':'multi:softmax','num_class':3}    bst=xgb.train(param,data_train,num_boost_round=6,evals=watch_list)    y_hat=bst.predict(data_test)    result=y_test.reshape(1,-1)==y_hat    print 'result',result    print '正确率:\t',float(np.sum(result))/len(y_hat)    print 'END.....\n'

[0]eval-merror:0.04train-merror:0.04[1]eval-merror:0.02train-merror:0.02[2]eval-merror:0.04train-merror:0.01[3]eval-merror:0.04train-merror:0.01[4]eval-merror:0.04train-merror:0.01[5]eval-merror:0.04train-merror:0result [[ True  True  True  True  True  True  True  True  True  True  True  True   True  True  True  True  True  True  True  True  True  True False  True   True  True  True  True  True  True  True  True  True  True  True  True   True  True  True  True  True  True False  True  True  True  True  True   True  True]]正确率:0.96END.....

0 0