当前位置:   article > 正文

python 分类变量xgboost_使用xgboost多分类模型识别手写数字

xgb 怎么识别分类变量

使用xgboost多分类模型识别手写数字

当然啦! 在许多网站上都有着类似的数据。

安装xgboost

大家可以去这个网站是python外包库的下载网站找到xgboost下载,然后打开cmd输入pip install xgboost下载路径。既可以了。

在安装好了后。就可以提取训练集和测试集了。

代码如下:

import xgboost as xgb

import pandas as pd

import time

import numpy as np

dataset=pd.read_csv("mnist_train",header=None)

train=dataset.iloc[:,:784].values

labels=dataset.iloc[:,784:785].values

tests=pd.read_csv("mini_test.csv")#注意自己数据路径

test=tests.iloc[:,:].values`

这样我们就可以得到了数据集

接下来我们就要去使用模型了

params={

'booster':'gbtree',

# 这里手写数字是0-9,是一个多类的问题,因此采用了multisoft多分类器,

'objective': 'multi:softmax',

'num_class':10, # 类数,与 multisoftmax 并用

'gamma':0.05, # 在树的叶子节点下一个分区的最小损失,越大算法模型越保守 。[0:]

'max_depth':12, # 构建树的深度 [1:]

#'lambda':450, # L2 正则项权重

'subsample':0.4, # 采样训练数据,设置为0.5,随机选择一般的数据实例 (0:1]

'colsample_bytree':0.7, # 构建树树时的采样比率 (0:1]

#'min_child_weight':12, # 节点的最少特征数

'silent':1 ,

'eta': 0.05, # 如同学习率

'seed':710,

'nthread':4,# cpu 线程数,根据自己U的个数适当调整

}

plst = list(params.items())

#Using 10000 rows for early stopping.

offset = 50000 # 训练集中数据60000,划分50000用作训练,10000用作验证

num_rounds = 50 # 迭代你次数

xgtest = xgb.DMatrix(test)

# 划分训练集与验证集

xgtrain = xgb.DMatrix(train[:offset,:], label=labels[:offset])

xgval = xgb.DMatrix(train[offset:,:], label=labels[offset:])

# return 训练和验证的错误率

watchlist = [(xgtrain, 'train'),(xgval, 'val')]

# training model

# early_stopping_rounds 当设置的迭代次数较大时,early_stopping_rounds 可在一定的迭代次数内准确率没有提升就停止训练

model = xgb.train(plst, xgtrain, num_rounds, watchlist,early_stopping_rounds=100)

#model.save_model('./model/xgb.model') # 用于存储训练出的模型

preds = model.predict(xgtest,ntree_limit=model.best_iteration)

print(preds)

xgboost 可以处理多分类问题,像在手写数字识别中0-9 ,10种不同的答案。 在手写数字识别中是需要将模型改成多分类既可以'objective': 'multi:softmax', 'num_class':10, 在这种模型中识别率达到了95% 左右,相比别的一些深度学习的可以达到0.99

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号