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正则匹配查询港澳通行证办理进度示例分享
Dec 27 Python
python发送邮件示例(支持中文邮件标题)
Feb 16 Python
python在windows下实现ping操作并接收返回信息的方法
Mar 20 Python
Python面向对象编程中的类和对象学习教程
Mar 30 Python
Python中用函数作为返回值和实现闭包的教程
Apr 27 Python
Python升级导致yum、pip报错的解决方法
Sep 06 Python
python自定义时钟类、定时任务类
Feb 22 Python
Python中注释(多行注释和单行注释)的用法实例
Aug 28 Python
python中bytes和str类型的区别
Oct 21 Python
Python解析json代码实例解析
Nov 25 Python
python不到50行代码完成了多张excel合并的实现示例
May 28 Python
Python单元测试及unittest框架用法实例解析
Jul 09 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
WINDOWS服务器安装多套PHP的另类解决方案
2006/10/09 PHP
PHP的autoload自动加载机制使用说明
2010/12/28 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
Laravel 5框架学习之数据库迁移(Migrations)
2015/04/08 PHP
php 流程控制switch的简单实例
2016/06/07 PHP
PHP类型约束用法示例
2016/09/28 PHP
PHP环境搭建(php+Apache+mysql)
2016/11/14 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
2019/02/15 PHP
laravel 使用事件系统统计浏览量的实现
2019/10/16 PHP
在javascript中随机数 math random如何生成指定范围数值的随机数
2015/10/21 Javascript
jQuery Validation PlugIn的使用方法详解
2015/12/18 Javascript
分享我对JS插件开发的一些感想和心得
2016/02/04 Javascript
全面接触神奇的Bootstrap导航条实战篇
2016/08/01 Javascript
jQuery多级联动下拉插件chained用法示例
2016/08/20 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
2016/12/07 Javascript
微信小程序 Nginx环境配置详细介绍
2017/02/14 Javascript
jQuery EasyUI window窗口使用实例代码
2017/12/25 jQuery
angularJS实现不同视图同步刷新详解
2018/10/09 Javascript
js实现弹出框的拖拽效果实例代码详解
2019/04/16 Javascript
vue中使用vue-pdf的方法详解
2020/09/05 Javascript
Vue如何实现变量表达式选择器
2021/02/18 Vue.js
python的dataframe转换为多维矩阵的方法
2018/04/11 Python
什么是python的必选参数
2020/06/21 Python
五种Python转义表示法
2020/11/27 Python
CSS3+DIV实现漂亮的动画彩色标签
2016/06/16 HTML / CSS
html5设计原理(推荐收藏)
2014/05/17 HTML / CSS
世界上最大的汽车共享网站:Zipcar
2017/01/14 全球购物
Tod’s英国官方网站:意大利奢华手工制作手袋和鞋履
2019/03/15 全球购物
戴森英国官网:Dyson英国
2019/05/07 全球购物
白酒业务员岗位职责
2013/12/27 职场文书
知识竞赛主持词
2014/03/26 职场文书
医药营销个人求职信
2014/04/12 职场文书
新闻学专业职业生涯规划范文:我的人生我做主
2014/09/12 职场文书
民主生活会对照检查材料思想汇报
2014/09/27 职场文书
干部考察材料范文
2014/12/24 职场文书
自定义函数实现单词排序并运用于PostgreSQL(实现代码)
2021/04/22 PostgreSQL