基於Sklearn原生Kmeans演算法的自動化聚類
from sklearn.cluster import KMeans import numpy as np import matplotlib.pyplot as plt from pandas import Series import random from sklearn.metrics import silhouette_samples, silhouette_score import time def pressure_cluster(n_clusters,pressure_array): ''' n_clusters是要聚類的類數 pressure_array是要進行聚類的壓力資料陣列 ''' data_set = np.array(pressure_array).reshape(-1,1) clf1 = KMeans(n_clusters=n_clusters) #呼叫KMeans演算法 y_pred = clf1.fit_predict(data_set) #載入資料集合 silhouette_avg = silhouette_score(data_set,clf1.labels_ ) sample_silhouette_values = silhouette_samples(data_set,clf1.labels_) # print(silhouette_avg) cluster_res_label = clf1.labels_ data_set_df=Series(pressure_array,index=cluster_res_label) pressure_ctr=[] pressure_out=[] #算出每一個類別的均值和方差,取mean+2*std,作為該類別的值 for i in range(n_clusters): pressure_ctr.append(data_set_df[i].mean()+2*data_set_df[i].std()) #將原始壓力資料替換成聚類結果,確定壓力控制時間段 for i in range(len(pressure_array)): pressure_out.append(pressure_ctr[clf1.labels_[i]]) return pressure_out,silhouette_avg def kmeans_auto(dataset,n): start=time.time() score_list=[] for k in range(2,n,1): pressure_out,score=pressure_cluster(k,dataset) score_list.append(score) best_k=score_list.index(max(score_list))+2 pressure_out,score=pressure_cluster(best_k,dataset) end=time.time() print((end-start)) return pressure_out if __name__=="__main__": num_point = 72*2 signal1=[] for i in range(num_point): if i<30: signal1.append(15+1.5*random.random()) elif i<100: signal1.append(20+2*random.random()) elif i<120: signal1.append(25+2*random.random()) else: signal1.append(20+3*random.random()) pressure_cluster_res=kmeans_auto(signal1,10) plt.plot(signal1) plt.plot(pressure_cluster_res) plt.show()
結果圖片
相關推薦
基於Sklearn原生Kmeans演算法的自動化聚類
from sklearn.cluster import KMeans import numpy as np import matplotlib.pyplot as plt from pandas import Series import random from
基於spark實現kmeans的更新聚類中心的關鍵程式碼
/** * 這個方法作用是返回被給樣本的所屬聚類中心的索引,及其到這個聚類中心的距離, * 其中class VectorWithNorm(val vector: Vector, val norm: Double)這是VectorWithNorm
python資料分析:流量資料化運營(下)——基於自動K值得KMeans廣告效果聚類分析
案例背景 某企業由於投放的廣告渠道比較多,需要對其做廣告效果分析以實現有針對性的廣告效果測量和優化工作。跟以應用為目的的案例不同的是,由於本案例是一個分析型案例,該過程的輸出其實是不固定的,因此需要跟業務運營方具體溝通需求。 以下是在開展研究之前的基本預設條件: 廣告渠道
基於.NET實現資料探勘--聚類分析演算法
http://www.cnblogs.com/captain_ccc/articles/4093615.html 本篇文章主要採用另外一種分析演算法對目標顧客群體的挖掘,同樣的利用微軟案例資料進行簡要總結。 應用場景介紹 通過上一篇中我們採用Microsoft決策
機器學習總結(十):常用聚類演算法(Kmeans、密度聚類、層次聚類)及常見問題
任務:將資料集中的樣本劃分成若干個通常不相交的子集。 效能度量:類內相似度高,類間相似度低。兩大類:1.有參考標籤,外部指標;2.無參照,內部指標。 距離計算:非負性,同一性(與自身距離為0),對稱性
聚類分析常用演算法原理:KMeans,DBSCAN, 層次聚類
聚類分析是非監督學習的很重要的領域。所謂非監督學習,就是資料是沒有類別標記的,演算法要從對原始資料的探索中提取出一定的規律。而聚類分析就是試圖將資料集中的樣本劃分為若干個不相交的子集,每個子集稱為一個“簇”。下面是sklearn中對各種聚類演算法的比較。
機器學習——K-means演算法(聚類演算法)
聚類 在說K-means聚類演算法之前必須要先理解聚類和分類的區別。 分類其實是從特定的資料中挖掘模式,作出判斷的過程。比如Gmail郵箱裡有垃圾郵件分類器,一開始的時候可能什麼都不過濾,在日常使用過程中,我人工對於每一封郵件點選“垃圾”或“不是垃圾”,過一段時間,Gmail就體現出
CNN autoencoder 先降維再使用kmeans進行影象聚類 是不是也可以降維以後進行iforest處理?
import keras from keras.datasets import mnist from keras.models import Sequential from keras.layers import Dense, Activation, Flatten from keras.layers
【演算法】聚類和分類
目錄 一、聚類和分類的區別 簡單的說,聚類的分析沒有學習集,而分類有學習集 二、常用聚類演算法 1.動態聚類:K-means方法 演算法步驟: 1.選擇K個點作為初始質心 2.將每個點指派到
Sklearn之KMeans演算法
K-Means演算法原理 K-means的優缺點 優點: 1.演算法快速、簡單; 2.對大資料集有較高的效率並且是可伸縮性的; 3.時間複雜度近於線性,而且適合挖掘大規模資料集。K-Means聚類演算法的時間複雜度是O(n×k×t) ,其中n代表資料集中物件的數量,t代表著演算
從DBSCAN演算法談談聚類演算法
DBSCAN演算法 前言 DBSCAN DBSCAN 是什麼? DBSCAN演算法是對資料樣本進行劃分的聚類演算法,且我們事先並不知道資料樣本的標籤,是一種非監督的聚類演算法。在wiki pedia的定義中原文是這樣的: Dens
非監督學習演算法(聚類、降維、關聯規則挖掘)--機器學習--思維導圖手寫筆記(32)
一、思維導圖(點選圖方法) 二、補充筆記 三、K-means演算法的收斂性 說明: 當聚類中心μ確定時,求得的各個資料的cluster滿足聚類目標函式最小。 當資料cluster確
資料探勘演算法之聚類分析(二)canopy演算法
canopy是聚類演算法的一種實現 它是一種快速,簡單,但是不太準確的聚類演算法 canopy通過兩個人為確定的閾值t1,t2來對資料進行計算,可以達到將一堆混亂的資料分類成有一定規則的n個數據堆 由於canopy演算法本身的目的只是將混亂的資料劃分成大概的幾個類別,所以它
Java實現k_means演算法進行聚類分析
實驗描述: 對指定資料集進行聚類分析,選擇適當的聚類演算法,編寫程式實現,提交程式和結果報告。 資料集: Iris Data Set(見附件一) ,根據花的屬性進行聚類。 資料包括四個屬性:sepal length花萼長度,sepal width花萼寬度,petal len
機器學習--K-means演算法(聚類,無監督學習)
一、基本思想 聚類屬於無監督學習,以往的迴歸、樸素貝葉斯、SVM等都是有類別標籤y的,也就是說樣例中已經給出了樣例的分類。而聚類的樣本中卻沒有給定y,只有特徵x,比如假設宇宙中的星星可以表示成三維空間中的點集。聚類的目的是找到每個樣本x潛在的類別y,並將同類別y的樣本x
利用sklearn.cluster實現k均值聚類
一、k-mean演算法介紹 1.主要思想:在給定聚類簇數(K值)【n_clusters】和K個初始類簇中心(通常從資料集中隨機選取k個數據)的情況下,歷遍資料集中的每個資料點,而資料點距離哪個類簇中心(cluster centers)最近,就把該資
機器學習sklearn19.0聚類演算法——層次聚類(AGNES/DIANA)、密度聚類(DBSCAN/MDCA)、譜聚類
一、層次聚類 BIRCH演算法詳細介紹以及sklearn中的應用如下面部落格連結: http://www.cnblogs.com/pinard/p/6179132.html http://www.cnblogs.com/pinard/p/62
聚類演算法之K-means演算法與聚類演算法衡量指標
聚類就是按照某個特定標準(如距離準則)把一個數據集分割成不同的類或簇,使得同一個簇內的資料物件的相似性儘可能大,同時不在同一個簇中的資料物件的差異性也儘可能地大。即聚類後同一類的資料儘可能聚集到一起
聚類演算法---層次聚類
假設有N個待聚類的樣本,對於層次聚類來說,步驟: 1.(初始化)把每個樣本歸為一類,計算每兩個類之間的距離,也就是樣本與樣本之間的相似度; 2.尋找各個類之間最近的兩個類,把他們歸為一類(這樣類的總數就少了一個); 3.重新計算新生成的這個類和各個舊類之間的相似度; 4.重複2和3直到所
王小草【機器學習】筆記--無監督演算法之聚類
標籤(空格分隔): 王小草機器學習筆記 1. 聚類的概述 存在大量未標註的資料集,即只有特徵,沒有標籤的資料。 根據這些特徵資料計算樣本點之間的相似性。 根據相似性將資料劃分到多個類別中。 使得,同一個類別內的資料相似度大,類別之間的資料相似度小。