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实现代理服务功能实例
Nov 15 Python
在Django中限制已登录用户的访问的方法
Jul 23 Python
python3人脸识别的两种方法
Apr 25 Python
pow在python中的含义及用法
Jul 11 Python
python实现美团订单推送到测试环境,提供便利操作示例
Aug 09 Python
Django学习之文件上传与下载
Oct 06 Python
Python 中list ,set,dict的大规模查找效率对比详解
Oct 11 Python
NumPy中的维度Axis详解
Nov 26 Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
Dec 12 Python
python3格式化字符串 f-string的高级用法(推荐)
Mar 04 Python
教你利用python实现企业微信发送消息
May 23 Python
Python Pygame实战在打砖块游戏的实现
Mar 17 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
DOTA2 1月28日更新:监管系统降临刀塔世界
2021/01/28 DOTA
让PHP以ROOT权限执行系统命令的方法
2011/02/10 PHP
利用PHP实现智能文件类型检测的实现代码
2011/08/02 PHP
关于svn冲突的解决方法
2013/06/21 PHP
javascript 特殊字符串
2009/02/25 Javascript
JavaScript 异步调用框架 (Part 6 - 实例 & 模式)
2009/08/04 Javascript
用jQuery模拟select下拉框的简单示例代码
2014/01/26 Javascript
JavaScript获取路径设计源码
2014/05/22 Javascript
javascript常见操作汇总
2014/09/03 Javascript
JavaScript设计模式之外观模式实例
2014/10/10 Javascript
css如何让浮动元素水平居中
2015/08/07 Javascript
JS组件Bootstrap Table使用方法详解
2016/02/02 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
jQuery插件HighCharts绘制2D金字塔图效果示例【附demo源码下载】
2017/03/09 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
vue中的 $slot 获取插槽的节点实例
2019/11/12 Javascript
python中日期和时间格式化输出的方法小结
2015/03/19 Python
极简的Python入门指引
2015/04/01 Python
轻松实现TensorFlow微信跳一跳的AI
2018/01/05 Python
Python安装模块的常见问题及解决方法
2018/02/05 Python
Python生成短uuid的方法实例详解
2018/05/29 Python
详解Python 协程的详细用法使用和例子
2018/06/15 Python
对pycharm 修改程序运行所需内存详解
2018/12/03 Python
python的re模块使用方法详解
2019/07/26 Python
使用Python第三方库pygame写个贪吃蛇小游戏
2020/03/06 Python
python自动化测试三部曲之request+django实现接口测试
2020/10/07 Python
Nike英国官网:Nike.com (UK)
2017/02/13 全球购物
国外最大的眼镜网站:Coastal
2017/08/09 全球购物
您在慕尼黑的跑步商店:Lauf-bar
2019/10/11 全球购物
公益活动邀请函
2014/02/05 职场文书
医院党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
文明礼仪主题班会
2015/08/13 职场文书
tomcat默认最大连接数及相关调整方法
2022/05/06 Servers
Java 数组的使用
2022/05/11 Java/Android
Nginx如何配置多个服务域名解析共用80端口详解
2022/09/23 Servers