我用OneVsRestClassifier和SVC处理多标签分类,
from sklearn.datasets import make_multilabel_classification
from sklearn.multiclass import OneVsRestClassifier
from sklearn.svm import SVC
from sklearn.grid_search import GridSearchCV
L=3
X, y = make_multilabel_classification(n_classes=L, n_labels=2,
我正在使用sklearn's GradientBoostingClassifier构建一个分类模型。对于相同的模型,我尝试了不同的预处理技术:对相同的数据执行StandarScaler, Scale, and Normalizer,但每次得到的f1_scores都不同。对于StandardScaler,它对于Normalizer是最高和最低的。为甚麽呢?有没有其他技术可以让我得到更高的分数?
有没有办法对参数值运行网格搜索,这些参数值针对选定类的分数(例如'f1')进行了优化,而不是所有类的默认分数?
编辑的假设是,这样的网格搜索应该返回一组参数,使所选类别的分数最大化(例如,'f1',‘准确性’,‘召回’),而不是所有类别的总分数。这样的方法似乎很有用,例如对于高度不平衡的数据集,当试图构建一个在具有少量实例的类上做合理工作的分类器时。
使用默认评分方法的GridSearchCV示例(此处:对所有类使用'f1‘):
from __future__ import print_function
from sklearn.cross_valid
我想用classification_report、accuracy_score、precision_score、recall_score和f1_score评价指标来评价我的机器学习模型。
classification_report有正常输出,但我的precision_score报告了一个错误。
from sklearn.metrics import accuracy_score
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
from sklearn.
我刚刚安装了scikit 0.14,这样我就可以探索多标签指标的改进。我使用hamming损失度量和分类报告获得了一些积极的结果,但无法使混淆矩阵工作。同样在分类报告中,我无法传递标签数组并在报告中打印标签。下面是代码。是我做错了什么,还是它还在开发中?
import numpy as np
import pandas as pd
import random
from sklearn import datasets
from sklearn.pipeline import Pipeline
from sklearn.multiclass import OneVsOneClassifier
f
我有一个多标签分类器产生的结果,我想要计算微观和宏观精度,回忆和F1分数使用sklearn.metrics在python,但不太清楚如何。
我有两个二进制稀疏矩阵,dataOUT和dataGT,它们分别代表同一数据集的分类结果和基本真理。这两个矩阵都是nLabels X nSamples大小的。每个样本都可以用一个或多个标签标记,所以如果分类器用dataOUT[i,j]标记jth样本,则为0,则为0。
对于任何给定的类i,我可以通过从dataOUT中提取i第四行来轻松地计算规则精度、召回和F-得分,而dataGT可以将这些数据提供给sklearn.metrics.precision_recal
我已经编写了我的自定义记分器对象,这对于我的问题是必要的,我将其称为"p_value_scoring_object“。
对于函数sklearn.cross_validation.cross_val_score,其中一个参数是“scorer”,它允许使用这个记分器对象。
但是,此选项不适用于分类器的评分方法。sklearn只是缺少这个功能,还是有办法绕过它?
from sklearn.datasets import load_iris
from sklearn.cross_validation import cross_val_score
from sklearn.tree import