zoukankan      html  css  js  c++  java
  • 【Scikit】实现Multi-label text classification代码模板

    Refer to: https://stackoverflow.com/a/10527953

    code:

    # -*- coding: utf-8 -*-
    import numpy as np
    from sklearn.pipeline import Pipeline
    from sklearn.feature_extraction.text import CountVectorizer
    from sklearn.svm import LinearSVC
    from sklearn.feature_extraction.text import TfidfTransformer
    from sklearn.multiclass import OneVsRestClassifier
    from sklearn.preprocessing import MultiLabelBinarizer
    
    X_train = np.array(["new york is a hell of a town",
                        "new york was originally dutch",
                        "the big apple is great",
                        "new york is also called the big apple",
                        "nyc is nice",
                        "people abbreviate new york city as nyc",
                        "the capital of great britain is london",
                        "london is in the uk",
                        "london is in england",
                        "london is in great britain",
                        "it rains a lot in london",
                        "london hosts the british museum",
                        "new york is great and so is london",
                        "i like london better than new york"])
    y_train_text = [["new york"],["new york"],["new york"],["new york"],["new york"],
                    ["new york"],["london"],["london"],["london"],["london"],
                    ["london"],["london"],["new york","london"],["new york","london"]]
    
    X_test = np.array(['nice day in nyc',
                       'welcome to london',
                       'london is rainy',
                       'it is raining in britian',
                       'it is raining in britian and the big apple',
                       'it is raining in britian and nyc',
                       'hello welcome to new york. enjoy it here and london too'])
    target_names = ['New York', 'London']
    
    mlb = MultiLabelBinarizer()
    Y = mlb.fit_transform(y_train_text)
    
    classifier = Pipeline([
        ('vectorizer', CountVectorizer()),
        ('tfidf', TfidfTransformer()),
        ('clf', OneVsRestClassifier(LinearSVC()))])
    
    classifier.fit(X_train, Y)
    predicted = classifier.predict(X_test)
    all_labels = mlb.inverse_transform(predicted)
    
    for item, labels in zip(X_test, all_labels):
        print('{0} => {1}'.format(item, ', '.join(labels)))

    Output:

    nice day in nyc => new york
    welcome to london => london
    london is rainy => london
    it is raining in britian => london
    it is raining in britian and the big apple => new york
    it is raining in britian and nyc => london, new york
    hello welcome to new york. enjoy it here and london too => london, new york
  • 相关阅读:
    (笔记)ubuntu中取消文件夹或文件等右下解一把锁的标志的方法
    (笔记)Linux常用命令大全
    (笔记)arm-linux-gcc/ld/objcopy/objdump参数总结
    (笔记)Ubuntu下安装arm-linux-gcc-4.4.3.tar.gz (交叉编译环境)
    (笔记)如何安装Arm-linux-gcc
    java application maven项目打自定义zip包
    几种简单的排序算法(JAVA)
    双色球机选算法java实现
    集合的子集输出(位运算方式)
    集合的子集输出(排列组合)
  • 原文地址:https://www.cnblogs.com/XBWer/p/6594623.html
Copyright © 2011-2022 走看看