Jupyter Notebookコード
import pandas as pd #pandasをpdとしてインポートする。
import numpy as np #numpyをnpとしてインポートする。
import matplotlib.pyplot as plt #matplotlibをpltとしてインポートする。
%matplotlib inline
#上記の3つは定型文のように使わなくても入れておく(入れなくてもいい)。
df= pd.read_csv("ForR_BP.csv") #データ(別府温泉の泉質)をインポートして、dfとする。
csvファイルは → https://drive.google.com/file/d/1B_CI3Ba5vcKoAoKcB5B1q8N69KueLgDK/view?usp=sharing
df.head() #dfデータ(別府温泉の泉質)の上から5行までを見る。
#基本統計量を確認
df.describe()
##データの正規化
df_data = df.iloc[:, 1:].apply(lambda x: (x-x.mean())/x.std(), axis=0)
#dfデータを正規化してdf_dataとして保存する。(水質データの桁数が異なるので、正規化をする)
df_data.head()
# 階層型クラスタリングに使用する関数インポート
from scipy.cluster.hierarchy import linkage
from scipy.cluster.hierarchy import dendrogram
result_hca = linkage(df_data.iloc[:, :], #ユーグリッドとWard法を使い、クラスタリングする。
#metric = 'correlation', #他の方法も載せているが、#はコメント文だから実行しない
metric = 'euclidean', #metric = 'cosine',
#method = 'average', method = 'ward', #method= 'complete', #method='weighted')
#デンドログラムを作成
plt.figure(figsize=(10, 12))
dendrogram(result_hca, orientation='right', labels=list(df.index), color_threshold=0.9)
plt.title("Dedrogram")
plt.xlabel("Threshold")
plt.grid()
plt.tick_params(labelsize=12)
plt.show()
# デンドログラムを保存する。
plt.savefig("300_dpi_scatter.png", format="png", dpi=300)