본문 바로가기
728x90

Data Analytics with python/[Machine Learning ]18

RFC, GBM, XGBoost, LightGBM hyper-parameter tuning 트리 기반 자체의 하이퍼 파라미터가 많고 배깅, 부스팅, 학습, 정규화 등을 위한 하이퍼 파라미터가 추가되어 튜닝하기 어렵기에 하이퍼 파라미터에 대한 이해가 필요합니다. 파라미터를 튜닝하는 경우의 수 1. 피처(Feature)의 수가 매우 많습니다. 2.피처(Feature) 간 상관되는 정도가 많습니다. 3.데이터 세트에 따라 특성이 있는 경우 (비대칭적인 분포 등) Random Forest hyper-parameter parameter default description n_estimators 10 결정 트리의 개수 max_features ‘sqrt’ 최적의 분할을 위해 고려하는 최대 피처 개수 e.g.) 전체 피처가 16개라면 분할을 위해 4개 참조 max_depth None 트리의 최대 깊이를 규정.. 2023. 6. 19.
OLS 고급 수식 구문 '+' : 주 효과 ':' : 특정 상호 작용 2023. 2. 22.
[Regression/Classification] 교차 검증과 하이퍼 파라미터 튜닝 + pipeline GridSearchCV 교차검증과 하이퍼 파라미터 튜닝을 합니다. 랜덤 포레스트 하이퍼 파라미터 튜닝으로 예시 from sklearn.model_selection import GridSearchCV params = { 'n_estimators':[100], 'max_depth' : [6, 8, 10], 'min_samples_leaf' : [8, 12, 18], 'min_samples_split' : [8, 16, 20] } # model 객체 생성 후 GridSearchCV 수행 rf_clf = RandomForestClassifier(random_state=0, n_jobs=-1) grid_cv = GridSearchCV(rf_clf , param_grid=params , cv=2, n_jobs=-1.. 2023. 2. 16.
[Classification] Decision Tree 결정 트리 ● 데이터에 있는 규칙을 학습을 통해 자동으로 찾아내 트리 기반의 분류 규칙을 만듭니다. ● 규칙이 많아질수록 분류를 결정하는 방식이 더욱 복잡해지고 곧 과적합으로 이어집니다. 결정 트리 구조 ● Root Node : 뿌리의 시작점 ● Decision Node : 규칙 조건 ● Leaf Node : 결정된 클래스 값 ● Sub Tree : 규칙 노드(Decision Node)기반으로 분할되는 작은 트리 결정 노드의 규칙 조건 ● 정보 균일도가 높은 데이터 세트를 먼저 선택합니다. ● 정보의 균일도를 측정하는 대표적인 방법은 엔트로피를 이용한 정보 이득 지수와 지니 계수가 있습니다. ● 정보이득이 높은 속성을 기준으로 분할하거나 지니 계수가 낮은 속성을 기준으로 분할합니다. 정보 이득 정보 이득.. 2023. 2. 15.
[Clustering] DBSCAN DBSCAN¶ 밀도 기반 군집화 기하학적으로 복잡한 데이터 세트에도 효과적 특정 공간 내에 데이터 밀도 차이를 기반한 알고리즘 epsilon : 개별 데이터를 중심으로 입실론 반경을 가진 원형의 영역입니다. 핵심 포인트(최소 데이터 개수 이상(자신의 데이터 포함))와 이웃포인트(주변 영역에 포함)로 핵심포인트인 데이터를 정의합니다. Core point : 주변 영역 내에 최소 데이터 개수 이상을 가집니다. Border point : 핵심 포인트는 아니지만 이웃 포인트로 핵심 포인트를 가집니다. Noise point : 핵심 포인트와 이웃 포인트로 핵심포인트도 없습니다. 핵심 포인트를 서로 연결하면서 군비화를 구성합니다. In [29]: from sklearn.datasets import load_iris.. 2023. 2. 15.
[Clustering] GMM Gaussian Mixture Model¶ 확률 기반 군집화입니다. 적용 데이터가 여러 개의 가우시안 분포가 섞인 것으로 간주합니다. 즉, 전체 데이터 세트는 이를 구성하는 서로 다른 정규 분포 형태를 가진 여러 가지 확률 분포 곡선으로 구성될 수 있고, 개별 데이터가 이 중 어떤 정규 분포에 속하는지 결정하는 방식입니다. KMeans는 원형의 범위에서 군집화를 수행합니다. KMeans 보다 유연하게 다양한 데이터 세트에 잘 적용될 수 있다 (가령 직선으로 밀집된 데이터) In [1]: from sklearn.datasets import load_iris from sklearn.cluster import KMeans from sklearn.mixture import GaussianMixture impor.. 2023. 2. 15.
[Clustering] MeanShift 평균 이동 :¶ 군집의 중심을 데이터가 모여 있는 밀도가 가장 높은 곳으로 이동시킵니다. 컴퓨터 비전 영역에서 뛰어난 역할을 수행하는 알고리즘 입니다. 이미지나 영상 데이터에서 특정 개체를 구분하거나 움직임을 추적하는 데 사용합니다. In [12]: # 군집화 데이터 생성기 from sklearn.datasets import make_blobs # 평균 이동 (밀도가 가장 높은 곳) : MeanShift # 밀도의 추정 성능을 위한 최적의 대역폭 계산 : estimate_bandwidth from sklearn.cluster import MeanShift, estimate_bandwidth import pandas as pd import numpy as np import matplotlib.pyplot .. 2023. 2. 14.
[Clustering] K-means k-means In [1]: import matplotlib.pyplot as plt import numpy as np import pandas as pd # %matplotlib inline from sklearn.preprocessing import scale from sklearn.datasets import load_iris from sklearn.cluster import KMeans from sklearn.decomposition import PCA # 실루엣 분석 평가 지표 값을 구하기 위한 API 추가 from sklearn.metrics import silhouette_samples, silhouette_score In [2]: iris = load_iris() # Convert to D.. 2023. 2. 14.
[Dimension Reduction] NMF 변환 NMF¶ In [1]: from sklearn.decomposition import NMF from sklearn.datasets import load_iris import matplotlib.pyplot as plt %matplotlib inline iris In [2]: iris = load_iris() iris_ftrs = iris.data NMF 변환 In [12]: nmf = NMF(n_components=2, max_iter=1000) nmf.fit(iris_ftrs) iris_nmf = nmf.transform(iris_ftrs) NMF 변환된 입력 데이터 값 시각화 In [13]: plt.scatter(x=iris_nmf[:,0], y= iris_nmf[:,1], c= iris.target.. 2023. 2. 13.
[Dimension Reduction] SVD 변환 SVD¶ 사이킷런 TruncatedSVD 클래스를 이용한 변환¶ In [1]: from sklearn.decomposition import TruncatedSVD, PCA from sklearn.datasets import load_iris import matplotlib.pyplot as plt %matplotlib inline from sklearn.preprocessing import StandardScaler iris In [2]: iris = load_iris() iris_ftrs = iris.data SVD 변환 (스케일 전) In [3]: # 2개의 주요 component로 TruncatedSVD 변환 tsvd = TruncatedSVD(n_components=2) tsvd.fit(iris_.. 2023. 2. 13.
[Dimension Reduction] LDA 변환 LDA¶ In [1]: from sklearn.discriminant_analysis import LinearDiscriminantAnalysis from sklearn.preprocessing import StandardScaler from sklearn.datasets import load_iris import pandas as pd import matplotlib.pyplot as plt %matplotlib inline In [2]: iris = load_iris() iris_scaled = StandardScaler().fit_transform(iris.data) LDA 변환 In [3]: lda = LinearDiscriminantAnalysis(n_components=2) lda.fit(ir.. 2023. 2. 13.
[Dimension Reduction] PCA components 기반 변환 PCA ¶ Data source: https://archive.ics.uci.edu/ml/datasets/default+of+credit+card+clients In [1]: import pandas as pd import seaborn as sns import matplotlib.pyplot as plt %matplotlib inline # PCA from sklearn.decomposition import PCA from sklearn.preprocessing import StandardScaler # model import numpy as np from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import.. 2023. 2. 13.
[연관 규칙 데이터 정제] 데이터를 정제하여 apriori 알고리즘을 수행하기 위한 준비 Data Source: https://www.kaggle.com/datasets/rashikrahmanpritom/groceries-dataset-for-market-basket-analysismba?resource=download&select=Groceries+data.csv In [11]: import os import pandas as pd In [12]: os.chdir('C:/Users/KANG/Downloads') os.getcwd() Out[12]: 'C:\\Users\\KANG\\Downloads' In [13]: groceries_df = pd.read_csv('./Groceries data.csv') groceries_df.head() Out[13]: Member_number Date .. 2023. 2. 3.
[연관 규칙 분석] Association_rules 분석 연관 규칙 분석을 위한 데이터 준비 방법 https://knote.tistory.com/197 [연관 규칙 데이터 정제] 데이터를 정제하여 apriori 알고리즘을 수행하기 위한 준비 Data Source: https://www.kaggle.com/datasets/rashikrahmanpritom/groceries-dataset-for-market-basket-analysismba?resource=download&select=Groceries+data.csv In [11]: import os import pandas as pd In [12]: os.chdir('C:/Users/KANG/Downloads') os.getcwd() Out[ knote.tistory.com Data source: https:/.. 2023. 2. 3.
[회귀 구현] data : california_housing In [24]: import numpy as np import matplotlib.pyplot as plt import pandas as pd import seaborn as sns from scipy import stats from sklearn.datasets import fetch_california_housing %matplotlib inline # boston data dataset = fetch_california_housing() In [26]: df = pd.DataFrame(dataset.data, columns=dataset.feature_names) df['target'] = dataset.target In [29]: print('california_housing 데이터 세트 크기 :.. 2023. 2. 2.
[학습 01] 주택 가격 예측하기 https://knote.tistory.com/185 [Python] 깃허브에 있는 데이터 압축 풀고 읽어오는 방법 데이터 추출하고 불러오기 from github https://docs.python.org/ko/3/library/urllib.request.html https://docs.python.org/ko/3/library/tarfile.html parents: True 옵션 : True 인 경우 상위 path가 없는 경우 새로 생성함, Flase인 경우 knote.tistory.com https://knote.tistory.com/186 [Python] 내가 만든 함수 파일(.py) 임포트 사용법 1) 함수.py파일이 코드 파일과 같은 폴더에 있는 경우 from 내가 만든 함수 파일명 import.. 2023. 2. 1.
[이미지 분할] Image segmentation 이미지 분할의 목적은 픽셀 수준에서 이미지를 이해하고 정보를 추출하는 것입니다. 이미지 분할은 객체 인식과 위치 탐색에 사용됩니다. 이미지 분할의 목표는 이미지의 픽셀 단위 마스크를 생성하도록 신경망을 훈련하는 것입니다. CNN에서 이미지 분류 문제로 이미지를 벡터로 변환해야 합니다. 분류 책임자를 마지막에 더하여 분류하도록 합니다. 대표적으로 이미지 분할로 유넷을 사용하는 경우 이미지를 가지고 인코딩을 합니다. 기본 이미지 분류에서는 입력값은 이미지이고 출력은 0또는 1인 클래스 분류 문제입니다. 유넷은 입력값과 결과값이 같은 사이즈를 가집니다. (이미지의 사이즈 보존 됨) 다시 말해, 전통적인 CNN은 일반적으로 전체 이미지가 클래스 라벨로 분류되어야 할 경우 사용합니다. 반면, 유넷은 픽셀 수준의 .. 2023. 1. 26.
[분류 모델 평가 지표] Confusion Matrix 실제 분류 True False 예측 분류 True TP (True Positive) FP (False Positive) TYPE Ⅰ ERROR False FN (Flase Negative) TYPE Ⅱ ERROR TN (True Negative) 해석) True Poisitive : 예측 결과 긍정이고(Positive) 실제와 일치한다.(True) 암의 질병을 예측하는 예시라면 TP : 분류기가 결과를 병에 걸렸다고 예측한 경우 실제 결과도 병에 걸린게 맞는 경우 TN : 분류기가 결과를 병에 걸리지 않았다고 예측한 경우 실제 결과도 병에 걸리지 않은 경우 FP (제 1종 오류): 환자가 병에 걸리지도 않았는데 병에 걸렸다고 해 버린 경우 FN (제 2종 오류): 환자가 건강하다고 예측하였는데 병에 걸린.. 2023. 1. 24.
728x90