一、简介

GridSearchCV,即网格搜索,给定指定的模型、参数,GridSearchCV可以自动的寻找到最优的模型及参数。

二、代码

引用包:

from sklearn.model_selection import GridSearchCV

构造分类器:

classifiers = [SVC(random_state = 1, kernel = 'rbf'),    DecisionTreeClassifier(random_state = 1, criterion = 'gini'),RandomForestClassifier(random_state = 1, criterion = 'gini'),KNeighborsClassifier(metric = 'minkowski'),
]

分类器参数:

classifier_param_grid = [{'svc__C':[1], 'svc__gamma':[0.01]},{'decisiontreeclassifier__max_depth':[6, 9, 11]},{'randomforestclassifier__n_estimators':[3, 5, 6]} ,{'kneighborsclassifier__n_neighbors':[4, 6, 8]},
]

完整代码:

# -*- coding: utf-8 -*-
# 信用卡违约率分析
import pandas as pd
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.metrics import accuracy_score
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.neighbors import KNeighborsClassifier
from matplotlib import pyplot as plt
import seaborn as sns# 数据加载
data = pd.read_csv('./UCI_Credit_Card.csv')
# 数据探索
print(data.shape) # 查看数据集大小
print(data.describe()) # 数据集概览# 查看下一个月违约率的情况
next_month = data['default.payment.next.month'].value_counts()
print(next_month)
df = pd.DataFrame({'default.payment.next.month': next_month.index,'values': next_month.values})plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.figure(figsize = (6,6))
plt.title('信用卡违约率客户\n (违约:1,守约:0)')
sns.set_color_codes("pastel")
sns.barplot(x = 'default.payment.next.month', y="values", data=df)
plt.show()# 特征选择,去掉ID字段、最后一个结果字段即可
data.drop(['ID'], inplace=True, axis =1) #ID这个字段没有用
target = data['default.payment.next.month'].valuescolumns = data.columns.tolist()
columns.remove('default.payment.next.month')
features = data[columns].values# 30%作为测试集,其余作为训练集
train_x, test_x, train_y, test_y = train_test_split(features, target, test_size=0.30, stratify = target, random_state = 1)# 构造各种分类器
classifiers = [SVC(random_state = 1, kernel = 'rbf'),    DecisionTreeClassifier(random_state = 1, criterion = 'gini'),RandomForestClassifier(random_state = 1, criterion = 'gini'),KNeighborsClassifier(metric = 'minkowski'),
]# 分类器名称
classifier_names = ['svc', 'decisiontreeclassifier','randomforestclassifier','kneighborsclassifier',
]# 分类器参数
classifier_param_grid = [{'svc__C':[1], 'svc__gamma':[0.01]},{'decisiontreeclassifier__max_depth':[6, 9, 11]},{'randomforestclassifier__n_estimators':[3, 5, 6]} ,{'kneighborsclassifier__n_neighbors':[4, 6, 8]},
]# 对具体的分类器进行GridSearchCV参数调优
def GridSearchCV_work(pipeline, train_x, train_y, test_x, test_y, param_grid, score = 'accuracy'):response = {}gridsearch = GridSearchCV(estimator = pipeline, param_grid = param_grid, scoring = score)# 寻找最优的参数 和最优的准确率分数search = gridsearch.fit(train_x, train_y)print("GridSearch最优参数:", search.best_params_)print("GridSearch最优分数: %0.4lf" %search.best_score_)predict_y = gridsearch.predict(test_x)print("准确率 %0.4lf" %accuracy_score(test_y, predict_y))response['predict_y'] = predict_yresponse['accuracy_score'] = accuracy_score(test_y,predict_y)return responsefor model, model_name, model_param_grid in zip(classifiers, classifier_names, classifier_param_grid):pipeline = Pipeline([('scaler', StandardScaler()),(model_name, model)])result = GridSearchCV_work(pipeline, train_x, train_y, test_x, test_y, model_param_grid , score = 'accuracy')

运行结果:

GridSearch最优参数: {'svc__C': 1, 'svc__gamma': 0.01}
GridSearch最优分数: 0.8186
准确率 0.8172
GridSearch最优参数: {'decisiontreeclassifier__max_depth': 6}
GridSearch最优分数: 0.8208
准确率 0.8113
GridSearch最优参数: {'randomforestclassifier__n_estimators': 6}
GridSearch最优分数: 0.8004
准确率 0.7994
GridSearch最优参数: {'kneighborsclassifier__n_neighbors': 8}
GridSearch最优分数: 0.8040
准确率 0.8036

