본문 바로가기

Study_note(zb_data)/Machine Learning

(32)
스터디노트 (credit card data 2) 📌 신용카드 부정 사용자 검출해보기 2 🔻특정 데이터를 가지고 다시 도전 해보자. plt.figure(figsize=(12, 10)) sns.distplot(raw_data['Amount'], color='r'); plt.show() 🔻StandardScaler 적용 → Amount 컬럼이 비대칭성이 너무 높다 (데이터가 한 쪽으로 쏠려 있다) → 따라서, 정규화를 시켜서 편향성을 바꿔보자. → 결과 값은 변동성이 없이 미미한 수준이다.. from sklearn.preprocessing import StandardScaler scaler = StandardScaler() amount_n = scaler.fit_transform(raw_data['Amount'].values.reshape(-1, 1)) r..
스터디노트 (credit card data 1) 📌 신용카드 부정 사용자 검출해보기 🔻Data import → 신용카드 불량 사용자 비율이 매우 낮다 (0.17%..)비율이 낮다는 것은? 데이터가 매우 불균형한 상태라는 것. import pandas as pd raw_data = pd.read_csv('../data/creditcard.csv') raw_data.head() raw_data['Class'].value_counts() >>>> Class 0 284315 1 492 Name: count, dtype: int64 frauds_rate = round(raw_data['Class'].value_counts()[1] / len(raw_data) * 100,2) frauds_rate >>>> 0.17 🔻Data를 plot으로 그려보기 import ..
스터디노트 (kNN) 📌 kNN? - 실시간 예측을 위한 학습이 필요하지 않다. - 고차원 데이터에는 적합하지 않다. 📌 실습 - 실시간 예측을 위한 학습이 필요하지 않다. from sklearn.datasets import load_iris iris = load_iris() from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=13, stratify=iris.target) 🔻fit 과정이 필요 from sklearn.neighbors import KNeighborsClassifier # n_neigh..
스터디노트 (Boosting Algorithm) 📌 앙상블 기법의 종류 - Voting, Bagging -> 여러개의 분류기가 투표를 통해 최종 예측 결과를 결정하는 방식 - Bagging과 Boosting의 차이 → 한번에 병렬적으로 결과를 얻음 / 순차적으로 진행 🔻Voting - 전체 Data를 다 쓰면서 각각 다른 Algorithm 적용 (각각 다른 분류기를 적용) 🔻Bagging - Bootstrap Aggregating - 하나의 Algorithm 사용, 전체 Data를 나눠서 적용 (중복 허가) (#부트스트랩핑) (하나의 분류기를 적용) - 대표적인 방식이 Random Forest (Tree 기반) 이다. 🔻Boosting - 여러개의 분류기가 순차적 학습 (성능 ↓, 속도 ↑), 분류기가 예측이 틀린 데이터에 대해 다음 분류기가 가중치를..
스터디노트 (HAR 데이터 다뤄보기) 📌 Human Activity Recognition import pandas as pd feature_name_df = pd.read_csv('./data/features.txt', sep='\s+', header=None, \ names=['columns_index', 'column_name']) X_train_url = 'https://raw.githubusercontent.com/PinkWink/ML_tutorial/master/dataset/HAR_dataset/train/X_train.txt' X_test_url = 'https://raw.githubusercontent.com/PinkWink/ML_tutorial/master/dataset/HAR_dataset/test/X_test.txt' X..
스터디노트 (앙상블 기법) 📌 앙상블 기법 🔻앙상블 학습을 통한 분류 - 여러 개의 분류기를 생성하고, 그 예측을 결합하여 정확한 최종 예측을 기대하는 기법 - 다양한 분류기의 예측 결과를 결합함으로써, 단일 분류기 보다 신뢰성이 높은 예측 값을 얻는 것 🔻voting 🔻bagging - 데이터의 중복을 허용하여 샘플링, 각각의 데이터에 같은 알고리즘을 적용하여 결과를 투표로 결정 - 각각의 분류기에 데이터를 각각 샘플링해서 추출하는 방식을 부트스트래핑 분할방식이라고 표현 🔻결정 단계에서의 보팅 - 하드 보팅 (다수결의 원칙을 따른다) - 소프트 보팅 (확률의 평균 값을 도출하여 결정 / 동률일 때는 다수결로 결정) 🔻랜덤 포레스트 - 디시전 트리를 여러개를 사용하여 투표하는 방식
스터디노트 (Precision and Recall) 📌 Precision, Recall 🔻Precision과 Recall 을 강제로 튜닝할 수 있다 HOW? -> 강제로 Threshold를 변경 (단, 성능이 좋아지는 지는 의문.) 📌 데이터 분리 및 예측 import pandas as pd from sklearn.model_selection import train_test_split red_wine = pd.read_csv('../data/winequality-red.csv', sep=';') white_wine = pd.read_csv('../data/winequality-white.csv', sep=';') # wine의 컬러로 나누기 red_wine['color'] = 1. white_wine['color'] = 0. # red_wine, whit..
스터디노트 (PIMA 당뇨병 예측) 📌 상관관계 확인하기 import seaborn as sns import matplotlib.pyplot as plt PIMA = pd.read_csv('../data/diabetes.csv') PIMA = PIMA.astype('float') plt.figure(figsize=(12, 10)) sns.heatmap(PIMA.corr(), cmap='YlGnBu', annot=True) plt.show() 📌 이상 데이터 확인 # PIMA==0 이 True로 반환되는 것을 이용 (PIMA==0).astype(int).sum() >>>> Pregnancies 111 Glucose 5 BloodPressure 35 SkinThickness 227 Insulin 374 BMI 11 DiabetesPedigre..