91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python聚類算法怎么使用

發布時間:2022-05-27 15:57:02 來源:億速云 閱讀:120 作者:iii 欄目:大數據

這篇文章主要介紹了python聚類算法怎么使用的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇python聚類算法怎么使用文章都會有所收獲,下面我們一起來看看吧。

說明

1、聚類常用于數據探索或挖掘前期,在沒有先驗經驗的背景下進行探索性分析。

也適用于樣本量大的數據預處理。

2、常用的聚類算法分為基于劃分、層次、密度、網格、統計、模型等類型的算法。典型算法包括K均值(經典聚類算法)、DBSCAN、兩步聚類等。

聚類分析可以解決的問題包括:數據集可以分為幾類,每個類別有多少樣本,不同類別中每個變量的強弱關系,不同類別的典型特征是什么。

聚類算法之K均值實例

import numpy as np
import matplotlib.pyplot as plt
 
# 兩點距離
def distance(e1, e2):
    return np.sqrt((e1[0]-e2[0])**2+(e1[1]-e2[1])**2)
 
# 集合中心
def means(arr):
    return np.array([np.mean([e[0] for e in arr]), np.mean([e[1] for e in arr])])
 
# arr中距離a最遠的元素,用于初始化聚類中心
def farthest(k_arr, arr):
    f = [0, 0]
    max_d = 0
    for e in arr:
        d = 0
        for i in range(k_arr.__len__()):
            d = d + np.sqrt(distance(k_arr[i], e))
        if d > max_d:
            max_d = d
            f = e
    return f
 
# arr中距離a最近的元素,用于聚類
def closest(a, arr):
    c = arr[1]
    min_d = distance(a, arr[1])
    arr = arr[1:]
    for e in arr:
        d = distance(a, e)
        if d < min_d:
            min_d = d
            c = e
    return c
 
 
if __name__=="__main__":
    ## 生成二維隨機坐標,手上有數據集的朋友注意,理解arr改起來就很容易了
    ## arr是一個數組,每個元素都是一個二元組,代表著一個坐標
    ## arr形如:[ (x1, y1), (x2, y2), (x3, y3) ... ]
    arr = np.random.randint(100, size=(100, 1, 2))[:, 0, :]
 
    ## 初始化聚類中心和聚類容器
    m = 5
    r = np.random.randint(arr.__len__() - 1)
    k_arr = np.array([arr[r]])
    cla_arr = [[]]
    for i in range(m-1):
        k = farthest(k_arr, arr)
        k_arr = np.concatenate([k_arr, np.array([k])])
        cla_arr.append([])
 
    ## 迭代聚類
    n = 20
    cla_temp = cla_arr
    for i in range(n):    # 迭代n次
        for e in arr:    # 把集合里每一個元素聚到最近的類
            ki = 0        # 假定距離第一個中心最近
            min_d = distance(e, k_arr[ki])
            for j in range(1, k_arr.__len__()):
                if distance(e, k_arr[j]) < min_d:    # 找到更近的聚類中心
                    min_d = distance(e, k_arr[j])
                    ki = j
            cla_temp[ki].append(e)
        # 迭代更新聚類中心
        for k in range(k_arr.__len__()):
            if n - 1 == i:
                break
            k_arr[k] = means(cla_temp[k])
            cla_temp[k] = []
 
    ## 可視化展示
    col = ['HotPink', 'Aqua', 'Chartreuse', 'yellow', 'LightSalmon']
    for i in range(m):
        plt.scatter(k_arr[i][0], k_arr[i][1], linewidth=10, color=col[i])
        plt.scatter([e[0] for e in cla_temp[i]], [e[1] for e in cla_temp[i]], color=col[i])
    plt.show()

關于“python聚類算法怎么使用”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“python聚類算法怎么使用”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

浦城县| 西华县| 犍为县| 张家界市| 新密市| 通州市| 新河县| 曲阳县| 上林县| 凭祥市| 军事| 同仁县| 尼勒克县| 霍邱县| 岑巩县| 昌黎县| 大方县| 曲沃县| 南昌市| 陆河县| 昌都县| 额敏县| 麻阳| 和田市| 卓尼县| 鸡泽县| 庄浪县| 湟源县| 赫章县| 乐山市| 保靖县| 昔阳县| 吴江市| 灵山县| 三台县| 西乌珠穆沁旗| 新源县| 来宾市| 清水县| 长垣县| 密山市|