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的chardet库获得文件编码并修改编码
Jan 22 Python
Python实现各种排序算法的代码示例总结
Dec 11 Python
python运行时间的几种方法
Jun 17 Python
python图像常规操作
Nov 11 Python
详解如何使用Python编写vim插件
Nov 28 Python
学生信息管理系统python版
Oct 17 Python
在python里从协程返回一个值的示例
Feb 19 Python
python celery分布式任务队列的使用详解
Jul 08 Python
python 类的继承 实例方法.静态方法.类方法的代码解析
Aug 23 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
Aug 04 Python
一篇文章弄懂Python中的内建函数
Aug 07 Python
python中validators库的使用方法详解
Sep 23 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
解析PHP计算页面执行时间的实现代码
2013/06/18 PHP
php防止站外远程提交表单的方法
2014/10/20 PHP
PHP中array_keys和array_unique函数源码的分析
2016/02/26 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
将函数的实际参数转换成数组的方法
2010/01/25 Javascript
初识javascript 文档碎片
2010/07/13 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
2013/08/02 Javascript
使用mouse事件实现简单的鼠标经过特效
2015/01/30 Javascript
JavaScript构造函数详解
2015/12/27 Javascript
jQuery遍历节点树方法分析
2016/09/08 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
JS简单实现动态添加HTML标记的方法示例
2018/04/08 Javascript
Vue SSR 组件加载问题
2018/05/02 Javascript
Nodejs让异步变成同步的方法
2019/03/02 NodeJs
详解小程序如何避免多次点击,重复触发事件
2019/04/08 Javascript
如何用webpack4.0撸单页/多页脚手架 (jquery, react, vue, typescript)
2019/06/18 jQuery
17道题让你彻底理解JS中的类型转换
2019/08/08 Javascript
使用JavaScrip模拟实现仿京东搜索框功能
2019/10/16 Javascript
Vue 实现简易多行滚动"弹幕"效果
2020/01/02 Javascript
八种Vue组件间通讯方式合集(推荐)
2020/08/18 Javascript
Python实现识别手写数字大纲
2018/01/29 Python
pandas表连接 索引上的合并方法
2018/06/08 Python
python3中zip()函数使用详解
2018/06/29 Python
Pytorch基本变量类型FloatTensor与Variable用法
2020/01/08 Python
使用Tensorflow将自己的数据分割成batch训练实例
2020/01/20 Python
matplotlib 三维图表绘制方法简介
2020/09/20 Python
Python Charles抓包配置实现流程图解
2020/09/29 Python
HTML5新特性之语义化标签
2017/10/31 HTML / CSS
数以千计的折扣工业产品:ESE Direct
2018/05/20 全球购物
康帕斯酒店预订:Compass Hospitality(支持中文)
2018/08/23 全球购物
《寓言两则》教学反思
2014/02/27 职场文书
班级年度安全计划书
2014/05/01 职场文书
团队拓展活动总结
2014/08/27 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
计划生育责任书
2015/05/09 职场文书
导游词之徐州-云龙山
2019/09/29 职场文书