python sklearn包——混淆矩阵、分类报告等自动生成方式


Posted in Python onFebruary 28, 2020

preface:做着最近的任务,对数据处理,做些简单的提特征,用机器学习算法跑下程序得出结果,看看哪些特征的组合较好,这一系列流程必然要用到很多函数,故将自己常用函数记录上。应该说这些函数基本上都会用到,像是数据预处理,处理完了后特征提取、降维、训练预测、通过混淆矩阵看分类效果,得出报告。

1.输入

从数据集开始,提取特征转化为有标签的数据集,转为向量。拆分成训练集和测试集,这里不多讲,在上一篇博客中谈到用StratifiedKFold()函数即可。在训练集中有data和target开始。

2.处理

def my_preprocessing(train_data):
  from sklearn import preprocessing
  X_normalized = preprocessing.normalize(train_data ,norm = "l2",axis=0)#使用l2范式,对特征列进行正则
  return X_normalized
 
def my_feature_selection(data, target):
  from sklearn.feature_selection import SelectKBest
  from sklearn.feature_selection import chi2
  data_new = SelectKBest(chi2, k= 50).fit_transform(data,target)
  return data_new
 
def my_PCA(data):#data without target, just train data, withou train target.
  from sklearn import decomposition
  pca_sklearn = decomposition.PCA()
  pca_sklearn.fit(data)
  main_var = pca_sklearn.explained_variance_
  print sum(main_var)*0.9
  import matplotlib.pyplot as plt
  n = 15
  plt.plot(main_var[:n])
  plt.show()
 
def clf_train(data,target):
  from sklearn import svm
  #from sklearn.linear_model import LogisticRegression
  clf = svm.SVC(C=100,kernel="rbf",gamma=0.001)
  clf.fit(data,target)
 
  #clf_LR = LogisticRegression()
  #clf_LR.fit(x_train, y_train)
  #y_pred_LR = clf_LR.predict(x_test)
  return clf
 
def my_confusion_matrix(y_true, y_pred):
  from sklearn.metrics import confusion_matrix
  labels = list(set(y_true))
  conf_mat = confusion_matrix(y_true, y_pred, labels = labels)
  print "confusion_matrix(left labels: y_true, up labels: y_pred):"
  print "labels\t",
  for i in range(len(labels)):
    print labels[i],"\t",
  print 
  for i in range(len(conf_mat)):
    print i,"\t",
    for j in range(len(conf_mat[i])):
      print conf_mat[i][j],'\t',
    print 
  print 
 
def my_classification_report(y_true, y_pred):
  from sklearn.metrics import classification_report
  print "classification_report(left: labels):"
  print classification_report(y_true, y_pred)

my_preprocess()函数:

主要使用sklearn的preprocessing函数中的normalize()函数,默认参数为l2范式,对特征列进行正则处理。即每一个样例,处理标签,每行的平方和为1.

my_feature_selection()函数:

使用sklearn的feature_selection函数中SelectKBest()函数和chi2()函数,若是用词袋提取了很多维的稀疏特征,有必要使用卡方选取前k个有效的特征。

my_PCA()函数:

主要用来观察前多少个特征是主要特征,并且画图。看看前多少个特征占据主要部分。

clf_train()函数:

可用多种机器学习算法,如SVM, LR, RF, GBDT等等很多,其中像SVM需要调参数的,有专门调试参数的函数如StratifiedKFold()(见前几篇博客)。以达到最优。

my_confusion_matrix()函数:

主要是针对预测出来的结果,和原来的结果对比,算出混淆矩阵,不必自己计算。其对每个类别的混淆矩阵都计算出来了,并且labels参数默认是排序了的。

my_classification_report()函数:

主要通过sklearn.metrics函数中的classification_report()函数,针对每个类别给出详细的准确率、召回率和F-值这三个参数和宏平均值,用来评价算法好坏。另外ROC曲线的话,需要是对二分类才可以。多类别似乎不行。

