1. 程式人生 > >EM演算法之GMM聚類

EM演算法之GMM聚類

 

 

以下為GMM聚類程式

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
data=pd.read_csv('Fremont.csv',index_col='Date',parse_dates=True)
print(data.head())

data.plot()
plt.show()
data.resample('w').sum().plot()#以周為時間統計

data.resample('D').sum().rolling(365).sum().plot()
plt.show()

##按照時間為統計
data.groupby(data.index.time).mean().plot()
plt.xticks(rotation=45)
plt.show()

data.columns=['West','East']
data['Total']=data['West']+data['East']
pivoted=data.pivot_table('Total',index=data.index.time,columns=data.index.date)
pivoted.iloc[:5,:5]
print(pivoted.iloc[:5,:5])
pivoted.plot(legend=False,alpha=0.01)
plt.xticks(rotation=45)
plt.show()

print(pivoted.shape)
X=pivoted.fillna(0).T.values
print(X.shape)


from sklearn.decomposition import PCA
X2 =PCA(2).fit_transform(X)
print(X2.shape)
plt.scatter(X2[:,0],X2[:,1])
plt.show()


from sklearn.mixture import GaussianMixture
gmm =GaussianMixture (2)
gmm.fit(X)
# labels= gmm.predict_proba(X)
# print(labels)
labels=gmm.predict(X)
print(labels)
plt.scatter(X2[:,0],X2[:,1],c=labels,cmap='rainbow')
plt.show()

from sklearn.datasets.samples_generator import make_blobs
X,y_true =make_blobs(n_samples=800,centers=4,random_state=11)
plt.scatter(X[:,0],X[:,1])
plt.show()

from sklearn.cluster import KMeans
KMeans =KMeans(n_clusters=4)
KMeans.fit(X)
y_Kmeans=KMeans.predict(X)
plt.scatter(X[:,0],X[:,1],c=y_Kmeans,s=50,cmap='viridis')
centers=KMeans.cluster_centers_
plt.show()

from sklearn.mixture import GaussianMixture
gmm =GaussianMixture(n_components=4).fit(X)
labels=gmm.predict(X)
print(labels)
plt.scatter(X[:,0],X[:,1],c=labels,s=40,cmap='viridis')
plt.show()

  

 

執行結果