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编写一个简单的FUSE文件系统的教程
Apr 02 Python
python 打印对象的所有属性值的方法
Sep 11 Python
python安装cx_Oracle模块常见问题与解决方法
Feb 21 Python
手把手教你python实现SVM算法
Dec 27 Python
Python OpenCV 直方图的计算与显示的方法示例
Feb 08 Python
python中kmeans聚类实现代码
Feb 23 Python
浅谈PySpark SQL 相关知识介绍
Jun 14 Python
python判断无向图环是否存在的示例
Nov 22 Python
Python爬虫之爬取淘女郎照片示例详解
Jul 28 Python
python中的插入排序的简单用法
Jan 19 Python
Python创建自己的加密货币的示例
Mar 01 Python
Python Pandas数据分析之iloc和loc的用法详解
Nov 11 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
在DC的漫画和电影中,蝙蝠侠的宿敌,小丑的真名是什么?
2020/04/09 欧美动漫
PHP foreach循环使用详解与实例代码
2010/05/08 PHP
一个PHP验证码类代码分享(已封装成类)
2011/07/17 PHP
PHP句法规则详解 入门学习
2011/11/09 PHP
dojo 之基础篇
2007/03/24 Javascript
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
js动画(animate)简单引擎代码示例
2012/12/04 Javascript
JavaScript获取onclick、onchange等事件值的代码
2013/07/22 Javascript
JavaScript中实现PHP的打乱数组函数shuffle实例
2014/10/11 Javascript
jQuery中Ajax的load方法详解
2015/01/14 Javascript
js淡入淡出焦点图幻灯片效果代码分享
2015/09/08 Javascript
原生javascript实现图片无缝滚动效果
2016/02/12 Javascript
深入浅出 jQuery中的事件机制
2016/08/23 Javascript
AngularJS extend用法详解及实例代码
2016/11/15 Javascript
jQuery将表单序列化成一个Object对象的实例
2016/11/29 Javascript
JS实现JSON.stringify的实例代码讲解
2017/02/07 Javascript
js获取json中key所对应的value值的简单方法
2020/06/17 Javascript
ES6的Fetch异步请求的实现方法
2018/12/07 Javascript
angular4中引入echarts的方法示例
2019/01/29 Javascript
vue 获取及修改store.js里的公共变量实例
2019/11/06 Javascript
OpenLayers3实现鼠标移动显示坐标
2020/09/25 Javascript
对Python 窗体(tkinter)树状数据(Treeview)详解
2018/10/11 Python
Python爬虫动态ip代理防止被封的方法
2019/07/07 Python
python re.match()用法相关示例
2021/01/27 Python
html5实现微信打飞机游戏
2014/03/27 HTML / CSS
倩碧美国官网:Clinique美国
2016/07/20 全球购物
奥地利购买珠宝和手表网站:ELLA JUWELEN
2019/09/03 全球购物
LINUX下线程,GDI类的解释
2016/12/14 面试题
师范大学音乐表演专业求职信
2013/10/23 职场文书
年级组长自我鉴定
2014/02/22 职场文书
酒店总经理岗位职责
2014/03/17 职场文书
合作意向书格式及范文
2014/03/31 职场文书
党支部活动策划方案
2014/08/18 职场文书
企业务虚会发言材料
2014/10/20 职场文书
python编程实现清理微信重复缓存文件
2021/11/01 Python
nginx中proxy_pass各种用法详解
2021/11/07 Servers