Python用KShape對時間序列進行聚類和肘方法確定最優(yōu)聚類數(shù)k可視化
原文鏈接:http://tecdat.cn/?p=27078?
原文出處:拓端數(shù)據(jù)部落公眾號
?【視頻】KMEANS均值聚類和層次聚類:R語言分析生活幸福質(zhì)量系數(shù)可視化實例
KMEANS均值聚類和層次聚類:R語言分析生活幸福質(zhì)量系數(shù)可視化實例
,時長06:05
時序數(shù)據(jù)的聚類方法
該算法按照以下流程執(zhí)行。
使用基于互相關(guān)測量的距離標度(基于形狀的距離:SBD)
根據(jù) 1 計算時間序列聚類的質(zhì)心。(一種新的基于質(zhì)心的聚類算法,可保留時間序列的形狀)
劃分成每個簇的方法和一般的kmeans一樣,但是在計算距離尺度和重心的時候使用上面的1和2。
import pandas as pd

# 讀取數(shù)據(jù)幀,將其轉(zhuǎn)化為時間序列數(shù)組,并將其存儲在一個列表中
tata = []
for i, df in enmee(dfs):
# 檢查每個時間序列數(shù)據(jù)的最大長度。
for ts in tsda:
if len(s) > ln_a:
lenmx = len(ts)
# 給出最后一個數(shù)據(jù),以調(diào)整時間序列數(shù)據(jù)的長度
for i, ts in enumerate(tsdata):
dta[i] = ts + [ts[-1]] * n_dd
# 轉(zhuǎn)換為矢量
stack_list = []
for j in range(len(timeseries_dataset)):
stack_list.append(data)
# 轉(zhuǎn)換為一維數(shù)組
trasfome_daa = np.stack(ack_ist, axis=0)
return trafoed_data
數(shù)據(jù)集準備
# 文件列表
flnes= soted(go.ob('mpldat/smeda*.csv'))
# 從文件中加載數(shù)據(jù)幀并將其存儲在一個列表中。
for ienme in fiemes:
df = pd.read_csv(filnme, indx_cl=one,hadr=0)
flt.append(df)
聚類結(jié)果的可視化
# 為了計算交叉關(guān)系,需要對它們進行歸一化處理。
# TimeSeriesScalerMeanVariance將是對數(shù)據(jù)進行規(guī)范化的類。
sac_da = TimeeiesalerMVarne(mu=0.0, std=1.0).fit_trnform(tranfome_data)
# KShape類的實例化。
ks = KShpe(_clusrs=2, n_nit=10, vrboe=True, rano_stte=sed)
yprd = ks.ft_reitsak_ata)
# 聚類和可視化
plt.tight_layout()
plt.show()

用肘法計算簇數(shù)
什么是肘法...
計算從每個點到簇中心的距離的平方和,指定為簇內(nèi)誤差平方和 (SSE)。
它是一種更改簇數(shù),繪制每個 SSE 值,并將像“肘”一樣彎曲的點設(shè)置為最佳簇數(shù)的方法。
#計算到1~10個群組
for i ?in range(1,11):
#進行聚類計算。
ks.fit(sacdta)
#KS.fit給出KS.inrta_
disorons.append(ks.netia_)
plt.plot(range(1,11), disorins, marker='o')



最受歡迎的見解
1.R語言k-Shape算法股票價格時間序列聚類
2.R語言中不同類型的聚類方法比較
3.R語言對用電負荷時間序列數(shù)據(jù)進行K-medoids聚類建模和GAM回歸
4.r語言鳶尾花iris數(shù)據(jù)集的層次聚類
5.Python Monte Carlo K-Means聚類實戰(zhàn)
6.用R進行網(wǎng)站評論文本挖掘聚類
7.用于NLP的Python:使用Keras的多標簽文本LSTM神經(jīng)網(wǎng)絡(luò)
8.R語言對MNIST數(shù)據(jù)集分析 探索手寫數(shù)字分類數(shù)據(jù)
9.R語言基于Keras的小數(shù)據(jù)集深度學習圖像分類