【发布时间】:2020-07-06 16:22:04
【问题描述】:
当我使用 Spark 和 sklearn 使用相同的数据和相同的预测值计算轮廓分数时,我会得到不同的结果。
这是用于 Spark 的代码:
>>> prediction.show()
+---+---+---------+----------+
| a| b| features|prediction|
+---+---+---------+----------+
| 1| 1|[1.0,1.0]| 1|
| 2| 2|[2.0,2.0]| 1|
| 3| 3|[3.0,3.0]| 0|
| 4| 4|[4.0,4.0]| 0|
+---+---+---------+----------+
>>> from pyspark.ml.evaluation import ClusteringEvaluator
>>> evaluator = ClusteringEvaluator()
>>> silhouette = evaluator.evaluate(prediction)
>>> silhouette
0.7230769230769223
这里是用于 sklearn 的代码:
>>> from sklearn.cluster import KMeans
>>> from sklearn import metrics
>>> x=[[1,1],[2,2],[3,3],[4,4]]
>>> prediction = KMeans(n_clusters=2,max_iter=1000,random_state=123).fit_predict(x)
>>> prediction
array([1, 1, 0, 0], dtype=int32)
>>> silhouette = metrics.silhouette_score(x, prediction)
>>> silhouette
0.46666666666666673
如上所示,尽管输入相同,但得分却大不相同。这是为什么呢?
【问题讨论】:
标签: python apache-spark machine-learning scikit-learn cluster-analysis