Python 中的离散事件模拟
Diogo Costa (PhD, MSc)
Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific
直方图
Matplotlib 包
import matplotlib.pyplot as plt
用法: 用 50 个箱绘制数据集 data 的直方图
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 接近 0Python 中的离散事件模拟