---
title: ２０２２年度マテリアルズ・インフォマティクス連続セミナー：次元圧縮・分類・クラスタリング
tags:  #データ解析学 #機能分解木 #セミナー #マテリアルズ・インフォマティクス #次元圧縮 #分類 #クラスタリング  
author: [木野日織](https://convert.docswell.com/user/3465680103)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/GE5536KGE4.jpg?width=480
description: マテリアルズ・インフォマティクス 連続セミナー 第二回 動画（音量修正版、2022, Dec. 27修正）：https://youtu.be/wrANu-Cqv_0  . ソースコード（2023, Jan. 9 改定）：https://bitbucket.org/kino_h/python_mi_seminar_2023/src/master/ .
published: December 20, 22
canonical: https://convert.docswell.com/s/3465680103/KRN8WZ-2022-12-20-221301
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/GE5536KGE4.jpg)

２０２２年度
マテリアルズ・インフォマティクス
連続セミナー
第三回
木野日織（きのひおり）


# Page. 2

![Page Image](https://bcdn.docswell.com/page/972NZMWDJR.jpg)

データ解析学手法の四過程（再）
データから
知見を得る
1. データを
収集する
2. データを
加工する
3. データか
ら学習する
4. 結果の解
釈を行う
(階層構造の一例)


# Page. 3

![Page Image](https://bcdn.docswell.com/page/DJYPRXLMJM.jpg)

Scikit-learnの使い方（再）
基本的な使い方が統一されています。
回帰・分類・クラスタリング
X: (N,P) reg = LinearRegression(…)
y: (N)
reg.fit(X,y)
yp: (N) yp =reg.predict(X)
規格化・次元圧縮
Xtransformed: (N,P)
dr = PCA(…)
dr.fit(X)
Xtransformed =dr.transform(X)
dr.fit_transform(X)
としか呼べないモジュー
ルもあります。


# Page. 4

![Page Image](https://bcdn.docswell.com/page/V7N5D143E8.jpg)

ディレクトリとファイル
010.regression/
020.dimentionality_reduction/
030.classification/
040.clustering/
110.hea4_dos_clustering/
120.tomography/
130.descriptor_importance/
140.exhaustive_search/
150.Bayesian_optimization/
160.recommender_system/
500.itemset_mining/
510.ERS/
900.misc/
README.md
data/
data_calculated/
020.050.text.dimentionality_reduction_carbon8.ipynb
020.110.answer.PCA_sample.ipynb
020.120.answer.PCA_sample2.ipynb
dimred_misc.py
image_executed/


# Page. 5

![Page Image](https://bcdn.docswell.com/page/YJ9YG5QP73.jpg)

データの紹介
3D-000
3D-001
炭素構造データ
元論文ではGRRM法により炭素８原子による結晶構
造の構造探索を行っています。
説明変数
Behlerの二体symmetry functionによる変換した量を説
明変数とする。著作権のため構造は本ハンズオンに
含まれません。
3D-003
3D-004
目的変数
著作権のため全エネルギーをsiestaでPBE+D2で計算
し直しています。このため論文の値が一致しません。
1. Makito Takagi, Tetsuya Taketsugu, Hiori Kino, Yoshitaka Tateyama, Kiyoyuki Terakura, and Satoshi Maeda,
“Global search for low-lying crystal structures using the artificial force induced reaction method: A case study on carbon”, Phys. Rev. B 95, 184110, (2017)
2. Jörg Behler and Michele Parrinello, &quot;Generalized Neural-Network Representation of High-Dimensional Potential-Energy Surfaces&quot;, Phys. Rev. Lett. 98, 146401(2007)


# Page. 6

![Page Image](https://bcdn.docswell.com/page/GJ86VYGXED.jpg)

データの紹介
炭素結晶構造
観測データ
sp, sp2-edge, sp2,
sp2-cube, sp3
結晶内元素環
境ラベル付き
観測データ
ラベル無し全
データ
Carbon8_descri
ptor_selected_s
p.csv
Carbon8_descri
ptor.csv


# Page. 7

![Page Image](https://bcdn.docswell.com/page/LJL954GN7R.jpg)

scikit-learnクラスの説明
X: (N,P)
三次元に次元圧縮する場合の例を示します。
PCA
X_pca: (N,3)
from sklearn.decomposition import PCA
pca = PCA(3)
pca.fit(X)
X_pca = pca.transform(X)
t-SNE
X_red: (N,3)
from sklearn.manifold import TSNE
red = TSNE(3)
X_red = red.fit_transform(X)


# Page. 8

![Page Image](https://bcdn.docswell.com/page/47MZ3KQQJW.jpg)

データ取得
Jupyter notebookのcellの実行番号
デ
ー
タ
収
集
カテゴリー名がつい
ているデータを観測
データとして読み込
む。
全観測データを未知
データと読み込む
説明変数カラムと
原子環境カラムの
定義。
次元圧縮なのでy
は無い。


# Page. 9

![Page Image](https://bcdn.docswell.com/page/P7R6QX8KE9.jpg)

データ取得（つづき）とデータ加工
目的：観測データと新規データの取得
データ収集
観測生データ取得
データ規格化
データ加工
新規生データ取得
同じ規格化関数を用いたデータ規
格化で規格化した新規データ
Xraw: (N,P)
X: (N,P)
Xraw_new: (Nnew,P)
X_new: (Nnew,P)


# Page. 10

![Page Image](https://bcdn.docswell.com/page/PJXM5685EX.jpg)

データからの学習
目的：寄与率、累積寄与率の評価
寄与率：pca.explained_variance_ratio_：リスト
そのサイズ＝len(pca.explained_variance_ratio_)
累積寄与率：ある次元までの寄与率の和
説明変数の全次元を用いて
PCA変換を行う。
データか
らの学習
indx: (P)
esum: (P)
累積寄与率のイン
デックスのリスト
累積寄与率のリスト
変数の中身は以下でご確認ください。
print(indx, esum)


# Page. 11

![Page Image](https://bcdn.docswell.com/page/3JKG61KR7D.jpg)

結果解釈
寄与率
累積寄与率
累積寄与率
plot_expratio:（次元 vs
寄与率もしくは累積寄
与率）の下の図を書く
ユーザー定義外部関数
分かること：
一次元で説明変数空間の～80%
二次元までで説明変数空間の～90%
を表現できている。
寄与率
一次元で十分かもしれませんが、以降の
図では二次元で説明変数空間の次元圧縮
を行い可視化します。


# Page. 12

![Page Image](https://bcdn.docswell.com/page/LE3N6QZGE5.jpg)

結果解釈
目的：二次元に次元圧縮すること。（2以上の数で変換して２次
元目までを用いても良い。）
データか
らの学習
観測データの次元圧縮
新規データの次元圧縮
X_rd : (N,ndim)
X_rd_new: (N,ndim)


# Page. 13

![Page Image](https://bcdn.docswell.com/page/8EDWV9RN7G.jpg)

結果解釈
二次元に次元圧縮した観測データ、その原子カテゴリー名、新規データを用いる。
可視化するユーザー定義外部関数
PCAの二軸目
観測データはラベル付きで大きな
symbolで示される。
新規データは薄い
点で示される。
PCAの一軸目


# Page. 14

![Page Image](https://bcdn.docswell.com/page/V7P9VZWNJ8.jpg)

結果解釈
分かること：
1. ラベルは結晶構造を可視
化し目視で人がつけたが、
この説明変数である程度
妥当な分離ができている
らしい。
2. 二次元でそれなりに分離
ができているだろう。
3. 二次元でなく一次元目だ
けでもそれなりに分離が
できている。
sp2と
sp2_tube:
周りに3原子
ある原子環境
sp3:
周りに4原子
ある原子環境
sp2_edgeとsp:
周りに2原子あ
る原子環境
推測できること：
3.高次元で可視化ができない
新規データ（薄い点）も原子
環境を妥当に表現できている
ことが期待される。


# Page. 15

![Page Image](https://bcdn.docswell.com/page/2JVMZW8YJQ.jpg)

ラベル毎に分離
した分布を得る
結果
低次元表現を可
視化する
観測データを収
集する
データを加工す
る
データから学習
する
炭素結晶構造を
得る
加工済み説明変
数を得る
PCAで次元圧縮
をする
物理的に考えてもそうだろうと
いう結果。
原因
ある原子からの
距離依存性を用
いて変換する
ベーラーの二体
対称性関数で変
換する
規格化する
PCA変換次元数
を定義する
ndim=2
分かったこと：
炭素結晶構造では、ベーラーの二
体対称性関数で変換し、更にPCA
により変換された二次元説明変数
空間で、𝑠𝑝𝑛 原子環境をある程度
妥当に分離した分布が得られた。
PCAで変換する


# Page. 16

![Page Image](https://bcdn.docswell.com/page/5EGG4D5WEL.jpg)

次元圧縮：多様体学習
T-SNE
目的：毎回
同じ結果を
与える
距離
t-SNE: 類似度に変換してから次元圧縮を行
う。
距離間の関係を低次元で保つよう変換する
際に距離を制限する。
元の次元で無いと完全に距離関係を保つこ
とは(多分)できないので、低次元で確率的
にデータ点を置く。この際に乱数が入る。
確率的な配置
metric={文字列}
考慮する近傍点
の数
Default,
metric=‘euclidean’
Perplexity={実数}
観測データ数以
下、5-50を考え
よ、とある。
random_state={整
数}


# Page. 17

![Page Image](https://bcdn.docswell.com/page/4JQXG1ZQEP.jpg)

距離を制限した多様体学習の利点
スイスロールの展開
距離を制限した方法
考慮外
距離
考慮す
る距離
近い
距離を制限しない方法
遠い
TECHNICAL COMMENTS, Nature, Eric L. Schwartz, Nature 295 (2002).


# Page. 18

![Page Image](https://bcdn.docswell.com/page/K7465R3YE1.jpg)

次元圧縮：多様体学習
目的：t-SNEを用いた次元圧縮と可視化。
TSNEは.fit_transform()の形しかない。新規データを変換できる表式になっていないから。
警告メッセージ
を消すため。
次元圧縮をして
random_state, perplexityで結果がかなり変わる。
教師なし学習なのでどのパラメタが妥当ということは無い。
後で示すカテゴリー分離ができていなくても、失敗というわけでは無い。
ユーザー定義外
部関数で可視化
する。


# Page. 19

![Page Image](https://bcdn.docswell.com/page/LJ1VWQ1NEG.jpg)

多様体学習結果の可視化
分かること：
この場合も近接原子数環
境の分布が分離している
らしい。


# Page. 20

![Page Image](https://bcdn.docswell.com/page/GJWL6M9ME2.jpg)

次元圧縮
Q. 次元圧縮は低次元で可視化するため？
A. 次元圧縮はかなり広い概念を含みます。
ニューラルネットワークのオートエンコーダーで潜在空間に変換することも次元
圧縮手法の一つです。
また、160.recommender_system/は教師なし学習の次元圧縮を用いた探索手法です。
データインスタンス数が少ない場合は次元圧縮を用いた方が高速に探索を行える
場合があります。


# Page. 21

![Page Image](https://bcdn.docswell.com/page/4EZMYQ9MJ3.jpg)

参考
分散が小さい軸に目的変数依存している例
020.050.text.dimentionality_reduction_carbon8.ipynb
020.110.answer.PCA_sample.ipynb
020.120.answer.PCA_sample2.ipynb
dimred_misc.py
image_executed/


# Page. 22

![Page Image](https://bcdn.docswell.com/page/Y76ND6K57V.jpg)

分散が小さい軸に目的変数依存している例
それぞれの点が色に対応した値を持っているとします。
二次元変換後データ
二次元元データ
意味すること：
説明変数{𝑥Ԧ }で寄与率が大き
い空間を切り出し、{𝑥Ԧ ′ }とし
ても、妥当なモデル
𝑦~𝑓(𝑥Ԧ ′ )
ができるわけではない。
PCAで変換
では、どういう場合に妥当な
のか？
短軸側に目的変数が依
存しているとする。
目的変数を参照しているわけ
ではないので、当然長軸側が
一軸目となる。
新機能法なので、妥当かどうか
は実際に適用し、評価しないと
判断できない。


# Page. 23

![Page Image](https://bcdn.docswell.com/page/G75536PG74.jpg)

回帰(classification)


# Page. 24

![Page Image](https://bcdn.docswell.com/page/9J2NZM6DER.jpg)

ディレクトリとファイル
010.regression/
020.dimentionality_reduction/
030.classification/
040.clustering/
110.hea4_dos_clustering/
120.tomography/
130.descriptor_importance/
140.exhaustive_search/
150.Bayesian_optimization/
160.recommender_system/
500.itemset_mining/
510.ERS/
900.misc/
README.md
data/
data_calculated/
delete_markdown_cell.py*
030.050.text.logistic_regression.ipynb
030.110.answer.ZB_WZ_logreg-cv.ipynb
030.120.answer.mono_structure_logisticregressionCV.ipynb
image_executed/


# Page. 25

![Page Image](https://bcdn.docswell.com/page/DEYPRX9MEM.jpg)

データの紹介
閃亜鉛鉱構造とウルツ鉱構造のエネルギー差データ
説明変数
二元合金の元素説明変数,
IP（イオン化ポテンシャル）,EA（電子親和力）,
Highest_occ state energy, Lowest_unocc state energy, s,p
の原子半径
目的変数
二元合金の閃亜鉛鉱構造とウルツ鉱構造のエネル
ギー差dE
Luca M. Ghiringhelli, Jan Vybiral, Sergey V. Levchenko, Claudia Draxl, and Matthias Scheffler, &quot;Big Data of Materials Science: Critical Role of the
Descriptor“, Phys. Rev. Lett. 114, 105503 (2015)


# Page. 26

![Page Image](https://bcdn.docswell.com/page/VJN5D1L378.jpg)

交差検定の予測値
分類モデルを得る
ハイパーパラメタ
を与えてモデル当
てはめを行う
ハイパーパラメタ
を最適化して予測
モデルを作る
cls=LogisticRegressio
n(…)
cls=LogisticRegressio
nCV(…)
分類モデルの予
測値を得る
与えれた予測モ
デルの予測値
交差検定過程で
の複数予測モデ
ルに対する予測
値
y=cls.predict(X)
y=
cross_val_predict(c
ls,X,y)


# Page. 27

![Page Image](https://bcdn.docswell.com/page/YE9YG54PJ3.jpg)

交差検定の予測値
分類モデルの予
測値を得る
ここでは
与えれた予測モ
デルの予測値
交差検定過程で
の複数予測モデ
ルに対する予測
値
y=cls.predict(X)
y=
cross_val_predict(
cls,X,y)
曖昧に「交差検定の予測
値」というとこちらの意
味であることが多い。
１．最適なハイパーパラメタを得る。
２．「交差検定の予測値」を得る。
３．「交差検定の予測値」を用いて各種
評価指標値を得る。
４．観測データ全てを用いて学習した予
測モデルの予測値を得る。
を行う。


# Page. 28

![Page Image](https://bcdn.docswell.com/page/GE86VYQX7D.jpg)

Scikit-learnの関数
* ロジスティック回帰
from sklearn.linear_model import LogisticRegression
cls = LogisticRegression(penalty=&quot;L1&quot;,C=C)
cls.fit(X,y)
C: スカラー、ハイ
ypred = cls.predict(X)
パーパラメタ
* 交差検定ロジスティック回帰
from sklearn.linear_model import LogisticRegressionCV
kf = KFold(5, shuffle=True)
cls = LogisticRegressionCV(penalty=&quot;L1&quot;,cv=kf)
cls.fit(X,y)
ypred = cls.predict(X)
X:(N,P)
y: (N)
ypred:(N)
分類モデルを得る
ハイパーパラメタ
を与えてモデル当
てはめを行う
ハイパーパラメタ
を最適化して予測
モデルを作る
cls=LogisticRegressio
n(…)
cls=LogisticRegressio
nCV(…)


# Page. 29

![Page Image](https://bcdn.docswell.com/page/LEL954XNJR.jpg)

Scikit-learnの関数
分類評価指標
目的変数観測値： y(N) ,目的変数予測値：ypred(N)
* 混同行列
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y,ypred) # np.ndarrayが返る。
(K,K)
* それぞれの評価指標値
from sklearn.metrics import accuracy_score
from sklearn.metrics import precision_score, recall_score, f1_score
score = accuracy_score(y,ypred)
average=“weighted” # 加重平均で一つの全体の評価指標値を得る
prec = precision_score(y,ypred, average=average)
scalar
recall = recall_score(y,ypred, average=average)
f1 = f1_score(y,ypred, average=average)
* classification report
from sklearn.metrics import classification_report
文字列
msg = classification_report(y,ypred) # 文字列を返す。
print(msg)


# Page. 30

![Page Image](https://bcdn.docswell.com/page/4JMZ3KLQEW.jpg)

Scikit-learnの関数
「交差検定の予測値」を得る関数。
(N)
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_predict
cls = LogisticRegression(C=C_opt)
kf = KFold(5, shuffle=True)
yp_cv = cross_val_predict(cls, X, y, cv=kf)
分類モデルの予
測値を得る
与えれた予測モ
デルの予測値
交差検定過程で
の複数予測モデ
ルに対する予測
値
y=cls.predict(X)
y=
cross_val_predict(c
ls,X,y)


# Page. 31

![Page Image](https://bcdn.docswell.com/page/PJR6QXKK79.jpg)

データ取得
目的：生説明変数と生目的変数の取得
ファイルから観測
データの読み込み
説明変数カラム、
目的変数カラム
の定義
(N,P)
(N)
生説明変数
生目的変数の生成


# Page. 32

![Page Image](https://bcdn.docswell.com/page/PEXM56L57X.jpg)

データ加工
目的：データ規格化関数生成と加工（規格化）された説明変数の取得
目的変数をカテ
ゴリー値に変換
y:（分類の）目的変数、
カテゴリー数：K
このデータではK=2
(N)
データ規格化
(N,P)
X: 規格化された説明変数:


# Page. 33

![Page Image](https://bcdn.docswell.com/page/3EKG61LRJD.jpg)

データからの学習
目的：最適なハイパーパラメタ値を得る
五回交差検定、ランダ
ムに分割
１．交差検定ロジス
ティック回帰の定義
２．ロジスティック回帰の
最適ハイパーパラメタを求
める。
３．全観測データ（X,y)を
用いて一つだけ予測モデル
を求める。
出力：三角マークは押せる。


# Page. 34

![Page Image](https://bcdn.docswell.com/page/L73N6Q3G75.jpg)

交差検定の予測値
分類モデルの予
測値を得る
与えれた予測モ
デルの予測値
交差検定過程で
の複数予測モデ
ルに対する予測
値
y=cls.predict(X)
y=
cross_val_predict(c
ls,X,y)
目的：訓練データ、テ
ストデータ分割による
擬似的な（未知データ
に対する）汎化性能の
評価


# Page. 35

![Page Image](https://bcdn.docswell.com/page/87DWV94NJG.jpg)

データからの学習と評価指標
目的： 「交差検定の予測値」（yp_cv: (N) )の生成と「交差検定の予測値」を用いた分類評価指標
値の出力。
最適なハイパーパラメタ(cls_cv.C_[0])がすでに求まった。
ハイパーパラメタ最適値を用いてロ
ジスティック回帰モデルを定義
(N) 、交差
検定の予
測値
五回「交差検定の予測値」を生成す
る。
「交差検定の予測値」を用いた分類
評価指標値の出力


# Page. 36

![Page Image](https://bcdn.docswell.com/page/VJP9VZMNE8.jpg)

データからの学習：各種評価指標
目的：各種評価指標の個別計算値を得る。
加重平均
スカ
ラー
加重平均の場合は全体の
指標なのでスカラー


# Page. 37

![Page Image](https://bcdn.docswell.com/page/2EVMZW9YEQ.jpg)

データからの学習：混同行列
目的：混同行列の作成。
cls_cv.classes_: (K) クラス数
混同行列を作るためのカテゴリー順序
はライブラリに与えていない。
(K)
(K)
(K,K)
行内に収まるよう
に改行した。


# Page. 38

![Page Image](https://bcdn.docswell.com/page/57GG4DZW7L.jpg)

交差検定の予測値
目的：未知データ
に適用する予測モ
デルの生成
分類モデルの予
測値を得る
与えれた予測モ
デルの予測値
交差検定過程で
の複数予測モデ
ルに対する予測
値
y=cls.predict(X)
y=
cross_val_predict(c
ls,X,y)
目的：訓練データ、テ
ストデータ分割による
擬似的な（未知データ
に対する）汎化性能の
評価


# Page. 39

![Page Image](https://bcdn.docswell.com/page/4EQXG1LQ7P.jpg)

データからの学習（２）
目的：交差検定の予測値と全観測データを用いて生成した予測モデルによる予測値の比較。
全観測データを用いて生成した予測モデルによる予測値と予測確率の生成
(N)
(N,K)
未知データは無いので、
全観測データを用いる。
全観測データを用いて生成した予測値を用いた混同行列
(K,K)
（行幅に収ま
るように改行
した。）


# Page. 40

![Page Image](https://bcdn.docswell.com/page/KJ465RDY71.jpg)

ディレクトリとファイル
010.regression/
020.dimentionality_reduction/
030.classification/
040.clustering/
110.hea4_dos_clustering/
120.tomography/
130.descriptor_importance/
140.exhaustive_search/
150.Bayesian_optimization/
160.recommender_system/
500.itemset_mining/
510.ERS/
900.misc/
README.md
data/
data_calculated/
delete_markdown_cell.py*
030.050.text.logistic_regression.ipynb
030.110.answer.ZB_WZ_logreg-cv.ipynb
030.120.answer.mono_structure_logisticregressionCV.ipynb
image_executed/
OvR法による多値分類問題例


# Page. 41

![Page Image](https://bcdn.docswell.com/page/LE1VWQZN7G.jpg)

クラスタリング


# Page. 42

![Page Image](https://bcdn.docswell.com/page/GEWL6M6M72.jpg)

ディレクトリとファイル
010.regression/
020.dimentionality_reduction/
030.classification/
040.clustering/
110.hea4_dos_clustering/
120.tomography/
130.descriptor_importance/
140.exhaustive_search/
150.Bayesian_optimization/
160.recommender_system/
500.itemset_mining/
510.ERS/
900.misc/
README.md
data/
data_calculated/
delete_markdown_cell.py*
040.050.text.clustering.ipynb
040.110.answer.fe2_clustering.ipynb
clustering_misc.py
image_executed/


# Page. 43

![Page Image](https://bcdn.docswell.com/page/47ZMYQYME3.jpg)

データ取得
炭素構造データを用いる。
全観測データ取得
(N,P)
カテゴリー名が
ついている観測
データを新規
データとして取
得
(Nnew,P)
説明変数カラムの
定義
(Nnew)
カテゴリー名の取得
sp, sp2, sp2_edge, sp2_tube, sp3


# Page. 44

![Page Image](https://bcdn.docswell.com/page/YJ6ND6D5JV.jpg)

データ規格化とデータからの学習
目的：X,X_PCA,クラスタ予測値（yp_km）の作成。
観測生データ取得
(N,P)
(N,2)
データ規格化
可視化用に二次元に次
元圧縮した説明変数
クラスター数（K）=3と
してk-means法を用いる
(N,P)
学習と予測


# Page. 45

![Page Image](https://bcdn.docswell.com/page/GJ55363GJ4.jpg)

可視化
目的：クラスタリング結果解釈の前にデータそれ自体の可視化して解釈する。
新規データの取得
(Nnew,P)
(Nnew,P)
(Nnew,2)
規格化変換
可視化用に二次元に次元圧縮変換
PCA2
ユーザー定義関数による可視化
１．データ分布は分離していない。
２．右肩下がりの斜めに分布している。
PCA1


# Page. 46

![Page Image](https://bcdn.docswell.com/page/LE3N6Q6PE5.jpg)

結果解釈
k-means法を用いたクラスタリングと予測（再出）
(N)
学習は説明変数の
みを用いる。
X_PCA: (N,2), yp_km:(N)
ユーザー定義関数
可視化のalpha channel
（答えを知っているので
分かるが、）このデータ
では妥当にクラスタリン
グできない。


# Page. 47

![Page Image](https://bcdn.docswell.com/page/8EDWV9V37G.jpg)

データからの学習と結果解釈
目的：ガウス混合法を用いたクラスタリングと可視化
(NCLUSTERS=3)
(N)
X_PCA: (N,2), yp_gmm:(N)
可視化のalpha channel
（答えを知っているので
分かるが、）このデータ
ではk-means法より妥当に
クラスタリングできた。


# Page. 48

![Page Image](https://bcdn.docswell.com/page/V7P9VZVPJ8.jpg)

階層クラスタリング
目的：（Nneｗでは教材として可視化するためには数が多いので）数を減らす。
(15,P), (15)
15に数を減らした説明変数とそのカテゴリー名ラベル
参考）変数の中身を見るには,たとえば、Jupyter notebookのセルにans_list_sampleと入力し実行する。


# Page. 49

![Page Image](https://bcdn.docswell.com/page/2JVMZWZVJQ.jpg)

階層クラスタリング
目的：階層クラスタリングと可視化
X_sample: (15,P)とans_list: (15)を用いる。
(15*14/2)、一次元化
した上三角行列成分
(14,4) 、
Dendrogram上流
の位置情報が入
る。
ユークリッド距離を用いて類
似度距離行列の計算をする。
上位のクラスタ間の距離の計
算方法としてcomplete法を用
いる。
上流から下
流が左から
右になるよ
うに書く。


# Page. 50

![Page Image](https://bcdn.docswell.com/page/5EGG4D41EL.jpg)

Pdistで使用可能なmetric(距離実装)
scipy.spatial.distance.pdistのNotes部分
使用可能な距離実装(metric)の名
前と定義、使い方例が書いてある。
scipy.spatial.distance.pdist
https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.pdist.
html


# Page. 51

![Page Image](https://bcdn.docswell.com/page/4JQXG1GNEP.jpg)

上位クラスター間の距離定義(method)
scipy.cluster.hierarchy.linkage
https://docs.scipy.org/doc/scipy/reference/generated/scipy.cluster.hierarchy.linkage.html?highlight=linkage
“complete”は下位クラ
スターに含まれるデー
タ点間距離の最大値。


# Page. 52

![Page Image](https://bcdn.docswell.com/page/K7465R53E1.jpg)

可視化結果
近接原子２つ
近接原子４つ
近接原子３つ
階層クラスタリングは対話的なクラ
スタリング手法です。
解析者の目的に応じて、パラメタ
（Metric, method）を選択できます。


# Page. 53

![Page Image](https://bcdn.docswell.com/page/LJ1VWQWZEG.jpg)

クラスタリング手法
距離実装は
Eucleadeanのみ。
教師なし学習、
カテゴリー分け
手法
階層クラスタリ
ング
クラスタリング
sklearn.cluster.K
Means
sklearn.mixture.G
aussianMixture
Scipy定義
scipy.spatial.dista
nce.pdist
二点間距離実装
metric
二点間距離を得
る
上位クラスター
間の距離を得る
独自定義
距離行列作成
一次元表現への
変換
Scipy.spatial.dista
nce.squareform
scipy.cluster.hier
archy.linkage
上位クラスター
間距離定義
method


# Page. 54

![Page Image](https://bcdn.docswell.com/page/GJWL6M66E2.jpg)

参考
010.regression/
020.dimentionality_reduction/
030.classification/
040.clustering/
110.hea4_dos_clustering/
120.tomography/
130.descriptor_importance/
140.exhaustive_search/
150.Bayesian_optimization/
160.recommender_system/
500.itemset_mining/
510.ERS/
900.misc/
README.md
data/
data_calculated/
delete_markdown_cell.py*
鉄構造データを用いたクラスタリング・階層クラスタリング
040.050.text.clustering.ipynb
040.110.answer.fe2_clustering.ipynb
clustering_misc.py
image_executed/


# Page. 55

![Page Image](https://bcdn.docswell.com/page/4EZMYQYRJ3.jpg)

内容
鉄構造データの
⚫ クラスタリング
⚫ 階層クラスタリング
◆ データインスタンスに関して
◆ 説明変数に関して
• 独自距離定義方法


# Page. 56

![Page Image](https://bcdn.docswell.com/page/Y76ND6D17V.jpg)

微小変位を入れた鉄構造データ
BCC構造
FCC構造
HCP構造
鉄構造データ
１．微小変位を加えた結晶を作る。
２．Behlerの二体対称性関数で説明変数に変換する。
説明変数：二体対称性関数生成時のパラメタ
目的変数：無し
観測データ
新規データ
Fe2_descriptor
.csv
Fe2_descriptor
_newdata.csv


# Page. 57

![Page Image](https://bcdn.docswell.com/page/G755363L74.jpg)

今回のセミナーは以上になります。


