SklearnLearningCurveSklearn_LearningCurveSklearnL​earningCurve

# 运行 xgboost安装包中的示例程序
import xgboost as xgb
from xgboost import XGBClassifier# 加载LibSVM格式数据模块
from sklearn.datasets import load_svmlight_filefrom sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_scorefrom matplotlib import pyplot
# read in data,数据在xgboost安装的路径下的demo目录,现在copy到代码目录下的data目录
my_workpath = './data/'
X_train,y_train = load_svmlight_file(my_workpath + 'agaricus.txt.train')
X_test,y_test = load_svmlight_file(my_workpath + 'agaricus.txt.test')X_train.shape

训练集-校验集分离

假设我们取1/3的训练数据做为校验数据
ps: 为什么要校验?

# split data into train and test sets, 1/3的训练数据作为校验数据
seed = 7
test_size = 0.33
X_train_part, X_validate, y_train_part, y_validate= train_test_split(X_train, y_train, test_size=test_size,random_state=seed)X_train_part.shape
X_validate.shape

训练模型

# 设置boosting迭代计算次数
num_round = 100#bst = XGBClassifier(param)
#bst = XGBClassifier()
bst =XGBClassifier(max_depth=2, learning_rate=0.1, n_estimators=num_round, silent=True, objective='binary:logistic')eval_set = [(X_train_part, y_train_part), (X_validate, y_validate)]
bst.fit(X_train_part, y_train_part, eval_metric=["error", "logloss"], eval_set=eval_set, verbose=True)


模型在每次校验集上的性能存在模型中,可用来进一步进行分析 model.evals result() 返回一个字典:评估数据集和分数

显示学习曲线

# retrieve performance metrics
results = bst.evals_result()
#print(results)epochs = len(results['validation_0']['error'])
x_axis = range(0, epochs)# plot log loss
fig, ax = pyplot.subplots()
ax.plot(x_axis, results['validation_0']['logloss'], label='Train')
ax.plot(x_axis, results['validation_1']['logloss'], label='Test')
ax.legend()
pyplot.ylabel('Log Loss')
pyplot.title('XGBoost Log Loss')
pyplot.show()# plot classification error
fig, ax = pyplot.subplots()
ax.plot(x_axis, results['validation_0']['error'], label='Train')
ax.plot(x_axis, results['validation_1']['error'], label='Test')
ax.legend()
pyplot.ylabel('Classification Error')
pyplot.title('XGBoost Classification Error')
pyplot.show()

测试

模型训练好后,可以用训练好的模型对测试数据进行预测

XGBoost预测的输出是概率,输出值是样本为第一类的概率。我们需要将概率值转换为0或1。

# make prediction
preds = bst.predict(X_test)
predictions = [round(value) for value in preds]test_accuracy = accuracy_score(y_test, predictions)
print("Test Accuracy: %.2f%%" % (test_accuracy * 100.0))

Sklearn_LearningCurve相关推荐

最新文章

  1. 给初恋女孩的信....
  2. WinDbg的cmdtree命令
  3. 浅谈.Net异步编程的前世今生----APM篇
  4. discuz仿文明争霸游戏官网模版
  5. Java 获得Class的绝对路径方法
  6. 时钟同步与时间同步的区别
  7. 电池充电语音警报——隐私政策
  8. css实现一个温度计图表
  9. 山石防火墙命令查看配置_Hillstone常用配置命令整理
  10. python刷题大杂烩
  11. 基于PSINS工具箱的卡尔曼滤波与SINS/GNSS组合导航
  12. 物联网数据的十大特征
  13. 基于Java+SpringBoot+vue+element实现毕业就业招聘系统
  14. 测度论与概率论基础学习笔记5——2.3测度的扩张和测度空间的完备化
  15. android pdfview,Android PDF开发:android-pdfview
  16. 华为OD机试 - 跳房子I(Java JS Python)
  17. [小说]魔王冢(47)程强之死
  18. MATLAB神经网络工具箱中感知器权值和阈值的学习函数learnp
  19. MyBatis源码学习笔记(从设计模式看源码)
  20. 宝马宣布国产3系5系即将发布

热门文章

  1. MFC在两控件间画线
  2. 计算机无法设置壁纸黑屏,电脑界面为什么无法换壁纸 一直黑屏 但有图标
  3. 【tensorrt】——Network has dynamic or shape inputs, but no optimization profile has been defined.
  4. go语言程序设计学习笔记-1
  5. 【转】电子毕业设计题目
  6. 计算机基础及photoshop应用试题,计算机基础及Photoshop应用选择题(计算机一级B考试卷).doc...
  7. 电话卡插到终端服务器通话时长,如何降低呼叫中心通话时长而不影响服务质量...
  8. 红绿灯的html代码,红绿灯.html
  9. Studing Day2 - python基础2
  10. 数学中奇妙的“金蝉脱壳”(转)