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网络编程学习笔记(四):域名系统
Jun 09 Python
python中日期和时间格式化输出的方法小结
Mar 19 Python
Python程序中的观察者模式结构编写示例
May 27 Python
对Python进行数据分析_关于Package的安装问题
May 22 Python
pycharm 取消默认的右击运行unittest的方法
Nov 29 Python
Django中更改默认数据库为mysql的方法示例
Dec 05 Python
python实现多层感知器
Jan 18 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
Mar 13 Python
Python bisect模块原理及常见实例
Jun 17 Python
python爬取音频下载的示例代码
Oct 19 Python
python中str内置函数用法总结
Dec 27 Python
python 实现的车牌识别项目
Jan 25 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内核学习教程之php opcode内核实现
2016/01/27 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
javascript 常用功能总结
2012/03/18 Javascript
jquery判断至少有一个checkbox被选中的方法
2015/06/05 Javascript
深入理解JS正则表达式---分组
2016/07/18 Javascript
Backbone View 之间通信的三种方式
2016/08/09 Javascript
巧用jQuery选择器提高写表单效率的方法
2016/08/19 Javascript
jQuery grep()方法详解及实例代码
2016/10/30 Javascript
js数组操作方法总结(必看篇)
2016/11/22 Javascript
分分钟玩转Vue.js组件(二)
2017/03/01 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
vue-router传递参数的几种方式实例详解
2018/11/13 Javascript
Python实现数通设备端口使用情况监控实例
2015/07/15 Python
使用Python对IP进行转换的一些操作技巧小结
2015/11/09 Python
python Crypto模块的安装与使用方法
2017/12/21 Python
python numpy实现文件存取的示例代码
2019/05/26 Python
解决Keras中CNN输入维度报错问题
2020/06/29 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
2021/03/02 Python
解决img标签上下出现间隙的方法
2016/12/14 HTML / CSS
HTML5 History API 实现无刷新跳转
2016/01/11 HTML / CSS
西班牙手机之家:Phone House
2018/10/18 全球购物
俄罗斯奢侈品牌衣服、鞋子和配饰的在线商店:INTERMODA
2020/07/17 全球购物
Vuori官网:运动服装的终级表现
2021/01/27 全球购物
网络通讯中,端口有什么含义,端口的取值范围
2012/11/23 面试题
护士求职推荐信范文
2013/11/23 职场文书
采购主管的岗位职责
2013/12/17 职场文书
《狐假虎威》教学反思
2014/02/07 职场文书
采购部经理岗位职责
2014/02/10 职场文书
2014新课程改革心得体会
2014/03/10 职场文书
劲霸男装广告词
2014/03/21 职场文书
团结演讲稿范文
2014/05/23 职场文书
敬老院献爱心活动总结
2014/07/08 职场文书
2014年党员教师自我剖析材料
2014/09/30 职场文书
2015年学生会干事工作总结
2015/04/09 职场文书
VS2019连接MySQL数据库的过程及常见问题总结
2021/11/27 MySQL
讲解MySQL增删改操作
2022/05/06 MySQL