@浙大疏錦行?python day 18.
內容:
- 昨天學習了聚類算法的一些基本內容,今天繼續學習相關知識
- 分析簇的特征和相關含義(使用可視化來進行分析,也可以使用ai)
代碼:
shap.initjs()
# 初始化 SHAP 解釋器
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(x1) # 這個計算耗時
shap_values.shape # 第一維是樣本數,第二維是特征數,第三維是類別數shap.summary_plot(shap_values[:, :, 0], x1, plot_type="bar",show=False) # 這里的show=False表示不直接顯示圖形,這樣可以繼續用plt來修改元素,不然就直接輸出了
plt.title("SHAP Feature Importance (Bar Plot)")
plt.show()# 繪制簇0的分布圖
import matplotlib.pyplot as plt# 總樣本中的前四個重要性的特征分布圖
fig, axes = plt.subplots(2, 2, figsize=(12, 8))
axes = axes.flatten()for i, feature in enumerate(selected_features):axes[i].hist(X_cluster0[feature], bins=20)axes[i].set_title(f'Histogram of {feature}')axes[i].set_xlabel(feature)axes[i].set_ylabel('Frequency')plt.tight_layout()
plt.show()
# 簇2
import matplotlib.pyplot as plt# 總樣本中的前四個重要性的特征分布圖
fig, axes = plt.subplots(2, 2, figsize=(12, 8))
axes = axes.flatten()for i, feature in enumerate(selected_features):axes[i].hist(X_cluster2[feature], bins=20)axes[i].set_title(f'Histogram of {feature}')axes[i].set_xlabel(feature)axes[i].set_ylabel('Frequency')plt.tight_layout()
plt.show()