英文原文: 点我.
声明:此博文为对原英文文章的翻译加个人的理解,一方面为自己学习所用,另一方面为需要中文scikit-multilearn文档的小伙伴提供便利。
Scikit-multilearn是一个BSD许可的多标记分类库,建立在众所周知的scikit-learn库之上。
在命令行,安装Scikit-multilearn,运行一下代码:
$ pip install scikit-multilearn
Scikit-multilearn可以在Windows,Linux和OSX操作平台的python2或者3上面运行,使用其模块时,只需要如下的声明代码。
import skmultilearn
from skmultilearn.dataset import load_dataset
在我运行这一行代码时,报错,显示没有arff模块,如下图。
这时,只需要在命令行运行以下代码安装arff模块即可,安装之后,即可正常运行。
$ pip install arff
emotions:train - does not exists downloading
Downloaded emotions-train
不用管它。
X_train, Y_train, feature_names, label_names = load_dataset('emotions', 'train')
X_test, Y_test, _, _ = load_dataset('emotions', 'test')
可以打印下X_train, Y_train, feature_names, label_names,用如下代码。
print('X_train is {}'.format(X_train))
print('Y_train is {}'.format(Y_train))
print('feature_names is {}'.format(feature_names))
print('label_names is {}'.format(label_names ))
from skmultilearn.problem_transform import BinaryRelevance
from sklearn.svm import SVC
clf = BinaryRelevance(
classifier=SVC(),
require_dense=[False, True]
)
clf.fit(X_train, Y_train)
打印训练结果,原文中使用的是clf.classifiers,但是在我的电脑上运行,显示错误,应该是版本的问题,经过查找资料,发现应该使用如下代码。
clf.classifiers_
import sklearn.metrics as M
prediction = clf.predict(X_test)
hamming_loss_emotions = M.hamming_loss(Y_test, pred)
ACC_emotions = M.accuracy_score(Y_test, pred)
print('hamming_loss_emotions is {}'.format(hamming_loss_emotions))
print('ACC_emotions is {}'.format(ACC_emotions))
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from skmultilearn.dataset import load_dataset
from skmultilearn.problem_transform import BinaryRelevance as BRl
from sklearn.svm import SVC
import sklearn.metrics as M
X_train, Y_train, feature_names, label_names = load_dataset('emotions', 'train')
X_test, Y_test, _, _ = load_dataset('emotions', 'test')
# print('X_train is {}'.format(X_train))
# print('Y_train is {}'.format(Y_train))
# print('feature_names is {}'.format(feature_names))
# print('label_names is {}'.format(label_names ))
clf = BRl(classifier=SVC(), require_dense=[False, True])
clf.fit(X_train, Y_train)
pred = clf.predict(X_test)
print(clf.classifiers_)
hamming_loss_emotions = M.hamming_loss(Y_test, pred)
ACC_emotions = M.accuracy_score(Y_test, pred)
print('hamming_loss_emotions is {}'.format(hamming_loss_emotions))
print('ACC_emotions is {}'.format(ACC_emotions))