---
tags: スキル定義委員会, データ加工, グルーピング, データ理解, ユークリッド距離, マンハッタン距離, L1距離, コサイン類似度, チェビシェフ距離, マハラノビス距離
---
# スキル定義委員会-085
## DE-85 データ加工 - マッピング処理 ⭐️ 🔥必須🔥
#### Q.数十万レコードのデータに対して、規定されたリストと照合して変換する、都道府県名からジオコードに変換するなど、ある値を規定の別の値で表現できる
```python=
import pandas as pd
# Create a sample dataframe
df = pd.DataFrame({
'col1': [1, 2, 3, 4],
'col2': ['A', 'B', 'C', 'D']
})
# Define the conversion list
conversion_list = {
'A': 'Apple',
'B': 'Banana',
'C': 'Carrot',
'D': 'Date'
}
# Convert the values in the 'col2' column using the conversion list
df['col2'] = df['col2'].map(conversion_list)
# Check the converted values
print(df)
```
------------------------------------------------------------------------
## DS-85 グルーピング - グルーピング ⭐️
### Q.階層クラスター分析において、デンドログラムの見方を理解し、適切に解釈できる

(https://www.ss.nanzan-u.ac.jp/dep/cluster.html)
* **Leaves**
デンドログラムの一番下の要素で、サイズ1の個々のオブジェクトまたはクラスター
* **Branches**
葉をつなぐことで、オブジェクト間の関係を表す。
枝の高さは、オブジェクトまたはクラスタ間の距離や類似性を表す。
* **Merges**
2つの枝が集まって新しい枝になる点で、新しいクラスタができることを表す
* **Cut-off line**
デンドログラムを異なるクラスタに分離する水平線
切断線の高さは、クラスタの数とクラスタリングの粒度を決定する
個々のオブジェクトから始めて、枝分かれや合流をたどりながら、すべてのオブジェクトが1つのクラスターにまとめられた頂上に到達します。デンドログラムを調べることで、どのオブジェクトがより密接に関連し、どのオブジェクトが明確なクラスターを形成しているかがわかります。これは、データの構造をよりよく理解し、オブジェクトをどのようにグループ化するかについて、情報に基づいた意思決定を行うのに役立ちます。
各クラスター間の距離には、
1. **ユークリッド距離**
$\sqrt{(x_1-y_2)^{2} + ... + (x_n-y_n)^{2} }$
```python=
import numpy as np
vec_a = np.array([10, 20, 30])
vec_b = np.array([30, 40, 50])
np.linalg.norm(vec_a - vec_b)
```
1. **マンハッタン距離(L1距離)**
$D(x, y) = \sum_{i=0}^k|x_i - y_i|$
```python=
a = np.array([1, 1])
b = np.array([2, 2])
np.linalg.norm(a - b, ord=1)
```
1. **コサイン類似度**
$$
\begin{align}
cos(x, y) &= \frac{x \cdot y}{|x||y|} = \frac{x}{|x|} \cdot \frac{y}{|y|} \\
&= \frac{\sum_{i=1}^{|V|}x_iy_i}{\sqrt{\sum_{i=1}^{|V|}x_i^2} \cdot \sqrt{\sum_{i=1}^{|V|}y_i^2}}
\end{align}
$$
$x, y$が正規化されていれば、
$cos(x, y)=x \cdot y = \sum_{i=1}^{|V|}x_iy_i$
```python=
def cos_sim(v1, v2):
return np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))
X = np.array([0.789, 0.515, 0.335,0])
Y = np.array([0.832, 0.555,0,0])
cos_sim(X, Y)
```
- [コサイン類似度について](https://www.cse.kyoto-su.ac.jp/~g0846020/keywords/cosinSimilarity.html)
1. **マハラノビス距離**
$D(x, \mu) = \sqrt{(x-\mu)^T\sum^{-1}(x-\mu)}$
- $\sum^{-1}:共分散行列$
- $x: データ$
- $\mu: xの平均$
```python=
mu_mat = np.mean(data, axis=0)
# data - mean
data_m_mat = data - mu_mat
# covariance matrix
cov_mat = np.cov(data.T)
cov_i_mat = np.linalg.pinv(cov_mat)
```
- [【異常検知】マハラノビス距離を嚙み砕いて理解する (2)](https://qiita.com/kotai2003/items/c66cfcc5266edec9a063)
1. **チェビシェフ距離**
$D(x, y) = max_i(|x_i - y_i|)$
```python=
from scipy.spatial.distance import chebyshev
a = np.array([1,1,1])
b = np.array([1,2,4])
chebyshev(a, b)
mahala_result = []
for i in range(len(data_m_mat)):
mahala_result.append(distance.mahalanobis(data[i],mu_mat, cov_i_mat ))
print(data[i])
```
1. **ミンコフスキー距離**
$D(x, y) = (\sum_{i=0}^{k}|x_i-y_i|^p)^{\frac{1}{p}}$
```python=
from scipy.spatial.distance import minkowski
a = np.array([1,1,1])
b = np.array([1,2,4])
minkowski(a, b, 1) # ≒マンハッタン距離
minkowski(a, b, 2) # ≒ ユークリッド距離
```
pが小さい値だと差が小さい成分も考慮することができ、pが大きくなるにつれ小さい成分が無視されていきます。
枝の高さは、マージされた2つのクラスタ間の類似度を表す。高さが大きい場合は、クラスタが非類似で離れている。高さが小さい場合は、クラスタが類似しており、近くにあることを意味する。
- [【python】ユークリッド距離, マンハッタン距離, チェビシェフ距離, ミンコフスキー距離](https://kagglenote.com/misc/various-distance/)
------------------------------------------------------------------------
## BZ-85 データ理解 - 意味合いの抽出、洞察 ⭐️⭐️
#### Q.分析結果を元に、意味合いの明確化に向けた分析の深掘り、分析対象データの見直しについて方向性を設計できる
1. **Define the objective**
レビューの目標と答えたい質問を明確に定義する
1. **Identify data sources**
レビューに使用するデータソースを決定し、それらが完全で、正確で、目的に関連するものであることを確認する
1. **Choose methodology**
質的分析または量的分析など、レビューに適した方法を選択し、データの収集と分析の方法を決定する
1. **Plan data organization**
データを分析し解釈する方法を含む、データをレビューするための体系的かつ組織的なアプローチを開発する。
1. **Visualize data**
レビューの結果を提示し、伝えるために、グラフやチャートなど、データの可視化技術の使用を検討する。
1. **Collaborate with experts**
レビューが包括的で、関連するすべての観点を考慮したものとなるよう、関連分野の専門家との協働を検討する。
1. **Ensure ethics**
レビューが倫理的な方法で実施され、データのプライバシーと機密性が保護されていることを確認する。
1. **Report results**
レビュー結果をどのように報告するか、報告書の形式や読者層などを計画する
1. **Implement review**
計画に従ってレビューを実施し、データを収集・分析し、結果を報告する
1. **Refine and update review**
レビューの目的を達成するために、レビュープロセスが適切かつ効果的であり続けるように、必要に応じて定期的にレビューと更新を行う
------------------------------------------------------------------------
# Quote
- [スキル定義委員会 from データサイエンティスト協会](https://twitter.com/jdss_skill)
<style>
.att0 {color: #eb4034;}
.att1 {color: #3465eb;}
</style>