【发布时间】:2021-12-25 13:59:38
【问题描述】:
下面的示例用于在应用于我的数据集之前使用虚拟数据集(此处参考:https://scikit-learn.org/stable/auto_examples/semi_supervised/plot_label_propagation_digits.html)测试标签传播算法。
import numpy as np
from sklearn import datasets
digits = datasets.load_digits()
rng = np.random.RandomState(2)
indices = np.arange(len(digits.data))
rng.shuffle(indices)
X = digits.data[indices[:340]]
y = digits.target[indices[:340]]
images = digits.images[indices[:340]]
tot_samples = len(y)
labeled_points = 40
indices = np.arange(tot_samples)
non_labeled_set = indices[labeled_points:]
# Shuffle
y_train = np.copy(y)
y_train[non_labeled_set] = -1
我想将标签传播应用于我拥有并具有以下字段的现有数据集:
User1 User2 Class Weight
A1 B1 1 2.1
A1 C1 1 3.3
A2 D3 -1 2.1
C3 C1 0 2.5
D1 A1 1 1.3
C3 D1 -1 2.5
A2 A4 -1 1.5
类是 User1 的属性。 节点是 A1、A2、B1、C1、C3、D1、D3、A4,但只有 A1、A2、C3 和 D1 有标签。其他人(B1、C1、D3、A4)没有。我想使用标签传播算法来预测他们的标签。 有人可以解释我如何在我的情况下应用上述代码,因为挑战在于确定多个标签?我认为它应该仍然有效,即使我正在考虑多类数据样本。
根据所考虑的算法,我认为它需要根据权重将标签传播到相邻的未标记节点。此步骤应重复多次,直到最终未标记节点上的标签达到平衡(这将是这些节点的预测)。
我希望得到以下输出:
B1: 1
C1: 0
D3: -1
A4: -1
【问题讨论】:
-
您想替换哪些值以及您想用什么替换它们?
-
嗨 itprorh66。我的数据集已完全标记,因此我需要在其上测试算法以查看输出是否令人满意。我想在每个类中保留一个/两个标签,并确定剩余的,如果可能的话,无论哪些值将被替换。我可能希望其他未标记的可以通过算法找到。我知道这是一个具有挑战性的数据集,因为它包含多个类。我希望这是有道理的,如果没有,请告诉我。谢谢
-
很抱歉,您的解释并不能帮助我理解您的问题。您能否提供一个示例,说明您的输入以及您想要的输出是什么样的?
-
我试着编辑一下这个问题。希望现在应该更清楚一点。我已经包含了一个权重边缘属性(我最初忘记包含它)和预期的输出(它可能略有不同)。如果还不清楚,请告诉我。谢谢
标签: python machine-learning scikit-learn multilabel-classification