基于之前 SKlearn API ,增加了储存模型和读取模型的功能,分别写在两段代码里面。

第一段是训练和保存模型,和之前差不多:

import sklearn as sk
import xgboost as xgb
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split # 功能:数据集按比例切分为训练集和测试集
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
from sklearn.preprocessing import scale # 数据集标准化
import matplotlib.pyplot as plt
from pandas_ml import ConfusionMatrix # 引入混淆矩阵
from xgboost.sklearn import XGBClassifier
from sklearn.externals import joblib # 保存和读取模型用df = pd.read_csv('creditcard.csv', low_memory=False)X = df.iloc[:,:-1] # 基于位置的纯整数索引
y = df['Class'] # 类别
X_scaled = scale(X) # 标准化train_X, test_X, train_y, test_y = train_test_split(X, y, test_size=0.35 ,random_state = 12) # dtrain = xgb.DMatrix(train_X, label = train_y)
# dtest = xgb.DMatrix(test_X, label = test_y)XGBC = xgb.XGBClassifier(gamma = 0.1,                      # Gamma指定了节点分裂所需的最小损失函数下降值,值越大,算法越保守。learning_rate = 0.3,              # 学习速率max_delta_step = 0,               # 限制每棵树权重改变的最大步长。0为没有限制,越大越保守。可用于样本不平衡的时候。max_depth = 5,                    # 树的最大深度min_child_weight = 6,             # 最小叶子节点样本权重和。低避免过拟合,太高导致欠拟合。missing = None,                   # 如果有缺失值则替换。默认 None 就是 np.nann_estimators = 250,               # 树的数量nthread = 8,                      # 并行线程数量objective = 'binary:logistic',    # 指定学习任务和相应的学习目标或要使用的自定义目标函数#'objective':'multi:softprob',    # 定义学习任务及相应的学习目标#'objective':'reg:linear',        # 线性回归#'objective':'reg:logistic',      # 逻辑回归#'objective':'binary:logistic',   # 二分类的逻辑回归问题,输出为概率#'objective':'binary:logitraw',   # 二分类的逻辑回归问题,输出结果为 wTx,wTx指机器学习线性模型f(x)=wTx+b#'objective':'count:poisson'      # 计数问题的poisson回归,输出结果为poisson分布#'objective':'multi:softmax'      # 让XGBoost采用softmax目标函数处理多分类问题,同时需要设置参数num_class#'objective':'multi:softprob'     # 和softmax一样,但是输出的是ndata * nclass的向量,# 可以将该向量reshape成ndata行nclass列的矩阵。# 每行数据表示样本所属于每个类别的概率。reg_alpha = 1,                    # 权重的L1正则化项。默认1reg_lambda = 1,                   # 权重的L2正则化项。默认1scale_pos_weight = 10000,         # 数字变大,会增加对少量诈骗样本的学习权重,这里10000比较好seed = 0,                         # 随机种子silent = True,                    # 静默模式开启,不会输出任何信息subsample = 0.9,                  # 控制对于每棵树,随机采样的比例。减小会更加保守,避免过拟,过小会导致欠拟合。base_score = 0.5)                 # 所有实例的初始预测评分,全局偏差 bst = XGBC.fit(train_X, train_y)
preds = bst.predict(test_X) # 对测试集作出预测
print("训练完成!")
print("保存模型...")
joblib.dump(bst,'XGBmodel.pkl') # 保存模型
print("保存成功!")# 精确度(Precision):
# P = TP/(TP+FP) ;  反映了被分类器判定的正例中真正的正例样本的比重
print("精确度(Precision):", precision_score(test_y, preds, average='macro')) # ?? %
print("召回率(Recall):", recall_score(test_y, preds, average='macro')) # ?? %predicted_y = np.array(preds)
right_y = np.array(test_y)# 混淆矩阵的每一列代表了预测类别,
# 每一列的总数表示预测为该类别的数据的数目;
# 每一行代表了数据的真实归属类别,
# 每一行的数据总数表示该类别的数据实例的数目。
confusion_matrix = ConfusionMatrix(right_y, predicted_y)
# print("Confusion matrix:\n%s" % confusion_matrix)
# confusion_matrix.plot(normalized=True)
# plt.show()
confusion_matrix.print_stats()'''
population: 99683
P: 176
N: 99507
PositiveTest: 170
NegativeTest: 99513
TP: 147
TN: 99484
FP: 23
FN: 29
TPR: 0.835227272727
TNR: 0.999768860482
PPV: 0.864705882353
NPV: 0.999708580788
FPR: 0.000231139517823
FDR: 0.135294117647
FNR: 0.164772727273
ACC: 0.999478346358
F1_score: 0.849710982659
MCC: 0.849577974181
informedness: 0.834996133209
markedness: 0.864414463141
prevalence: 0.00176559694231
LRP: 3613.52000988
LRN: 0.164810821567
DOR: 21925.2593703
FOR: 0.00029141921156s
'''

