【问题标题】: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,而另一个只是一个函数。

标签: scikit-learn cluster-analysis k-means


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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-08
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 2012-01-16
    • 2010-10-28
    • 2010-09-05
    相关资源
    最近更新 更多