在scikit-learn kmeans源代码中,有一个可以指定的可选参数y
(transform(X[, y])
);但是,当我检查transform
的源代码时,似乎在指定它的情况下它无处处理y
。这个可选参数的目的是什么(在文档中也不清楚)?
作为附录;我想知道是否有任何方法在变换函数中指定质心,如果它们之前已经计算过的话。 (或者如果在scikit-learn中有任何其他功能可以执行此操作)。
答案 0 :(得分:2)
答案 1 :(得分:0)
回答关于看似毫无意义的论证y
的第一个问题。您是对的,在许多情况下,Scikit-Learn允许用户传递一个y
参数,该参数实际上不会影响方法的结果。
正如他们documentation中所解释的那样:
在无监督学习的情况下,可能会忽略y。但是,要 可以使用估算器作为管道的一部分 混合有监督和无监督的变压器,甚至无人监督 估算器需要在第二个接受y = None关键字参数 估算器忽略的位置。出于同样的原因, fit_predict,fit_transform,score和partial_fit方法需要 如果它们被实现,则在第二位接受y参数。
所以让代码更容易编写。想象一下,你有一个如下所示的管道:
步骤0:一些标准化
步骤1:K-意味着转换另一个空间中的数据
第2步:分类步骤
步骤1显然不需要y
工作,但如果您必须编写代码以使管道应用所有这些步骤,则更容易简单地传递X, y进入所有变压器,而不必担心每个变压器是否需要y