Pythonで学ぶ離散事象シミュレーション
Diogo Costa (PhD, MSc)
Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific
ヒストグラム
Matplotlib パッケージ
import matplotlib.pyplot as plt
用途: データセット data を50分割してヒストグラムを作成する
plt.hist(data, bins=50)


機械学習

離散事象モデルにおいて
この章の焦点
観測値とクラスター重心

SciPy のメソッド
scipy.cluster.vq.kmeans()
実装
import scipy
scipy.cluster.vq.kmeans(
obs, k_or_guess, iter=20, thresh=1e-05,
check_finite=True, *, seed=None)
obs は numpy 配列k-means実行前: データのホワイトニング
obs データの相関を除去するobs の各次元を標準偏差でスケーリングする
SciPy の場合
scipy.cluster.vq.whiten(
obs, check_finite=True)
obs は numpy 配列Process 1 の影響を見てみましょうDNT_CURLY_TAG_2

パッケージをインポートする
import scipy.cluster.vq as scvq
モデル結果をホワイトニングする
white_data = scvq.whiten(model_results)
2つのクラスター(青い点)を見つける
cluster_centroids, distortion =
scvq.kmeans(white_data, 2)
手法
シンプル法
nobs = 観測値の数num_clusters =
int((model_results.shape[0]/2)**0.5)
22
from sklearn.metrics import silhouette_score
k 個のクラスターについてシルエットスコアを計算する
for k in range(2, 6):
model = KMeans(n_clusters=k)
model.fit(model_results)
pred = model.predict(model_results)
score = silhouette_score(model_results, pred)
コンソール出力
Silhouette Score for k = 2: 0.591
Silhouette Score for k = 3: 0.472
Silhouette Score for k = 4: 0.381
Silhouette Score for k = 5: 0.364
Silhouette Score for k = 6: 0.373
結果の解釈
score = 1score = -1score が 0 に近いPythonで学ぶ離散事象シミュレーション