我有一个特征数据集"X"和一个标签数据集"Y"。现在在这个问题中,我只允许使用 X 数据集,并且只使用 Y 作为参考。
我正在使用sklearn的Kmeans算法来预测特征数据集的标签。但是,在使用已经分配的标签比较派生标签时,Kmeans错误地对大约40%的标签进行了分类。
因此,我决定使用 Kmeans 来派生标签,并使用分类算法来拟合和使用 X 和派生标签进行预测,目的是获得更好的准确性。
这种策略是否有效,有人可以向我推荐一个可以用于此目的的良好分类算法吗?谢谢。
K-means是一种半监督学习算法,这意味着它需要一些例子来学习。所以它需要有数据和类标签。然而,k-means通常用于无监督学习问题,就像你一样。
为此,随机初始化类标签,并根据此标签计算 k 个均值。然后重新标记数据并计算新的质心。依此类推,直到什么都没有改变。该算法将收敛到局部最优,因此不一定是全局最优,因此分类结果高度依赖于初始均值。
通常可以通过使用更智能的初始化(如 k-means++ 算法(来改善结果。在 kmeans 的 sklearn 模块中,也可以通过将init=kmeans++
作为参数传递来进行此初始化。喜欢这个:
KMeans(init='k-means++', n_clusters=k)
我建议你尝试一下,看看它是否会产生更好的结果。此外,请确保为 k
选择一个适当的数字,等于数据中的类数。
使用较差的 k 均值分类结果作为完全监督学习算法的输入是行不通的。然后,您将训练分类器来学习 k 均值分类给出的不良标记。在这种情况下,你最好看看其他(更复杂的(无监督学习算法,如神经气体。