[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

scikit-learn 10

[scikit-learn 라이브러리] 특이값분해 (SVD)

특이값분해 (SVD) PCA의 경우 정방행렬(행과 열의 크기가 같은 행렬)만을 고유벡터로 분해할 수 있으나 SVD는 정방행렬뿐만 아니라 행과 열의 크기가 다른 행렬에 대해서도 적용할 수 있다. SVD는 m x n 크기의 행렬 A를 분해하여, U, ∑, V 행렬로 만든다. 행렬 U와 V에 속한 벡터는 특이 벡터(Singular Vector)라고 하며, 모든 특이 벡터는 서로 직교하는 성질을 가진다. ∑는 직사각 대각 행렬이며, 행렬의 대각에 위치한 값만 0이 아니고 나머지 위치의 값은 모두 0의 값을 가진다. m n인 경우 두번째와 같이 분해 ∑의 0이 아닌 대각 원소값을 특이값(Singular Value)라고 한다. TruncatedSVD # 2개의 주요 c..

[scikit-learn 라이브러리] 특성 자동 선택

특성 자동 선택 특성이 너무 많아지면 모델이 복잡해지고 과대적합 가능성이 올라간다. 따라서 유용한 특성만 선택하고 나머지는 무시해서 특성의 수는 줄이는 것이 좋다. 특성 선택 방법 : 일변량 통계, 모델 기반 선택, 반복적 선택 일변량 통계 특성과 타켓 사이에 중요한 통계적 관계가 있는지 계산하고 깊게 관련된 것만 선택한다. from sklearn.feature_selection import SelectPercentile # SelectPercentile을 사용하여 특성의 50%를 선택하는 모델 생성 select = SelectPercentile(percentile=50) # 특성 선택 select.fit(X_train, y_train) X_train_selected = select.transform(X..

[scikit-learn 라이브러리] 오차행렬

오차행렬 TN : 예측값을 Negative 값 0으로 예측했고 실제 값은 역시 Negative 값 0 FP : 예측값을 Positive 값 1로 예측 했는데 실제 값은 Negative 값 0 FN : 예측값을 Negative 값 0으로 예측했는데, 실제 값은 Positive 값 1 TP : 예측값을 Positive 값 1로 예측했는데 실제 값 역시 Positive 값 1 학습에 사용된 분류모델이 얼마나 혼란스러워하고 있는지 판단 할 수 있는 지표 confusion_matrix() confusion_matrix(y_true, y_pred) y_true : 정답 y_pred : 예측 결과 사용 예시 from sklearn.model_selection import train_test_split from skl..

[scikit-learn 라이브러리] 그리드서치

검증 데이터 세트 기존엔 단순히 학습 데이터 세트와 테스트 데이터 세트로 데이터를 나눴다. 만약 매개변수를 조정하기 위해 테스트 세트를 사용하면 추후 모델 평가에 테스트 세트를 더 이상 사용할 수 없다. 즉, 평가를 위해 모델을 만들 때 사용하지 않은 독립된 데이터셋이 필요하다. 데이터를 세 개의 세트로 나눠 이 문제를 해결 학습 데이터 세트 : 모델을 작성 검증 데이터 세트 : 모델의 매개변수 선택 테스트 데이터 세트 : 모델의 성능 평가 그리드서치 사용자가 관심있는 매개변수 전체를 대상으로 가능한 모든 조합을 시도해보는 것이다. # 매개변수 그리드 param_grid = {'C': [0.001, 0.01, 0.1, 1, 10, 100], 'gamma': [0.001, 0.01, 0.1, 1, 10, ..

[scikit-learn 라이브러리] GradientBoosting

Boosting 하나의 앙상블에 포함된 여러 개의 분류기가 순차적으로 학습을 수행하되, 앞에서 학습한 분류기가 예측이 틀린 데이터에 대해서 올바르게 예측할 수 있도록 다음 분류기에게 가중치(weight)를 부여하면서 학습과 예측을 진행 주로 분류기에 약한 학습기를 사용 (약한 학습기 : 예측 성능이 상대적으로 떨어지는 학습 알고리즘, 대표적으로 결정트리) GradientBoosting 여러 개의 결정 트리를 묶어 부스팅하는 앙상블 기법 회귀와 분류 모두에 사용 가능 랜덤하게 트리를 생성한 랜덤 포레스트와는 달리 그래디언트 부스팅은 이전 트리의 오차를 보완하는 방식으로 순차적으로 트리를 만듬 (무작위성이 없음) 보통 다섯 개 이하 깊이의 트리를 사용하므로 메모리를 적게 사용하고 예측도 빠르다. 각각의 트리..

[scikit-learn 라이브러리] SGDClassifier (선형분류)

계산값을 기반으로 계산값이 0보다 작으면 -1, 0보다 크면 1로 분류한다. 이진 선형 분류기는 선, 평면, 초평면을 이용해 2개의 클래스를 구분하는 분류기이다. SGDClassifier SGDClassifier(alpha, average, class_weight, epsilon, eta0, fit_intercept, l1_ratio, learning_rat, loss, max_iter, n_iter, n_jobs, penalty, power_t, random_state, shuffle, tol, verbose, warm_start) 확률적 경사하강법(SGD, Stochastic Gradient Descent)을 이용하여 선형모델을 구현 lossstr : 손실함수 (default='hinge') pena..

[scikit-learn 라이브러리] Rasso 예제

Rasso 모델 Lasso(alpha, fit_intercept, normalize, precompute, copy_X, max_iter, tol, warm_start, positive, solver, random_state, selection) alpha : 값이 클수록 강력한 정규화(규제) 설정하여 분산을 줄임, 양수로 설정 fit_intercept : 모형에 상수항 (절편)이 있는가 없는가를 결정하는 인수 (default : True) normalize : 매개변수 무시 여부 precompute : 계산속도를 높이기 위해 미리 계산된 그램 매트릭스를 사용할 것인지 여부 copy_X : X의 복사 여부 max_iter : 계산에 사용할 작업 수 tol : 정밀도 warm_start : 이전 모델을 초..

[scikit-learn 라이브러리] Ridge 예제

Ridge 모델 Ridge(alpha, fit_intercept, normalize, copy_X, max_iter, tol, solver, random_state) alpha : 값이 클수록 강력한 정규화(규제) 설정하여 분산을 줄임, 양수로 설정 fit_intercept : 모형에 상수항 (절편)이 있는가 없는가를 결정하는 인수 (default : True) normalize : 매개변수 무시 여부 copy_X : X의 복사 여부 max_iter : 계산에 사용할 작업 수 tol : 정밀도 solver : 계산에 사용할 알고리즘 (auto, svd, cholesky, lsqr, sparse_cg, sag, saga) random_state : 난수 seed 설정 Ridge 예제 import numpy..

[scikit-learn 라이브러리] LinearRegression (선형회귀)

Linear Regression from sklearn.linear_model import LinearRegression LinearRegression(fit_intercept, normalize, copy_X, n_jobs) fit_intercept : 모형에 상수항 (절편)이 있는가 없는가를 결정하는 인수 (default : True) normalize : 매개변수 무시 여부 copy_X : X의 복사 여부 n_jobs : 계산에 사용할 작업 수 사용예시1 from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split def make_wave(n_samples=100): rnd =..

[scikit-learn 라이브러리] XOR 문제

scikit-learn? 파이썬의 머신러닝 라이브러리 회귀, 분류, 군집, 차원축소, 특성공학, 전처리, 교차검증, 파이프라인 등 머신러닝에 필요한 기능 제공 scikit-learn 활용 XOR 문제 해결 scikit-learn 라이브러리를 활용해서 XOR 문제를 해결해보겠다. XOR 문제는 배타적인 입력(1,0 or 0,1)이 들어왔을 때만 1을 출력한다. import pandas as pd from sklearn import svm, metrics pandas 데이터 프레임을 활용하기 위해 함께 import한다. sklearn에서 svm과 metrics를 활용하기 위해 import한다. # XOR 연산 데이터 xor_input = [ #p, q, r [0, 0, 0], [0, 1, 1], [1, 0,..