window下在anacoda3中安装python版本的xgboost库和实例演示

最近科研用到分类器,师兄们说xgboost很好,于是便了解了一下:

xgboost是近年来很受追捧的机器学习算法,由华盛顿大学的陈天奇提出。最近在学习机器学习,所以需要安装这一利器。然而,在网上找了很多安装xgboost的教程,有些方法太复杂,要安装额外的几个软件,有些看着简单但是自己按步骤安装了一遍,进行测试的时候还是没有成功。

最近终于发现了一个超级简单的办法,主要是发现了这个网址:https://www.lfd.uci.edu/~gohlke/pythonlibs/

里面有许多库的.whl文件,在里面找到适合自己电脑的版本如(python 3.6+win64)。

下载下来之后把文件保存在一个文件夹中,如 D:\Anaconda3\mywhl。mywhl是在Anaconda3文件夹下自定义的一个文件夹。接下来启动 Anaconda Prompt. 将路径定位到放置.whl文件的目录下。

接下来输入 pip install xgboost-0.6+20171121-cp36-cp36m-win_amd64.whl,后边的一大串是完整的文件名,不要输错哦!!!

会提示你安装成功。

最后一行显示安装成功了,自己也可以使用命令 conda list 或者 pip list 查看清单里面是否有xgboost库。

最后来进行测试,打开spyder,建立一个.py文件,输入下列测试代码:

没有出错的话,就会提示下面的语句。

[0]     eval-auc:0.5    train-auc:0.5
[1]     eval-auc:0.5    train-auc:0.5
[2]     eval-auc:0.5    train-auc:0.5
[3]     eval-auc:0.5    train-auc:0.5
[4]     eval-auc:0.5    train-auc:0.5
[5]     eval-auc:0.5    train-auc:0.5
[6]     eval-auc:0.5    train-auc:0.5
[7]     eval-auc:0.5    train-auc:0.5
[8]     eval-auc:0.5    train-auc:0.5
[9]     eval-auc:0.5    train-auc:0.5

然后,下面的代码是我自己编写的二分类的code:

import scipy.io as sio
# 导入必要的工具包
import xgboost as xgb
import numpy as np
# 计算分类正确率
from sklearn.metrics import accuracy_score

# read in data,数据在xgboost安装的路径下的demo目录,现在我们将其copy到当前代码下的data目录
#my_workpath = './data/data/'
#dtrain = xgb.DMatrix(my_workpath + 'agaricus.txt.train')
#dtest = xgb.DMatrix(my_workpath + 'agaricus.txt.test')
from sklearn.model_selection import KFold


root='E:/xuhaohao/python/32feature/'
features0=(sio.loadmat(root+'feature0.mat'))['feature0']#加载.mat 58*608
features1=(sio.loadmat(root+'feature1.mat'))['feature1']
#加载.mat 58*608

y1=np.zeros((1411,1))
y2=np.ones((2226,1))
y=np.vstack((y1,y2))
X=np.vstack((features0,features1))
kf = KFold(n_splits=5,shuffle=True, random_state=1)
kf.get_n_splits(X)
m=np.zeros((1,5));
i=0;
for train_index, test_index in kf.split(X): 
    X_train, X_test = X[train_index], X[test_index]
    y_train, y_test = y[train_index], y[test_index]
    dtrain = xgb.DMatrix( X_train, label=y_train) 
    dtest = xgb.DMatrix( X_test, label=y_test) 

# specify parameters via map
    #param = {'max_depth':2, 'eta':0.07, 'silent':0, 'objective':'multi:softmax','num_class': 2}
    param = {
    'booster': 'gbtree',
    #'objective': 'binary:logistic',  # 多分类的问题
    'num_class': 2,               # 类别数,与 multisoftmax 并用
    'gamma': 0.1,                  # 用于控制是否后剪枝的参数,越大越保守,一般0.1、0.2这样子。
    'max_depth': 7,               # 构建树的深度,越大越容易过拟合
    'lambda': 2,                   # 控制模型复杂度的权重值的L2正则化项参数,参数越大,模型越不容易过拟合。
    'subsample': 0.9,              # 随机采样训练样本
    'colsample_bytree': 0.7,       # 生成树时进行的列采样
    'min_child_weight': 3,
    'silent': 1,                   # 设置成1则没有运行信息输出,最好是设置为0.
    'eta': 0.1,                  # 如同学习率
    'seed': 1000,
    'nthread': 4, 
    'n_estimators':500                # cpu 线程数
    }
#print(param)

# 设置boosting迭代计算次数
    num_round = 20
 
#import time
#starttime = time.clock()
 
    bst = xgb.train(param, dtrain, num_round) #  dtrain是训练数据集
 
#endtime = time.clock()
#print (endtime - starttime)

    train_preds = bst.predict(dtrain)
    train_predictions = [round(value) for value in train_preds]
    y_train = dtrain.get_label() #值为输入数据的第一行
    train_accuracy = accuracy_score(y_train, train_predictions)
    print ("Train Accuary: %.2f%%" % (train_accuracy * 100.0))


# make prediction
    preds = bst.predict(dtest)

    predictions = [round(value) for value in preds]

    y_test = dtest.get_label()
    test_accuracy = accuracy_score(y_test, predictions)
    print("Test Accuracy: %.2f%%" % (test_accuracy * 100.0))
    m[0][i]=test_accuracy
    i=i+1;
n=np.mean(m);
print(n); 

猜你喜欢

转载自blog.csdn.net/zuyuhuo6777/article/details/81914061
今日推荐