亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

python聚類算法指的是什么

發布時間:2021-07-29 13:36:28 來源:億速云 閱讀:157 作者:小新 欄目:編程語言

這篇文章主要介紹了python聚類算法指的是什么,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

說明

1、聚類常用于數據探索或挖掘前期,在沒有先驗經驗的背景下進行探索性分析,也適用于樣本量大的數據預處理。

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

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

聚類算法之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聚類算法指的是什么”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

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

AI

蕉岭县| 二手房| 缙云县| 固镇县| 蕲春县| 长岭县| 平邑县| 迁西县| 公安县| 敦煌市| 南汇区| 定结县| 文安县| 枝江市| 云龙县| 额尔古纳市| 鄂州市| 广丰县| 胶州市| 南江县| 永福县| 弥勒县| 凤山县| 古丈县| 汤原县| 兴和县| 通海县| 安阳市| 高碑店市| 昌江| 神农架林区| 盱眙县| 紫阳县| 宁德市| 隆昌县| 通辽市| 通山县| 白水县| 闻喜县| 九江市| 巩留县|