多标签分类问题 [case study]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多标签分类问题 [case study]相关的知识,希望对你有一定的参考价值。
参考技术A 比如音乐,同一首歌曲有不同的标签,比如流行,pop,R&B,民族等
每个实例所属于的类别不是唯一的,同一个实例可以同时属于多个类别。
每个实例所属于的类别是唯一的,同一个实例不能同时属于多个类别。
sklearn 提供了独立的用于多标签问题的软件包 scikit-multilearn
多标签数据集(by MULAN )
这些数据集的格式:arff
利用scipy加载数据集:
Attr: 表示属性,class:表示类别
sklearn.dataset 模块可以生成人工多标签数据集
将多标签问题转换为多个分类问题。例如,
多标签问题不能使用通常的多分类问题的 metrics,我们使用 accuracy_score 计算预测标签集合和真实标签集合的准确性
黄色区域为输入空间,白色区域代表学习目标。
该方法和 Binary relevance很相似,区别在于:考虑了标签之间的相关性
多标签knn算法
通常能够提供更好的效果。
参见 Scikit-Multilearn library
如何使用多项逻辑回归解决多标签分类问题?
【中文标题】如何使用多项逻辑回归解决多标签分类问题?【英文标题】:How to use multinomial logistic regression for multilabel classification problem? 【发布时间】:2020-09-10 15:10:37 【问题描述】:我必须根据其他属性来预测学生所参加的课程类型。
prog
是一个分类变量,指示学生所参加的课程类型:“普通”(1)、“学术”(2) 或“职业”(3)
Ses
是一个分类变量,表示某人的社会经济等级:“低”(1)、“中”(2)和“高”(3)
read
、write
、math
、science
是他们在不同测试中的分数
honors
是否已注册
csv file in image format;
import pandas as pd;
import numpy as np;
df1=pd.get_dummies(df,drop_first=True);
X=df1.drop(columns=['prog_general','prog_vocation'],axis=1);
y=df1.loc[:,['prog_general','prog_vocation']];
from sklearn.model_selection import train_test_split;
X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.30, random_state=42);
from sklearn.linear_model import LogisticRegression;
from sklearn.metrics import classification_report;
clf=LogisticRegression(multi_class='multinomial',solver='newton-cg');
model=clf.fit(X_train,y_train)
但在这里我收到以下错误:
ValueError: 错误的输入形状 (140, 2)。
【问题讨论】:
错误是什么? ValueError: bad input shape (140, 2). 【参考方案1】:因此,LogisticRegression
不处理多个目标。但是,Sklearn 中的所有模型并非如此。例如,所有基于树的模型 (DecisionTreeClassifier
) 都可以原生处理多输出。
要为LogisticRegression
工作,您需要一个MultiOutputClassifier
包装器。
例子:
import numpy as np
from sklearn.datasets import make_multilabel_classification
from sklearn.multioutput import MultiOutputClassifier
from sklearn.linear_model import LogisticRegression
X, y = make_multilabel_classification(n_classes=3, random_state=0)
clf = MultiOutputClassifier(estimator= LogisticRegression()).fit(X, y)
clf.predict(X[-2:])
【讨论】:
以上是关于多标签分类问题 [case study]的主要内容,如果未能解决你的问题,请参考以下文章