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 PyQt5实现的简易计算器功能示例
Aug 23 Python
提升Python程序性能的7个习惯
Apr 14 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
Aug 04 Python
关于Flask项目无法使用公网IP访问的解决方式
Nov 19 Python
tensorflow 重置/清除计算图的实现
Jan 19 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
Feb 25 Python
python多维数组分位数的求取方式
Mar 03 Python
Python3.7 读取音频根据文件名生成脚本的代码
Apr 07 Python
Python实现Word表格转成Excel表格的示例代码
Apr 16 Python
Django多层嵌套ManyToMany字段ORM操作详解
May 19 Python
Python通过文本和图片生成词云图
May 21 Python
使用Python通过企业微信应用给企业成员发消息
Apr 18 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环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
phpcms中的评论样式修改方法
2016/10/21 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
PHP文件操作实例总结【文件上传、下载、分页】
2018/12/08 PHP
laravel 实现上传图片到本地和前台访问示例
2019/10/21 PHP
兼容ie和firefox js关闭代码
2008/12/11 Javascript
JS 显示当前日期与时间的代码
2010/03/24 Javascript
用JavaScript对JSON进行模式匹配 (Part 2 - 实现)
2010/07/17 Javascript
深入分析js中的constructor和prototype
2012/04/07 Javascript
浅析JavaScript 调试方法和技巧
2015/10/22 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
jquery 获取select数组与name数组长度的实现代码
2016/06/20 Javascript
获取input标签的所有属性的方法
2016/06/28 Javascript
Nodejs实现多房间简易聊天室功能
2017/06/20 NodeJs
关于jquery form表单序列化的注意事项详解
2017/08/01 jQuery
webpack学习教程之前端性能优化总结
2017/12/05 Javascript
vue+axios 前端实现登录拦截的两种方式(路由拦截、http拦截)
2018/10/24 Javascript
js中实例与对象的区别讲解
2019/01/21 Javascript
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
探索浏览器页面关闭window.close()的使用详解
2020/08/21 Javascript
jQuery实现动态加载瀑布流
2020/09/01 jQuery
JavaScript Blob对象原理及用法详解
2020/10/14 Javascript
[00:32]2018DOTA2亚洲邀请赛出场——LGD
2018/04/04 DOTA
Python 复平面绘图实例
2019/11/21 Python
Python内置方法实现字符串的秘钥加解密(推荐)
2019/12/09 Python
Python3 shelve对象持久存储原理详解
2020/03/23 Python
Tensorflow之MNIST CNN实现并保存、加载模型
2020/06/17 Python
利用Python实现Json序列化库的方法步骤
2020/09/09 Python
The North Face北面德国官网:美国著名户外品牌
2018/12/12 全球购物
李维斯法国官网:Levi’s法国
2019/07/13 全球购物
Keds加拿大官网:购买帆布运动鞋和皮鞋
2019/09/26 全球购物
CHARLES & KEITH加拿大官网:新加坡时尚品牌
2020/03/26 全球购物
大学生社团活动总结
2014/04/26 职场文书
2014年乡镇领导个人整改措施
2014/09/19 职场文书
在Centos 8.0中安装Redis服务器的教程详解
2022/03/21 Redis