精华内容
下载资源
问答
  • onevsrestclassifier
    万次阅读
    2018-09-26 11:27:18

    一,sklearn分类器

    单一分类器 & 集成分类器 https://www.cnblogs.com/hhh5460/p/5132203.html

    使用sklearn https://www.jianshu.com/p/516f009c0875

    sklearn通过OneVsRestClassifier实现svm.SVC的多分类 https://blog.csdn.net/xiaodongxiexie/article/details/76229042

    二,Grid_Search获取模型最佳参数

    https://blog.csdn.net/u012897374/article/details/74999940

    三,对OneVsRestClassifier策略的模型执行网格搜索

    https://ask.helplib.com/python/post_12965072

    当在网格搜索中使用嵌套估计量时,可以使用 __ 作为分隔符来确定参数的范围。这种情况下,SVC模型作为名为 estimator的属性存储在 OneVsRestClassifier 模型中:

    from sklearn.datasets import load_iris
    from sklearn.multiclass import OneVsRestClassifier
    from sklearn.svm import SVC
    from sklearn.grid_search import GridSearchCV
    from sklearn.metrics import f1_score
    iris = load_iris()
    model_to_set = OneVsRestClassifier(SVC(kernel="poly"))
    parameters = {
    "estimator__C": [1,2,4,8],
    "estimator__kernel": ["poly","rbf"],
    "estimator__degree":[1, 2, 3, 4],
    }
    model_tunning = GridSearchCV(model_to_set, param_grid=parameters,
     score_func=f1_score)
    model_tunning.fit(iris.data, iris.target)
    print model_tunning.best_score_
    print model_tunning.best_params_
    

     

    更多相关内容
  • 1、什么是OneVsRestClassifier OvR为每一个类别配备一个分类器,是目前最常用的一种多类分类策略 classsklearn.multiclass.OneVsRestClassifier(estimator,∗,n_jobs=None) class sklearn.multiclass....

    1、什么是OneVsRestClassifier

    OvR为每一个类别配备一个分类器,是目前最常用的一种多类分类策略

    c l a s s s k l e a r n . m u l t i c l a s s . O n e V s R e s t C l a s s i f i e r ( e s t i m a t o r , ∗ , n _ j o b s = N o n e ) class sklearn.multiclass.OneVsRestClassifier(estimator, *, n\_jobs=None) classsklearn.multiclass.OneVsRestClassifier(estimator,,n_jobs=None)

    estimator:要使用的分类模型
    n_jobs:与K折交叉验证相同,n_jobs等于-1时,使用所有处理器工作

    2、为什么要使用OneVsRestClassfier

    使用OvR可以更好的获取每一个类别的相关信息,比如在建模时遇到需要分品牌,分类别对产品进行处理预测,OvR就是可以是一个思路。
    具体sklearn的中文文档给出了如下的介绍:
    在这里插入图片描述

    3、OvR实现

    
    import numpy as np
    from sklearn import svm,datasets
    from sklearn.metrics import roc_curve,auc
    from sklearn.model_selection import train_test_split
    from sklearn.preprocessing import label_binarize
    from sklearn.multiclass import OneVsRestClassifier
    from sklearn.svm import SVC
    import matplotlib.pyplot as plt
    
    
    #加载鸢尾数据集
    iris = datasets.load_iris()
    X = iris.data
    y = iris.target
    
    #将数据二进制化处理,此处和onehotencoder大概一致
    y = label_binarize(y,classes=[0,1,2])
    n_classes = y.shape[1]
    
    #加入噪点
    n_sample,n_featrues = X.shape
    X = np.c_[X,np.random.RandomState(0).randn(n_sample,80*n_featrues)]
    
    #分割数据
    X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=.5,random_state=0)
    
    #设置分类器,这里实用的是SVC支持向量机
    clf =SVC(C=0.2,gamma=0.2,kernel='linear', probability=True, random_state=0)
    classifier = OneVsRestClassifier(clf,n_jobs=-1)
    classifier.fit(X_train, y_train)
    #计算分数,roc_curve要用到
    y_score = classifier.decision_function(X_test)
    
    fpr = dict()
    tpr = dict()
    roc_auc = dict()
    #计算aoc值
    for i in range(n_classes):
        fpr[i],tpr[i],_=roc_curve(y_test[:,i],y_score[:,i])
        roc_auc[i] = auc(fpr[i],tpr[i])
    
    
    #画图
    plt.figure()
    lw = 2
    color = ['r', 'g', 'b']
    for i in range(3):
        plt.plot(fpr[i], tpr[i], color=color[i],lw=lw, label='ROC curve (area = %0.2f)' % roc_auc[i])
    plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')
    
    plt.xlim([0.0, 1.0])
    plt.ylim([0.0, 1.05])
    plt.xlabel('False Positive Rate')
    plt.ylabel('True Positive Rate')
    plt.title('Receiver operating characteristic example')
    plt.legend(loc="lower right")
    plt.show()
    
    

    4、附件

    三个类别的roc曲线
    在这里插入图片描述

    5 、参考文献

    https://scikit-learn.org.cn/view/679.html
    https://www.cnblogs.com/yanshw/p/12691329.html

    展开全文
  • from sklearn.multiclass import OneVsRestClassifier from sklearn.model_selection import train_test_split,GridSearchCV param_test1 = {'max_depth':range(3,10,2),'min_child_weight':range(1,6,2)} model = ...

    简单模型网格调参

    from xgboost import XGBClassifier
    from sklearn.multiclass import OneVsRestClassifier
    from sklearn.model_selection import train_test_split,GridSearchCV
    param_test1 = {'max_depth':range(3,10,2),'min_child_weight':range(1,6,2)}
    
    model = XGBClassifier(eval_metric= 'mlogloss',
                                            use_label_encoder=False,
                                            learning_rate =0.1,
                                            n_estimators=100,
                                            gamma=0,
                                            subsample=0.8,
                                            colsample_bytree=0.8,
                                            nthread=4,
                                            scale_pos_weight=1,
                                            seed=27,
                                            verbose=True)
    gsearch1 = GridSearchCV(model,param_grid = param_test1,scoring='roc_auc',n_jobs=20, cv=5,verbose=2)
    gsearch1.fit(X_train, y_train)
    print("最佳参数\n",gsearch1.best_params_)
    print("最佳得分",gsearch1.best_score_)
    

    使用OneVsRestClassifier的调参

    需要在每个参数面前加上estimator__

    param_test1 = {'estimator__max_depth':range(3,10,2),'estimator__min_child_weight':range(1,6,2)}
    
    model = OneVsRestClassifier(XGBClassifier(eval_metric= 'mlogloss',
                                            use_label_encoder=False,
                                            learning_rate =0.1,
                                            n_estimators=100,
                                            gamma=0,
                                            subsample=0.8,
                                            colsample_bytree=0.8,
                                            nthread=4,
                                            scale_pos_weight=1,
                                            seed=27,
                                            verbose=True))
        gsearch1 = GridSearchCV(model,param_grid = param_test1,scoring='roc_auc',n_jobs=20, cv=5,verbose=2)
        gsearch1.fit(X_train, y_train)
    print("最佳参数\n",gsearch1.best_params_)
    print("最佳得分",gsearch1.best_score_)
    
    展开全文
  • OneVsRestClassifier(LinearSVC(random_state= 0 )) .fit ( X , y ) .predict ( X ) array([ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ...

    1.12. Multiclass and multilabel algorithms

    - sklearn.multiclass 模块通过将多分类问题化为二分类问题来处理 multiclassmultilabel 分类问题。Multitarget regression 也支持。

    Multilabel classification format

    - 数据形式为(n_samples, n_classes)

    例如:

    np.array([[1, 0, 0], [0, 1, 1], [0, 0, 0]])

    - 3x3的二维数组代表3个样本,3个类别标签,其中,标签0在第一个样本中,标签1和2在第二个样本中,第三个样本无标签。

    - sklearn.preprocessing.MultiLabelBinarizer(classes=None, sparse_output=False)预处理数据为支持的多标签形式。

    • 例子:

    - a list of sets or tuples is a very intuitive format for multilabel data,即可以集合或者元组形式。

    from sklearn.preprocessing import MultiLabelBinarizer
    mlb = MultiLabelBinarizer()
    
    mlb.fit_transform([(1, 2), (3,)])
    array([[1, 1, 0],
           [0, 0, 1]])
    mlb.classes_
    array([1, 2, 3])

    例子2:

    mlb.fit_transform([set(['sci-fi', 'thriller']), set(['comedy'])])
    array([[0, 1, 1],
           [1, 0, 0]])
    list(mlb.classes_)
    ['comedy', 'sci-fi', 'thriller']

    例子3:

    from sklearn.preprocessing import MultiLabelBinarizer
    y = [[2, 3, 4], [2], [0, 1, 3], [0, 1, 2, 3, 4], [0, 1, 2]]
    MultiLabelBinarizer().fit_transform(y)
    array([[0, 0, 1, 1, 1],
           [0, 0, 1, 0, 0],
           [1, 1, 0, 1, 0],
           [1, 1, 1, 1, 1],
           [1, 1, 1, 0, 0]])

    结论:转换后的数据都成了 Size()×Size() S i z e ( 样 本 ) × S i z e ( 类 别 ) 的二维矩阵.

    one-vs-all

    - OneVsRestClassifier实现了该策略,即用一个分类器对应一个类别, 每个分类器都把其他全部的类别作为相反类别看待。

    - Multiclass learning例子:

    from sklearn import datasets
    from sklearn.multiclass import OneVsRestClassifier
    from sklearn.svm import LinearSVC
    iris = datasets.load_iris()
    X, y = iris.data, iris.target
    OneVsRestClassifier(LinearSVC(random_state=0)).fit(X, y).predict(X)
    array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
           0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
           1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1,
           1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
           2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 2,
           2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])

    待续…

    展开全文
  • from sklearn.multiclass import OneVsRestClassifier from sklearn.model_selection import train_test_split digits = load_digits() x, y = digits.data, digits.target y = label_binarize(y, classes=list...
  • #关于 OneVsRestClassifier #注意以下代码中,有三个类 from sklearn import datasets X, y = datasets.make_classification(n_samples=10000, n_classes=3) from sklearn.tree import DecisionTreeClassifier ...
  • 1对其余【multiclass.OneVsRestClassifier】1.12.2.1. 多类学习1.12.2.2. 多标签学习1.12.3. 1对1【multiclass.OneVsOneClassifier】1.12.3.1. 多类别学习1.12.4. 误差校正输出代码【multiclass.
  • # 定义一个工作流,将文本特征提取器和多标签分类器合并在一起 NB_pipeline = Pipeline([ ('tfidf', TfidfVectorizer(stop_words=stop_words)), ('clf', OneVsRestClassifier(MultinomialNB( fit_prior=True, class...
  • TruncatedSVD, PCA from sklearn.linear_model import LogisticRegression from sklearn.multiclass import OneVsRestClassifier from sklearn.preprocessing import StandardScaler from xgboost import ...
  • OneVsRestClassifier(SVC(kernel='linear',probability=True, C=1.2)) """ #参数 “kernel”、“gamma”和“C”对性能影响较大 sklearn.svm.SVC(C=1.0, kernel='rbf', degree=3, gamma=0.0, coef0=0.0, shrinking=...
  • Python实现 多分类 X_train, X_test, y_train, y_test = train_test_split(feature, label, test_size=.2,random_state=0) # 训练模型 model = OneVsRestClassifier(svm.SVC(kernel='linear',probability=True,...
  • clf = OneVsRestClassifier(SVC(kernel='linear',probability=True,random_state=0)) clf.fit(X_train,y_train) y_score = clf.fit(X_train,y_train).decision_function(X_test) # 绘制P-R曲线 fig = plt.figure() ...
  • sklearn10-使用总结

    2018-02-05 14:36:00
    import OneVsRestClassifier from sklearn.preprocessing import MultiLabelBinarizer import numpy as np from numpy import random X=np.arange( 15).reshape( 5, 3) y=np.arange( 5) Y_1 = np.arange( 5) ...
  • 机器学习之SVM多分类

    千次阅读 2020-12-18 19:59:53
    selection import train_test_split from sklearn.preprocessing import label_binarize from sklearn.multiclass import OneVsRestClassifier from FileUtil import FileUtil # 加载数据 # 1.训练模型的数据 X = ...
  • # =========1对其余的多分类构造方式================ from sklearn import datasets from sklearn.multiclass import OneVsRestClassifier from sklearn.svm import LinearSVC iris = datasets.load_iris() X, y =...
  • face_model = OneVsRestClassifier(SVC(kernel='rbf', C=1e3, gamma='scale', probability=True)) 第二步就是在定义SVM模型时添加参数probability=True,这样可以输出识别概率。 前面两个问题修改后我们就开始...
  • Scikit-learn使用总结

    2017-06-01 22:28:00
    在机器学习和数据挖掘的应用中,scikit-learn是一个功能强大的python包。在数据量不是过大的情况下,可以解决大部分问题。...上面的代码测试了svm在OneVsRestClassifier的包装下,分别处理多分类和...
  • 当我运行基于scikit example的脚本时,如下所示:classifier = OneVsRestClassifier(GradientBoostingClassifier(n_estimators=70, max_depth=3, learning_rate=.02))y_pred = classifier.fit(X_train, y_train)....
  • [深度学习技巧]·数据类别不平衡问题处理

    千次阅读 多人点赞 2019-03-11 14:03:39
    数据类别不平衡问题处理 转载地址 1.什么是类别不平衡问题 如果不同类别的训练样例数目稍有差别,通常影响不大,但若差别很大,则会对学习过程造成困扰。例如有998个反例,但是正例只有2个,那么学习方法只需要...
  • 集成学习下

    2021-05-09 15:34:01
    selection import train_test_split from sklearn import datasets from sklearn.preprocessing import label_binarize from sklearn.multiclass import OneVsRestClassifier iris = datasets.load_iris() X, y = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 882
精华内容 352
关键字:

onevsrestclassifier