sklearn中的Label Propagation将每个向量分类为1

时间:2013-11-19 20:15:43

标签: machine-learning scikit-learn

我有2000个标记数据(7种不同标签)和大约100K未标记数据,我正在尝试使用sklearn.semi_supervised.LabelPropagation。数据有1024个维度。我的问题是分类器将所有内容标记为1.我的代码如下所示:

X_unlabeled = X_unlabeled[:10000, :]
X_both = np.vstack((X_train, X_unlabeled))
y_both = np.append(y_train, -np.ones((X_unlabeled.shape[0],)))
clf = LabelPropagation(max_iter=100).fit(X_both, y_both)
y_pred = clf.predict(X_test)

y_pred就是全部。此外,X_train是2000x1024,X_unlabeled是未标记数据的子集,即10000x1024。

我在分类器上调用fit时也会收到此错误:

  

/usr/local/lib/python2.7/site-packages/sklearn/semi_supervised/label_propagation.py:255:运行时警告:在分隔中遇到无效值     self.label_distributions_ / = normalizer

2 个答案:

答案 0 :(得分:2)

您是否为gamma参数尝试了不同的值?由于图是通过计算rbf内核构造的,因此计算包括指数,如果值是一个太大的负数,则python指数函数返回0(参见http://computer-programming-forum.com/56-python/ef71e144330ffbc2.htm)。如果图形填充为0,则label_distributions_将填充“nan”(由于规范化)并出现警告。 (小心,scikit实现中的伽玛值乘以欧氏距离,这与朱纸上的不一样。)

答案 1 :(得分:0)

LabelPropagation最终将在版本0.19中修复