主要参考sklearn官网

补充拓展:[sklearn] 混淆矩阵——多分类预测结果统计

 调用的函数:confusion_matrix(typeTrue, typePred)

 typeTrue:实际类别,list类型

 typePred:预测类别,list类型

结果如下面的截图:

 第i行:实际为第i类,预测到各个类的样本数

第j列:预测为第j类,实际为各个类的样本数

true↓ predict→

python sklearn包——混淆矩阵、分类报告等自动生成方式

以上这篇python sklearn包——混淆矩阵、分类报告等自动生成方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现windows下模拟按键和鼠标点击的方法
Mar 13 Python
Python之Scrapy爬虫框架安装及简单使用详解
Dec 22 Python
Python列表解析配合if else的方法
Jun 23 Python
pygame游戏之旅 如何制作游戏障碍
Nov 20 Python
python实现给scatter设置颜色渐变条colorbar的方法
Dec 13 Python
一篇文章弄懂Python中所有数组数据类型
Jun 23 Python
python使用递归的方式建立二叉树
Jul 03 Python
Django中的FBV和CBV用法详解
Sep 15 Python
Python中使用gflags实例及原理解析
Dec 13 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
Apr 02 Python
python在CMD界面读取excel所有数据的示例
Sep 28 Python
Python必备技巧之函数的使用详解
Apr 04 Python
python GUI库图形界面开发之PyQt5计数器控件QSpinBox详细使用方法与实例
Feb 28 #Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
Feb 28 #Python
浅谈ROC曲线的最佳阈值如何选取
Feb 28 #Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
Feb 28 #Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
Feb 28 #Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
Feb 28 #Python
Python post请求实现代码实例
Feb 28 #Python
You might like
星际争霸中的对战模式介绍
2020/03/04 星际争霸
解析PHP汉字转换拼音的类
2013/06/18 PHP
PHP加Nginx实现动态裁剪图片方案
2014/03/10 PHP
PHP图像识别技术原理与实现
2016/10/27 PHP
php实现购物车产品删除功能(2)
2020/07/23 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
2017/06/29 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
Mootools 1.2教程 设置和获取样式表属性
2009/09/15 Javascript
基于jQuery的试卷自动排版系统实现代码
2011/01/06 Javascript
无阻塞加载脚本分析[全]
2011/01/20 Javascript
javascript自动改变文字大小和颜色的效果的小例子
2013/08/02 Javascript
js Date概念详细介绍
2013/11/22 Javascript
Node调试工具JSHint的安装及配置教程
2014/05/27 Javascript
jQuery实现悬浮在右上角的网页客服效果代码
2015/10/24 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
2016/08/16 Javascript
原生js实现倒计时--2018
2017/02/21 Javascript
使用 NodeJS+Express 开发服务端的简单介绍
2017/04/07 NodeJs
json对象及数组键值的深度大小写转换问题详解
2018/03/30 Javascript
微信小程序基于picker实现级联菜单
2019/02/15 Javascript
微信小程序云开发实现增删改查功能
2019/05/17 Javascript
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
[15:07]lgd_OG_m2_BP
2019/09/10 DOTA
Python中unittest用法实例
2014/09/25 Python
Python实现数据库编程方法详解
2015/06/09 Python
Python把对应格式的csv文件转换成字典类型存储脚本的方法
2019/02/12 Python
pycharm设置鼠标悬停查看方法设置
2019/07/29 Python
python双端队列原理、实现与使用方法分析
2019/11/27 Python
BSTN意大利:德国街头和运动文化高品质商店
2020/12/22 全球购物
初中班主任评语
2014/04/24 职场文书
工作鉴定评语
2014/05/04 职场文书
2014客服代表实习自我鉴定
2014/09/18 职场文书
物业管理委托协议(2篇)
2014/09/23 职场文书
群众对十八届四中全会的期盼
2014/10/17 职场文书
订货会邀请函
2015/01/31 职场文书
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python