python多标签分类_如何通过sklearn实现多标签分类?
sklearn支持多類別(Multiclass)分類和多標簽(Multilabel)分類:多類別分類:超過兩個類別的分類任務。多類別分類假設每個樣本屬于且僅屬于一個標簽,類如一個水果可以是蘋果或者是桔子但是不能同時屬于兩者。
多標簽分類:給每個樣本分配一個或多個標簽。例如一個新聞可以既屬于體育類,也屬于文娛類。
sklearn的官方文檔給出了支持多標簽分類的類,包括如下:
以決策樹舉例,給出如下實現過程
數據準備
from sklearn.datasets import make_multilabel_classification
# Generate a random multilabel classification problem.
# For each sample, the generative process is:
# pick the number of labels: n ~ Poisson(n_labels)
# n times, choose a class c: c ~ Multinomial(theta)
# pick the document length: k ~ Poisson(length)
k times, choose a word: w ~ Multinomial(theta_c)
X, Y = datasets.make_multilabel_classification(n_samples=10, n_features=5, n_classes=3, n_labels=2)
生成的X和Y為如下形式的數據:
分類
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
# Split dataset to 8:2
X_train, X_test, Y_train ,Y_test = train_test_split(X, Y, test_size=0.2)
cls = DecisionTreeClassifier()
cls.fit(X_train, Y_train)
多標簽分類評估
from sklearn import metrics
Y_pred = cls.predict(X_test)
Y_test和Y_pred值如下:
metrics.f1_score(Y_test, Y_pred, average="macro")
# 0.666
metrics.f1_score(Y_test, Y_pred, average="micro")
# 0.8
metrics.f1_score(Y_test, Y_pred, average="weighted")
# 1.0
metrics.f1_score(Y_test, Y_pred, average="samples")
# 0.4
概率預測
Y_prob = cls.predict_proba(X_test)
X_test和Y_prob值如下:predict_proba(X)
X:array-like or sparse matrix of shape = [n_samples, n_features]
RETURN:array of shape = [n_samples, n_classes], or a list of n_outputs
總結
以上是生活随笔為你收集整理的python多标签分类_如何通过sklearn实现多标签分类?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python读取大文件的坑_如何在Pyt
- 下一篇: python3 虚拟环境 pip 版本_