亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

sklearn 和從頭開始的不同 Kmean 結果

sklearn 和從頭開始的不同 Kmean 結果

慕碼人8056858 2023-08-08 15:03:24
我嘗試比較sklearn包中和從頭開始的 kmean 聚類結果。暫存代碼如下所示:import matplotlib.pyplot as pltfrom matplotlib import stylestyle.use('ggplot')import numpy as npcolors = 10 * ["g", "r", "c", "b", "k"]class K_Means:    def __init__(self, k=3, tol=0.001, max_iter=300):        self.k = k        self.tol = tol        self.max_iter = max_iter    def fit(self, data):        self.centroids = {}        for i in range(self.k):            self.centroids[i] = data[i]        for i in range(self.max_iter):            self.classifications = {}            for i in range(self.k):                self.classifications[i] = []            for featureset in data:                distances = [np.linalg.norm(featureset - self.centroids[centroid]) for centroid in self.centroids]                classification = distances.index(min(distances))                self.classifications[classification].append(featureset)            prev_centroids = dict(self.centroids)            for classification in self.classifications:                self.centroids[classification] = np.average(self.classifications[classification], axis=0)            optimized = True            for c in self.centroids:                original_centroid = prev_centroids[c]                current_centroid = self.centroids[c]                if np.sum((current_centroid - original_centroid) / original_centroid * 100.0) > self.tol:                    print(np.sum((current_centroid - original_centroid) / original_centroid * 100.0))                    optimized = False            if optimized:                break    def predict(self, data):        distances = [np.linalg.norm(data - self.centroids[centroid]) for centroid in self.centroids]        classification = distances.index(min(distances))        return classification但由于收斂質心不同,結果也不同。sklearn 的散點圖:同時,上面代碼的散點圖:我想知道臨時代碼中存在哪些錯誤。
查看完整描述

1 回答

?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

K 均值高度依賴于初始化條件,即均值的起點。scikit-learn 可以根據數據進行智能初始化。如果您仔細閱讀文檔,您可能可以配置 scikit-learn 的版本以匹配您自己的版本。



查看完整回答
反對 回復 2023-08-08
  • 1 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號