📊 머신러닝
📌 머신러닝 Map
- 머신러닝 맵
-- MachineLearning --
├── Datapreprocessing [데이터 전처리]
│ ├── missing-data
│ ├── categorical-data
│ ├── splitting-the-dataset
│ └── feature-scaling
│
├── Regression [회귀]
│ ├── simple-linear-regression
│ ├── multiple-linear-regression
│ ├── polynomial-regression
│ ├── support-vector-regression
│ ├── decision-tree-regression
│ ├── random-forest-regression
│ └── Evaluating Regression Models Performance
│
├── Classification [분류]
│ ├── Logistic Regression
│ ├── K-Nearest Neighbors (K-NN)
│ ├── Support Vector Machine (SVM)
│ ├── Kernel SVM
│ ├── Naive Bayes
│ ├── Decision Tree Classification
│ ├── Random Forest Classification
│ └── XGBoost
│ └── Evaluating Classification Models Performance
│
├── Clustering [클러스터링]
│ ├── K-Means Clustering
│ └── Hierarchical Clustering
│
├── Association Rule Learning [연관 분석]
│ └── Apriori
│
├── Reinforcement Learning [강화 학습]
│ ├── Upper Confidence Bound (UCB)
│ └── Thompson Sampling
│
├── Natural Language Processing [자연어 처리]
│ ├── Prepare for NLP
│ └── Bag of words
│
├── Deep Learning [딥러닝]
│ ├── Artificial Neural Networks
│ └── Convolutional Neural Networks
│
├── Dimensionality Reduction [차원 축소]
│ ├── Principal Component Analysis (PCA)
│ ├── Linear Discriminant Analysis (LDA)
│ └── Kernel PCA
│
└── Model Selection
📊 상관관계 분석
📌 공분산과 상관계수
- 공분산
- 두 개 이상의 독립변수 사이의 관련성을 나타내는 척도 (방향성)
- np.cov(x, y)
- 상관계수
- 공분산을 표준화한 것이다. (방향성, 관련성 크기[-1 ~ 1 사이 값])
- 등간척도 : np.corrcoef(x, y)
- 서열척도 : stats.spearmanr(x, y)
- 참고
[ 공분산, 상관계수는 비선형 데이터에 대해 적용되지 않는다. ]
📌 두 독립변수의 공분산 확인과 문제점
a1 = np.arange(1, 6)
a2 = np.arange(2, 7)
print(a1)
print(a2)
print(np.cov(a1, a2))
print(np.cov(a1, np.arange(6, 1, -1)))
print(np.cov(a1, (3,3,3,3,3)))
print(np.cov(a1, a2))
print(np.cov(np.arange(10, 60, 10), np.arange(20, 70, 10)))
📌 두 독립변수의 공분산, 상관계수 구하기
x = [8, 3, 6, 6, 9, 4, 3, 9, 3, 4]
print('x 평균 : ', np.mean(x))
print('x 분산 : ', np.var(x))
y = [6, 2, 4, 6, 9, 5, 1, 8, 4, 5]
print('y 평균 : ', np.mean(y))
print('y 분산 : ', np.var(y))
print('x, y 공분산 : ', np.cov(x, y)[0, 1])
print('x, y 상관계수 : ', np.corrcoef(x, y)[0, 1])
📌 Pandas를 사용한 공분산, 상관계수 구하기
df = pd.read_csv('../testdata/drinking_water.csv')
print(df.head(3))
print(df.cov())
print(df.corr())
📌 상관계수 시각화 (scatter + heatmap)
from pandas.plotting import scatter_matrix
attr = list(df.columns)
scatter_matrix(df[attr], figsize=(10, 6))
plt.show()

import seaborn as sns
sns.heatmap(data=df.corr())
plt.show()
