【发布时间】:2018-06-05 23:22:42
【问题描述】:
当我应该使用其中之一时,我对“sklearn.cluster.k_means”和“sklearn.cluster.KMeans”之间的区别感到困惑?
【问题讨论】:
-
使用后者。他们都在做同样的事情,但是后者使用的是sklearn的API,而另一个只是一个函数。
标签: scikit-learn cluster-analysis k-means
当我应该使用其中之一时,我对“sklearn.cluster.k_means”和“sklearn.cluster.KMeans”之间的区别感到困惑?
【问题讨论】:
标签: scikit-learn cluster-analysis k-means
来自sklearn glossary:“[w]e 为许多算法提供临时函数接口,而估算器类提供更一致的接口。” k_means() 只是一个包装器,它返回 KMeans.fit() 的结果:
cluster_centers_,labels_,inertia_,n_iter_KMeans 是按照sklearn objects 的开发人员指南设计的类。 KMeans,与 sklearn 中的其他分类器对象一样,must implement 方法用于:
fit(),transform(), 和 score()。还可以实现其他方法,例如predict()。使用KMeans 而不是k_means() 的主要好处是您可以轻松访问KMeans 中实现的其他方法。例如,如果你想使用你训练好的模型来predict 未见数据属于哪个集群:
from sklearn.clustering import KMeans
est = KMeans()
KMeans.fit(X_train)
cluster_labels = est.predict(X_test)
如果您使用函数式 API,要应用预测,您必须深入了解 KMeans.predict() 以弄清楚如何执行此操作。
并非所有 sklearn 对象都实现了功能设计,但您可以使用 sklearn 中的其他示例来指导您自己轻松实现。
【讨论】: