我有2000个标记的数据(7个不同的标签)和大约100K个未标记的数据,我正在尝试使用sklearn.semi_suprevised.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)
CCD_ 1都是1。此外,X_train
是2000x1024,而X_unlabeled
是未标记数据的子集,其是10000x1024。
我在分类器上调用fit:时也遇到了这个错误
/usr/local/lib/python2.7/site packages/skmearl/semi_supervisored/label_propagation.py:255:运行时间警告:除法中遇到无效值self.label_distributions_/=归一化
您是否尝试过不同的gamma参数值?由于该图是通过计算rbf核来构建的,因此计算包括一个指数,如果该值是一个太大的负数,则python指数函数将返回0(请参见http://computer-programming-forum.com/56-python/ef71e144330ffbc2.htm)。如果图形填充为0,则label_distributions_填充为"nan"(由于规范化),并显示警告。(注意,scikit实现中的gamma值乘以欧几里得距离,这与Zhu论文中的不同。)
LabelPropagation最终将在0.19 版本中修复