01. νμ΄μ¬ κΈ°λ°μ λ¨Έμ λ¬λκ³Ό μνκ³ μ΄ν΄
import numpy as np
π Numpy ν¨μ λ° λ©μλ
- np.array()
- np.arange()
- np.zeros()
- np.ones()
π μΈλ±μ± [ ] , μ¬λΌμ΄μ± [ : ]
π νλ ¬μ μ λ ¬ : np.sort() , ndarray.sort(), np.argsort()
π μ νλμ μ°μ° : np.dot()
import pandas as pd
π DataFrame
- λ°μ΄ν° λΆλ¬μ€κΈ°
- μ 보 νμΈνκΈ°
π μ λ ¬, aggregation ν¨μ, Groupby μ μ©
- DataFrame.sort_values( by = , ascending = True, inplace = True)
- μ°μ°ν¨μ : min , max, sum, median, count (β» axis = 0 ν, axis = 1 μ΄ λ°©ν₯ μ μ©)
- DataFrame.groupby() : λ°λμ aggregation μ°μ° ν¨μλ₯Ό νΈμΆν΄μΌ νλ€.
π κ²°μ λ°μ΄ν° μ²λ¦¬
- DataFrame.isna().sum() : κ²°μ λ°μ΄ν° κ°μ νμΈ
- DataFrame.fillna() : κ²°μ λ°μ΄ν°λ₯Ό λ€λ₯Έ κ°μΌλ‘ λ체 κ°λ₯. inplace=True λ‘ μ§μ ν΄μΌ μ€ν κ°μ΄ λ°μ
π apply lambda
- DataFrame[μ΄].apply(lambda x : ν¨μμ)
- νΉμ μΉΌλΌμ λν΄ νΉμ ν¨μλ₯Ό κ° μ μ κ°μ μ μ©
- if else λ¬Έ : list comprehension μ¬μ©
02. μ¬μ΄ν·λ°μΌλ‘ μμνλ λ¨Έμ λ¬λ
π 2.2 λ°μ΄ν° λΆμ νλ‘μΈμ€
π 2.3 μ¬μ΄ν·λ° κΈ°λ° νλ μμν¬
1. μ§λνμ΅
- λΆλ₯ λ¬Έμ μ νκ· λ¬Έμ λ‘ κ΅¬μ± → Estimator ν΄λμ€
- fit() κ³Ό predict() λ΄λΆ ꡬν
- Evaluation ν¨μ, νμ΄νΌνλΌλ―Έν° νλ ν΄λμ€μ κ²½μ° μ΄λ₯Ό μΈμλ‘ λ°μ
2. λΉμ§λνμ΅
- μ°¨μμΆμ, ν΄λ¬μ€ν°λ§, νΌμ² μΆμΆ λ±μ ν΄λμ€
- fit() κ³Ό transform() λ΄λΆ ꡬν (νλλ‘ κ²°ν©ν fit_transform() μ 곡)
β· fit() : μ λ ₯ λ°μ΄ν°μ ννμ λ§μΆ° λ°μ΄ν°λ₯Ό λ³ννκΈ° μν μ¬μ ꡬ쑰 λ§μΆ€
β· transform() : μ΄ν μ λ ₯ λ°μ΄ν°μ μ°¨μ λ³ν, ν΄λ¬μ€ν°λ§ λ± μ€μ μμ μν
3. μ¬μ΄ν·λ°μ μ£Όμ λͺ¨λ
π νΌμ²μ²λ¦¬
- Sklearn.preprocessing : λ°μ΄ν° μ μ²λ¦¬μ νμν κΈ°λ₯. μΈμ½λ©, μ κ·ν, μ€μΌμΌλ§
- Sklearn.feature_selection : μκ³ λ¦¬μ¦μ ν° μν₯μ λ―ΈμΉλ νΌμ²λ₯Ό μ°μ μμλλ‘ μ λ μ μμ μν
- Sklearn.feature_extraction : ν μ€νΈ λ°μ΄ν°λ μ΄λ―Έμ§ λ°μ΄ν°μ 벑ν°νλ νΌμ² μΆμΆ. Countvectorizer, tf-idf vectorizer λ±
π μ°¨μμΆμ
- Sklearn.decomposition : μ°¨μμΆμ κ΄λ ¨λ μκ³ λ¦¬μ¦. PCA, NMF, Truncated SVD
π λ°μ΄ν° λΆλ¦¬, κ²μ¦ & νλΌλ―Έν° νλ
- Sklearn.model_selection : κ΅μ°¨κ²μ¦μ μν νμ΅/ν μ€νΈ λ°μ΄ν° λΆλ¦¬, μ΅μ νλΌλ―Έν° μΆμΆ. train_test_split, GridSearchCV λ±
π νκ°
- Sklearn.metrics : μ±λ₯ μΈ‘μ λ°©λ² μ 곡. Accuracy, Precision, Recall, ROC-AUC, RMSE λ±
π ML μκ³ λ¦¬μ¦
π 2.4 Model Selection λͺ¨λ μκ°
π νμ΅/ν μ€νΈ λ°μ΄ν° μΈνΈ λΆλ¦¬
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, t_test = train_test_split(data, label, test_size = 0.2, random_state=11)
- shuffle : λ°μ΄ν°λ₯Ό λΆλ¦¬νκΈ° μ λΆμ°μμΌ ν¨μ¨μ μΈ νμ΅/ν μ€νΈ λ°μ΄ν° λΆλ¦¬
- random_state : νΈμΆν λλ§λ€ λμΌν νμ΅/λ°μ΄ν° μΈνΈλ₯Ό μμ±νκΈ° μν΄ μ£Όμ΄μ§λ λμκ°
π κ΅μ°¨κ²μ¦
- κ³Όμ ν© λ°©μ§
- λ°μ΄ν° νΈμ€μ λ§κΈ° μν΄ λ³λμ μ¬λ¬ μΈνΈλ‘ ꡬμ±λ νμ΅/ν μ€νΈ λ°μ΄ν° μΈνΈμμ νμ΅κ³Ό νκ° μν
β κ΅μ°¨κ²μ¦ κ³Όμ
- ν΄λ μΈνΈ μ€μ
- for 루νμμ λ°λ³΅μ μΌλ‘ νμ΅/κ²μ¦μ© μΈλ±μ€ μΆμΆ
- νμ΅κ³Ό μμΈ‘ μνν΄ μμΈ‘ μ±λ₯ λ°ν
β K-fold cross validation
from sklearn.model_selection import KFold
kfold = KFold(n_splits = 5)
- K κ°μ λ°μ΄ν° ν΄λ μΈνΈλ₯Ό λ§λ€μ΄ K λ²λ§νΌ κ° ν΄λ μΈνΈμ νμ΅κ³Ό κ²μ¦νκ°λ₯Ό λ°λ³΅μ μΌλ‘ μν
- n_splits νλΌλ―Έν°λ₯Ό μ΄μ©ν΄ λ°μ΄ν° μΈνΈ μ§μ
- Kfold.split() : ν΄λλ³ νμ΅μ©, κ²μ¦μ© λ°μ΄ν°μ μΈλ±μ€λ₯Ό array λ‘ λ³ν
β‘ Stratified K-fold
from sklearn.model_selection import StratifiedKFold
skfold = StratifiedKFold(n_splits = 3)
- μ΄μ°κ° ννμ λ μ΄λΈ(Y) λ₯Ό κ°μ§ λ°μ΄ν°μ νν΄ μ μ© - λΆλ₯, λ‘μ§μ€ν± νκ· λ±
- λΆκ· νν imbalanced λΆν¬λλ₯Ό κ°μ§ Y λ°μ΄ν° μ§ν©μ μν K ν΄λ λ°©μ
- μλ³Έ λ°μ΄ν°μ Y λΆν¬λ₯Ό λ¨Όμ κ³ λ €ν λ€ μ΄ λΆν¬μ λμΌνκ² νμ΅/κ²μ¦ λ°μ΄ν° λΆλ°°
β’ cross_val_score()
from sklearn.model_selection import cross_val_score, cross_validate
- κ΅μ°¨ κ²μ¦ κ³Όμ μ νκΊΌλ²μ μνν΄μ£Όλ API
- λ°νκ° : λ°°μ΄ ννμ μ§μ λ μ±λ₯μ§ν μΈ‘μ κ°
- μ£Όμ νλΌλ―Έν°
- μμ
from sklearn.model_selection import cross_val_score
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
# dataset
iris = load_iris()
logreg = LogisticRegression() # λ‘μ§μ€ν± νκ·
scores = cross_val_score(logreg, iris.data, iris.target, cv=5)
# model, train, target, cross validation
print('cross-val-score \n{}'.format(scores))
# [1. 0.9666667 0.933333 0.9 1.]
print('cross-val-score.mean \n{:.3f}'.format(scores.mean()))
# 0.960
β£ cross_validate()
- κ΅μ°¨ κ²μ¦ κ³Όμ μ νκΊΌλ²μ μνν΄μ£Όλ API
- cross_val_score μ λΉμ·νμ§λ§, λΆν λ§λ€ νλ ¨κ³Ό ν μ€νΈμ κ±Έλ¦° μκ°μ λ΄μ λμ λ리λ₯Ό λ°ννλ€.
- λ°νκ° : dict ννμ ν΄λλ³ test_score, fit_time λ± λ°ν
- λ€μ€νκ°μ§ν : μ¬λ¬κ°μ νκ° μ§νλ₯Ό μ¬μ©ν μ μλ€λ κ²μ΄ μ₯μ μ΄λ€.
- μ£Όμ νλΌλ―Έν°
- μμ
from sklearn.model_selection import cross_validate
cross_validate(SVC(gamma='auto'), X_train, y_train, scoring=['accuracy', 'roc_auc'], return_train_score=True)
# {'fit_time': array([0.07761502, 0.07732582, 0.07719207]),
# 'score_time': array([0.06746364, 0.06803942, 0.06800795]),
# 'test_accuracy': array([0.90200445, 0.90200445, 0.90200445]),
# 'test_roc_auc': array([0.99657688, 0.99814815, 0.99943883]),
# 'train_accuracy': array([1., 1., 1.]),
# 'train_roc_auc': array([1., 1., 1.])}
π κ΅μ°¨κ²μ¦μ νμ΅μ κ³Όμ° μν₯μ λ―ΈμΉ κΉ?
π λ΅ : νμ΅μ μ°Έμ‘°νκΈ΄ νλ€. νμ§λ§, νμ΅ κ°μ€μΉ μ λ°μ΄νΈμλ μν₯μ λ―ΈμΉμ§ λͺ»νλ€
β https://huidea.tistory.com/30 β
π GridSearchCV - κ΅μ°¨κ²μ¦κ³Ό μ΅μ νμ΄νΌ νλΌλ―Έν° νλμ νλ²μ βββ
- κ΅μ°¨κ²μ¦μ κΈ°λ°μΌλ‘ νμ΄νΌ νλΌλ―Έν°μ μ΅μ κ°μ μ°Ύλ API
- μ£Όμ νλΌλ―Έν°
- νμ΅ κ³Όμ
- μμ
- Attributes : fit μ΄νμ νμΈν΄λ³Ό μ μλ μΆλ ₯λ¬Ό
π 2.5 λ°μ΄ν° μ μ²λ¦¬
π Null κ° μ²λ¦¬
- νΌμ²λ€ μ€ Null κ°μ΄ μ μ κ²½μ° : ν΄λΉ νΌμ²μ νκ· κ° λ±μΌλ‘ λ체. μ΄λ νΌμ² μ€μλμ λ°λΌ λμ²΄κ° μ μ μ μ μ!
- νΌμ²λ€ μ€ Null κ°μ΄ λ§μ κ²½μ° : ν΄λΉ νΌμ²λ₯Ό drop νλ κ²μ΄ μΌλ°μ
- Null κ°μ λ§κ³ μ μμ μ λμ μΈ κΈ°μ€μ μλ€. ν΄λΉ νΌμ²μμμ Null κ° λΉμ¨λ‘ λ°μ§λ κ²μ΄ μΌλ°μ μ΄λ€.
π λ°μ΄ν° μΈμ½λ©
- μκ³ λ¦¬μ¦μ νμ΅μν€κΈ° μν΄ μΉ΄ν κ³ λ¦¬ν νΌμ²λ ν μ€νΈν νΌμ²λ₯Ό 'μ«μ' ννλ‘ λ³νν΄μ£Όλ μμ
β LabelEncoder
from sklearn.preprocessing import LabelEncoder
- λ¬Έμμ΄ κ°μ μ«μν μΉ΄ν κ³ λ¦¬ κ°μΌλ‘ λ³ν
- μΌκ΄μ μΈ μ«μκ°μΌλ‘ λ³νλλ©΄μ νΉμ ML μκ³ λ¦¬μ¦μμλ μμΈ‘μ±λ₯ μ ν λ¬Έμ λ°μ
- νΈλ¦¬κ³μ΄μ ML μκ³ λ¦¬μ¦μμ μ¬μ© μΆμ²
β‘ One-hot Encoding
from sklearn.preprocessing import OneHotEncoder
- ν ννμ νΌμ² κ³ μ κ°μ μ΄ ννλ‘ μ°¨μ λ³ν
- κ³ μ κ°μ ν΄λΉνλ μΉΌλΌμλ§ 1, λλ¨Έμ§λ 0 νμ
- λ³ν μ μ λ ₯κ°μΌλ‘ 2μ°¨μ λ°μ΄ν°κ° νμν¨!
β’ pd.get_dummies()
- νλ€μ€μμ μ 곡νλ μν«μΈμ½λ© API → μν«μΈμ½λ©μΈ μ΄ λ°©λ²μ λ λ§μ΄ μ¬μ©ν¨
- λ°μ΄ν°νλ μμ μΈμλ‘ λ°μμΌ ν¨
π νΌμ² μ€μΌμΌλ§
- μλ‘λ€λ₯Έ λ³μμ κ°μ λ²μλ₯Ό μΌμ ν μμ€μΌλ‘ λ§μΆλ μμ
- λνμ μΌλ‘ νμ€νμ μ κ·νκ° μλ€.
β νμ€ν
- κ° νΌμ² κ°μ κ°μ°μμ μ κ·λΆν¬ (νκ· =0, λΆμ°=1) μ κ°μ§ κ°μΌλ‘ λ³ν
- StandardScaler μ΄μ©
- νΉν SVM, μ ννκ·, λ‘μ§μ€ν± νκ· μ μ©νκΈ° μ μ κΌ μνν΄μΌν¨!
β‘ μ κ·ν
- μλ‘ λ€λ₯Έ νΌμ²μ ν¬κΈ°λ₯Ό 0κ³Ό 1 μ¬μ΄μ κ°μΌλ‘ ν΅μΌ (μμκ° μμ κ²½μ° -1κ³Ό 1 μ¬μ΄)
- MinMaxScaler μ΄μ©
- λ°μ΄ν°λΆν¬κ° κ°μ°μμ λΆν¬κ° μλ κ²½μ° μ μ©
'1οΈβ£ AIβ’DS > π λ¨Έμ λ¬λ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[05. ν΄λ¬μ€ν°λ§] K-means, νκ· μ΄λ, GMM, DBSCAN (0) | 2022.05.07 |
---|---|
[06. μ°¨μμΆμ] PCA, LDA, SVD, NMF (0) | 2022.04.24 |
[05. νκ·] μ ννκ·, λ€ννκ·, κ·μ νκ·, λ‘μ§μ€ν±νκ·, νκ·νΈλ¦¬ (0) | 2022.03.25 |
[04. λΆλ₯] LightGBM, μ€ννΉ μμλΈ, Catboost (0) | 2022.03.20 |
[04. λΆλ₯] GBM, XGboost (0) | 2022.03.14 |
λκΈ