Scikit learn 多标签sklearn KNearestNeighbors

Scikit learn 多标签sklearn KNearestNeighbors,scikit-learn,knn,multilabel-classification,Scikit Learn,Knn,Multilabel Classification,我有一个包含要素及其标签的数据集 看起来是这样的: X1, X2, X3, X4, X5 .. Xn L1, L2, L3 Y1, Y2, Y3, Y4, Y5 .. Yn L5, L2 .. 我想在此数据集上训练Kneighbors分类器。似乎sklearn不接受多重标签。我一直在尝试: mlb = MultiLabelBinarizer() Y = mlb.fit_transform(Y) # parameters: n_neighbors=[5,15], weights = 'uni

我有一个包含要素及其标签的数据集

看起来是这样的:

X1, X2, X3, X4, X5 .. Xn L1, L2, L3
Y1, Y2, Y3, Y4, Y5 .. Yn L5, L2
..
我想在此数据集上训练Kneighbors分类器。似乎sklearn不接受多重标签。我一直在尝试:

mlb = MultiLabelBinarizer()
Y = mlb.fit_transform(Y)

# parameters:  n_neighbors=[5,15], weights = 'uniform', 'distance'
bagging = BaggingClassifier(KNeighborsClassifier(n_neighbors =5,weights ='uniform'), max_samples = 0.6, max_features= 0.7, verbose =1, oob_score =True)
scores = cross_val_score(bagging, X, Y, verbose =1, cv=3, n_jobs=3, scoring='f1_macro')
它给了我
value错误:输入形状不正确

有没有办法在sklearn中运行多标签分类器?

根据sklearn,支持多输出多类分类任务的分类器有:

决策树,随机森林,最近邻

根据sklearn,支持多输出多类分类任务的分类器包括:

决策树,随机森林,最近邻


由于标签有一个二进制矩阵,因此可以使用
OneVsRestClassifier
使
BaggingClassifier
处理多标签预测。代码现在应该如下所示:

bagging = BaggingClassifier(KNeighborsClassifier(n_neighbors=5, weights='uniform'), max_samples=0.6, max_features=0.7, verbose=1, oob_score=True)
clf = OneVsRestClassifier(bagging)
scores = cross_val_score(clf, X, Y, verbose=1, cv=3, n_jobs=3, scoring='f1_macro')
您可以将
OneVsRestClassifier
与任何sklearn模型一起使用,以进行多标签分类

这里有一个解释:

以下是文件:


因为标签有一个二进制矩阵,所以可以使用
OneVsRestClassifier
使您的
BaggingClassifier
处理多标签预测。代码现在应该如下所示:

bagging = BaggingClassifier(KNeighborsClassifier(n_neighbors=5, weights='uniform'), max_samples=0.6, max_features=0.7, verbose=1, oob_score=True)
clf = OneVsRestClassifier(bagging)
scores = cross_val_score(clf, X, Y, verbose=1, cv=3, n_jobs=3, scoring='f1_macro')
您可以将
OneVsRestClassifier
与任何sklearn模型一起使用,以进行多标签分类

这里有一个解释:

以下是文件:


KNeighborsClassifier
采用多标签,而不是
BaggingClassifier
不采用
KNeighborsClassifier
采用多标签,而不是
BaggingClassifier
采用多标签。