2014-12-07 68 views
0

我有一个特征数据集“X”和一个标签数据集“Y”。现在在这个问题中,我只允许使用X数据集,并仅将Y用于参考。使用K-means推导标签然后使用分类器进行训练(python)

我正在使用sklearn的Kmeans算法来预测要素数据集的标签。但是通过使用已经分配的标签比较派生标签,Kmeans错误地分类了大约40%的标签。

因此,我已决定使用Kmeans来导出标签和分类算法,以适应和预测使用X和派生标签,以获得更好的准确性。

此策略是否有效,并可能有人建议我一个很好的分类算法,我可以用于此目的?谢谢。

回答

0

K-means是一个半监督学习算法,这意味着它需要一些例子来学习。所以它需要有数据和类标签。然而,k-means经常被用于无监督的学习问题,就像你的一样。

为了达到这个目的,类别标签随机初始化并根据该标签计算平均值数量。然后数据被重新标记并计算新的质心。等到没有任何变化了。该算法将收敛到局部最优,因此不一定是全局最优,因此分类结果高度依赖于初始手段。

结果通常可以通过使用更智能的初始化来改进,如k-means++算法。在sklearn module for kmeans这个初始化也是可用的,通过传递init=kmeans++作为参数。像这样:

KMeans(init='k-means++', n_clusters=k) 

我建议你尝试一下,看看它是否会产生更好的结果。另外,请确保为k选择合适的数字,等于数据中的类数。

使用差k均值分类结果作为完全监督学习算法的输入将不起作用。就像你会训练一个分类器来学习由k均值分类给出的不好的标签一样。在这种情况下,您最好查看其他(更复杂的)无监督学习算法,如neural gas

+0

在sklearn的Kmeans文档中给出了分类器默认为Kmeans ++,所以我不认为我必须改变任何内容。 – user3466132 2014-12-08 00:09:43

+0

你说得对,我现在也自己找到了正确的文档。在这种情况下,如果您确定代码中没有错误,那么您的结果不太可能使用k-means进一步改进。为了了解根据数据可以预期什么样的分类结果,K-最近邻居通常被用作基线测量。 – Semi 2014-12-08 00:54:42

相关问题