理论上这样就成功保存模型了,接下来就是读取模型直接用,注意路径。

import sklearn as sk
import xgboost as xgb
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split # 功能:数据集按比例切分为训练集和测试集
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
from sklearn.preprocessing import scale # 数据集标准化
import matplotlib.pyplot as plt
from pandas_ml import ConfusionMatrix # 引入混淆矩阵
from xgboost.sklearn import XGBClassifier
from sklearn.externals import joblibdf = pd.read_csv('creditcard.csv', low_memory=False)X = df.iloc[:,:-1] # 基于位置的纯整数索引
y = df['Class'] # 类别
X_scaled = scale(X) # 标准化train_X, test_X, train_y, test_y = train_test_split(X, y, test_size=0.35 ,random_state = 99) print("读取模型...")
bst = joblib.load("XGBmodel.pkl")
print("读取成功!")preds = bst.predict(test_X) # 对测试集作出预测
print("精确度(Precision):", precision_score(test_y, preds, average='macro')) # ?? %
print("召回率(Recall):", recall_score(test_y, preds, average='macro')) # ?? %predicted_y = np.array(preds)
right_y = np.array(test_y)confusion_matrix = ConfusionMatrix(right_y, predicted_y)
confusion_matrix.print_stats()

清楚明白。

XGBoost 与 信用卡诈骗数据集 三相关推荐

  1. ML之XGBoost:利用XGBoost算法对波士顿数据集回归预测(模型调参【2种方法,ShuffleSplit+GridSearchCV、TimeSeriesSplitGSCV】、模型评估)

    ML之XGBoost:利用XGBoost算法对波士顿数据集回归预测(模型调参[2种方法,ShuffleSplit+GridSearchCV.TimeSeriesSplitGSCV].模型评估) 目录 ...

  2. ML之xgboost:利用xgboost算法对breast_cancer数据集实现二分类预测并进行graphviz二叉树节点图可视化

    ML之xgboost:利用xgboost算法对breast_cancer数据集实现二分类预测并进行graphviz二叉树节点图可视化 目录 实现结果 实现代码 实现结果

  3. ML之DT:基于简单回归问题训练决策树(DIY数据集+三种深度的二元DT性能比较)

    ML之DT:基于简单回归问题训练决策树(DIY数据集+三种深度的二元DT性能比较) 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 for i in range(1, len(xPl ...

  4. 机器学习:基于XGBoost对信用卡欺诈行为的识别

    机器学习:基于XGBoost对信用卡欺诈行为的识别 作者:i阿极 作者简介:Python领域新星作者.多项比赛获奖者:博主个人首页

  5. 网购切莫小看1毛钱 暗藏信用卡诈骗玄机

    淘宝.京东.团购网吸引了大量网民,网购的火爆的同时也乐翻了那些职业网上骗子.在百度知道.淘宝网控诉购物被骗的帖子比比皆是.钓鱼欺诈网站 严重威胁网购安全,网民在线购物时,可使用金山卫士.金山网盾防骗. ...

  6. Pytorch搭建网络训练葡萄酒分类数据集(三分类)

    代码如下: import torch import torch.nn as nn import torch.optim as optim import torch.nn.functional as F ...

  7. 微博数据处理——获取广告用户数据集(三)

    任务:需要获取广告用户候选的数据集 实现思路: 1.在微博话题中筛选含广告用户较多的话题 2.使用python爬虫技术获取话题用户账号 3.获取用户行为信息,并进行手工标注 1.筛选广告话题 通过对微 ...

  8. (网络安全数据集三)常见弱点枚举 CWE数据集和通用平台枚举 CPE解析

    1.CWE解析 下面是CWE-209 信息的解析 包含 威胁名称 .相关弱点.常见后果.检测方法.缓解措施.例子和 条目更改的信息等. <Weaknesses><Weakness I ...

  9. 【机器学习】信用卡欺诈检测|用启发式搜索优化XGBoost超参数

    本文将展示如何使用模拟退火[1]启发式搜索[2]机器学习算法中超参数的最佳组合.这些方法比盲随机生成参数得到的模型效果好.另外,模型效果最好是分别微调每个超参数,因为它们之间通常存在交互. 模拟退火简 ...

  10. 大战三回合:XGBoost、LightGBM和Catboost一决高低 | 程序员硬核算法评测

    作者 | LAVANYA 译者 | 陆离 责编 | Jane 出品 | AI科技大本营(ID: rgznai100) [导读]XGBoost.LightGBM 和 Catboost 是三个基于 GBD ...

最新文章

  1. python是c语言写的吗-先学C语言还是Python?资深程序员往往是这样建议的!
  2. OpenCASCADE:Modeling Algorithms模块之Sweeping: Prism, Revolution and Pipe
  3. 精打细算油盐_Java:ChronicleMap第1部分,精打细算
  4. Java(1-15)
  5. 数据库笔记11:创建与管理存储过程
  6. 【转】无需刻录DMG光盘,教你在VMWare下安装MAC OS X Snow Leopard 10.6
  7. 通过maven test 报org.apache.ibatis.binding.BindingException: Invalid bound statement
  8. 如果网站的 Cookie 特别多特别大,会发生什么情况?
  9. 【观点讨论与支撑】真的是而立之年没有立,以后就没有希望了吗?
  10. bootstrap创建响应式网站
  11. python简单绘图代码-python绘图代码
  12. 微信文件夹下不可言说的秘密自动生成小视频文件
  13. android实现应用商店开发,基于Android平台的应用商店客户端的设计与实现
  14. 测序数据量,测序深度和测序覆盖度
  15. Everedit软件下载、安装和运行(免注册)
  16. can协议crc计算_CAN总线通信的CRC校验方法
  17. SQL链接EXCEL文件
  18. 《徐卓-心理咨询师校园报告 》--心得
  19. 深度学习OSSIM关联分析(附源码注解)
  20. Visual Studio 实用快捷键汇总

热门文章

  1. 多 “维” 优化——前端高并发策略的更深层思考
  2. windows 查看电脑开关机时间
  3. App中WebView网页加载优化实战干货
  4. 一则两年前的可怕预言:2013年中国经济危机将爆发!
  5. 精灵商场项目(二)--Github+EasyUI+商品列表
  6. 互联网乡镇综治云平台解决方案
  7. python怎么暂停运行_如何让python程序暂停?
  8. 蓝桥杯嵌入式总结(KEY配置_按键扫描(三行代码)_矩阵按键_GPIO口输入和输出类型)
  9. 改变cmd窗口的前景色和背景色
  10. 淘宝信用等级|淘宝买家信用等级|淘宝卖家信用等级(图片介绍更清晰)