GridSearchCV——信用卡违约率分析示例相关推荐

  1. python信用卡违约预测分析_数据挖掘实战(1):信用卡违约率分析

    在数据挖掘的过程中,我们经常会遇到一些问题,比如:如何选择各种分类器,到底选择哪个分类算法,是 SVM,决策树,还是 KNN?如何优化分类器的参数,以便得到更好的分类准确率? 这两个问题,是数据挖掘核 ...

  2. 数据挖掘实战:信用卡违约率分析建模

    这次做一个信用卡违约率的分析项目,具体的数据集可以在这里下载 数据集传送门 文章目录 提出问题 数据集解读 数据探索 数据处理 建模分析 总结与不足 提出问题 总体的违约率情况怎样 什么样的人群容易违 ...

  3. FPGA的设计艺术(6)STA实战之SmartTime时序约束及分析示例(I)

    前言 FPGA进行时序分析通常使用厂家的编译工具,进行时序分析,但是万变不离其宗,时序分析的知识通常都是通用的,原理都是一致的.下面根据SmartTime的资料来看下时序分析的实际操作是如何的,这在其 ...

  4. [有限元] Ansys Workbench 19.2 平面应力问题分析示例

    例题 1 试生成图 1 所示双孔板拉伸问题恰当的有限元网格(L=1000mm),计算孔边最大应力σmax,绘出变形及应力云图.并通过网格细分说明结果的精度. 操作步骤: 1.打开 Ansys Work ...

  5. Android中app卡顿原因分析示例

    http://www.cnblogs.com/zhucai/p/weibo-graphics-performance-analyse.html 朱才 专注于Android图形动画 MIUI工程师 博客 ...

  6. 数据挖掘—逻辑回归分类—信用卡欺诈分析

    文章目录 1.分析目的: 2.掌握要点: 3.构建逻辑回归分类器 4.模型评估指标 5.精确度和召回率(不平衡数据衡量指标) 6.案例分析: 1.分析目的: 信用卡欺诈的危害性大,如何通过遗忘的交易数 ...

  7. 计算机专业的swot分析图,计算机专业学生个人SWOT分析示例.doc

    计算机专业学生个人SWOT分析示例.doc 一.个人背景 基本情况xxx,x,1992年出生,xxxx年x月考入xxx大学xxxx专业.二.内外部环境分析1.内部环境分析Strengths* 生活态度 ...

  8. FPGA的设计艺术(7)STA实战之SmartTime时序约束及分析示例(II)

    前言 本文续FPGA的设计艺术(6)STA实战之SmartTime时序约束及分析示例(I),分析了时钟的不确定性,多周期路径,以及门控时钟的STA分析方法.可以使用各大厂家的时序分析工具,大多数都自带 ...

  9. PSM倾向性评分分析介绍、spss进行倾向性评分分析示例

    PSM倾向性评分分析介绍.spss进行倾向性评分分析示例 目录 PSM倾向性评分分析介绍.spss进行倾向性评分分析示例 PSM倾向性评分分析

  10. Python3数据分析与挖掘建模(6)单因子分析:离散分布分析示例

    1. 离散分布分析示例 相关库: pandas详细用法 numpy详细用法 1.1 引入算法库 # 引入 pandas库 import pandas as pd # 引入 numpy库 import ...

最新文章

  1. mysql oracle sqlit_【Go语言】连接数据库SQLite、MySQL、Oracle
  2. (二)把域服务升级和迁移到Windows Server 2012 R2上
  3. UA MATH571A 回归分析 概念与R code总结
  4. VS.NET 学习方法论——我的VS.NET学习之旅
  5. Python:file (read,readline,readline )使用方法
  6. 在单节点和多节点上的Hadoop设置
  7. php订阅系统,php redis pub/sub(Publish/Subscribe,发布/订阅的信息系统)之基本使用
  8. 详解HTTP协议~~~
  9. 详述MySQL事务的实现原理
  10. OpenShift 4.3 - 基于虚拟机的BareMetal离线安装(Shell说明)
  11. Effective C++_笔记_条款06_若不想使用编译器自动生成的函数,就该明确拒绝
  12. 大数据的分析手段有哪几种
  13. 090723 T Code Generate 的思考
  14. 矩阵运算_Eigen使用_基本数据类型
  15. linux中zip文件能转换tar,linux 怎么把rar转换成zip 或者 tar
  16. 《数据库系统概论》复习
  17. 自考本科和成人高考对于考公务员来说都一样吗?
  18. netscape.exe_评论-Netscape 6.1
  19. 划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字。如果谁比划出的数字正好等于两人喊出的数字之和,谁就输了,输家罚一杯酒。两人同赢或两人同输
  20. 干货 | 节省55%测试时间,携程酒店比对平台介绍

热门文章

  1. gradle 离线模式offline 用法
  2. 自然语言处理3 -- 词性标注
  3. CHD 常用web端口
  4. 大数据还是人工智能?哪个发展更好
  5. android中如何取得docx文件,如何显示或读取DOCX文件(how to Show or Read docx file)
  6. 计算机骂人的专业术语,台湾网友分享“如何用本专业术语骂人不带脏字”
  7. 解决VirtualBox导入虚拟机文件报错E_INVALIDARG (0x80070057)
  8. python做游戏怎么实现窗口_pygame游戏之旅 创建游戏窗口界面
  9. 公有云、私有云、私有化_私有云的未来是什么?
  10. 51 nod 1682 中位数计数