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 中文乱码问题深入分析
Mar 13 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
May 24 Python
打包发布Python模块的方法详解
Sep 18 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
May 16 Python
浅谈python编译pyc工程--导包问题解决
Mar 20 Python
pycharm修改file type方式
Nov 19 Python
python实现在多维数组中挑选符合条件的全部元素
Nov 26 Python
Python二次规划和线性规划使用实例
Dec 09 Python
tensorboard显示空白的解决
Feb 15 Python
Python爬虫实现HTTP网络请求多种实现方式
Jun 19 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
Feb 03 Python
django inspectdb 操作已有数据库数据的使用步骤
Feb 07 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
mysql中存储过程、函数的一些问题
2007/02/14 PHP
mac下安装nginx和php
2013/11/04 PHP
JS的数组的扩展实例代码
2008/07/09 Javascript
javascript让setInteval里的函数参数中的this指向特定的对象
2010/01/31 Javascript
基于jQuery的js分页代码
2010/06/10 Javascript
基于Jquery的简单图片切换效果
2011/01/06 Javascript
html的DOM中document对象images集合用法实例
2015/01/21 Javascript
JQuery Mobile实现导航栏和页脚
2016/03/09 Javascript
让浏览器崩溃的12行JS代码(DoS攻击分析及防御)
2016/10/10 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
2017/02/19 Javascript
jQuery实现菜单的显示和隐藏功能示例
2018/07/24 jQuery
微信小程序实现收藏与取消收藏切换图片功能
2018/08/03 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
layui+jquery支持IE8的表格分页方法
2019/09/28 jQuery
vue获取form表单的值示例
2019/10/29 Javascript
JavaScript多种滤镜算法实现代码实例
2019/12/10 Javascript
JS window对象简单操作完整示例
2020/01/14 Javascript
vue制作toast组件npm包示例代码
2020/10/29 Javascript
[05:04]DOTA2上海特级锦标赛主赛事第二日TOP10
2016/03/04 DOTA
Python基于Tkinter实现的记事本实例
2015/06/17 Python
python 全文检索引擎详解
2017/04/25 Python
Python清空文件并替换内容的实例
2018/10/22 Python
pandas 如何分割字符的实现方法
2019/07/29 Python
Python 转换文本编码实现解析
2019/08/27 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
2020/06/04 Python
Pytorch 使用CNN图像分类的实现
2020/06/16 Python
python 对一幅灰度图像进行直方图均衡化
2020/10/27 Python
大学生就业自荐信
2013/10/26 职场文书
小型女装店的创业计划书
2014/01/09 职场文书
学校门卫管理制度
2014/01/30 职场文书
《宋庆龄故居的樟树》教学反思
2014/04/07 职场文书
代理协议书范本
2014/04/22 职场文书
群众路线对照检查剖析材料
2014/10/09 职场文书
走群众路线学习笔记
2014/11/06 职场文书
2015年个人招商工作总结
2015/04/25 职场文书
教您:房贷工资收入证明应该怎么写?
2019/08/19 职场文书