当我应该使用其中之一时,“sklearn.cluster.k_means”和“sklearn.cluster.KMeans”有啥区别?

Posted

技术标签:

【中文标题】当我应该使用其中之一时,“sklearn.cluster.k_means”和“sklearn.cluster.KMeans”有啥区别?【英文标题】:what is the difference between "sklearn.cluster.k_means" and "sklearn.cluster.KMeans" when I should use one of them?当我应该使用其中之一时,“sklearn.cluster.k_means”和“sklearn.cluster.KMeans”有什么区别? 【发布时间】:2018-06-05 23:22:42 【问题描述】:

当我应该使用其中之一时,我对“sklearn.cluster.k_means”和“sklearn.cluster.KMeans”之间的区别感到困惑?

【问题讨论】:

使用后者。他们都在做同样的事情,但是后者使用的是sklearn的API,而另一个只是一个函数。 【参考方案1】:

来自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 中的其他示例来指导您自己轻松实现。

【讨论】:

以上是关于当我应该使用其中之一时,“sklearn.cluster.k_means”和“sklearn.cluster.KMeans”有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

k-means上sklearn中的dtype不匹配

我有一个使用把手的网站,但是当我尝试丰富其中一个页面时出现错误

单选按钮不会在 Datagrid 新行中生成对象

错误:PLS-00103:在预期以下情况之一时遇到符号“)”

当用户注销 php 中打开的选项卡之一时,自动注销所有打开的选项卡

编译失败:在预期以下之一时遇到符号“,”::=;非空默认字符