목록분류 전체보기 (408)
오답노트
HyperParameter Tuning Hyper Parameter를 설정하여 모델을 최적화할 수 있는 알고리즘에서 모델을 최적하기 위한 Hyper Parameter 설정하는 것을 말한다. Random Search Random Search 는 값의 범위와 시도 횟수를 정해서, 값의 범위 내에서 시도 횟수만큼 무작위로 값을 선택해서 모델링을 하고, 그 중 가장 성능이 좋은 모델을 선정하는 방법이다. cv 는 교차검증할 때 데이터 셋을 나눌 개수다. n_iter는 임의로 시도할 횟수를 지정할 수 있다. from sklearn.tree import DecisionTreeClassifier, plot_tree # 값의 범위 설정 params2 = {'max_depth' : range(1,10), 'min_sam..
AIC (아카이케 통계량) AIC = - 모델적합도 + 변수의 개수 AIC는 위와 같은 식으로 표현할 수 있다. 모델 적합도가 높을 수록 아카이케 통계량이 낮아진다. 즉 아카이케 통계량이 낮을 수록 모델이 적합하다는 뜻이다. 또, 변수의 개수가 많을 수록 아카이케 통계량은 증가하는데 변수의 개수가 많다고 무조건 좋은 모델은 아니라는 뜻이다. 전진 선택법 (후진 소거법) feature 마다 모델을 생성하고, 각각 feature를 하나씩 늘려가며 AIC 통계량을 측정한다. 그중 AIC 통계량이 가장 낮은 모델을 선정하는 것이다. 후진 소거법은 반대로 feature를 모두 사용한 모델부터 feature를 하나씩 줄여가며 AIC 통계량을 측정하고 그 중 가장 AIC가 가장 낮은 모델을 선정한다. # 아래 함수는..
SVC, SVR sklearn 의 svm 의 객체들로 각각 Support Vector Machine Classfication (SVC), Support Vector Machine Regressor (SVR)로 정의되어 있다. 용도는 뜻 그대로 각각 범주형 데이터, 수치형 데이터 예측에 사용된다. from sklearn.svm import SVC from sklearn.metrics import * model = SVC() model.fit(x_train, y_train) pred = model.predict(x_val) confusion_matrix(y_val, pred) print(classification_report(y_val, pred)) Hyper Parameter C값과 gamma값을 조절하여..
SVM (출처 : https://towardsdatascience.com/breaking-down-the-support-vector-machine-svm-algorithm-d2c030d58d42) 데이터를 두 개로 분류하여 분류한 데이터 사이에 선을 긋고, 분류된 데이터와 선 사이에 여백을 만드는 것으로 설명할 수 있다. 데이터를 벡터(Vector), 분류된 벡터 사이에 선을 결정경계(Decision Boundary or Hyper plane)라고 하고, 분류된 벡터와 선 사이에 여백을 마진이라고 한다. 마진을 고려했을 때, 결정경계와 가장 가까운 벡터를 서포트 벡터(Support Vector)라고 한다. 마진을 넓게 해서 벡터가 조금 넘어가더라도 안정적으로 분류하는 것이 더 좋다고 할 수 있다. 하지만..
plot_tree Decision Tree를 직접 트리형태로 볼 수 있게 해주는 함수다. import matplotlib.pyplot as plt from sklearn.tree import DecisionTreeClassifier, plot_tree from sklearn.metrics import * m3 = DecisionTreeClassifier(max_depth=5,min_samples_leaf=150) m3.fit(x_train,y_train) pred3 = m3.predict(x_val) print(classification_report(y_val,pred3)) plt.figure(figsize = (30,15)) # 그림 사이즈 조절 plot_tree(m3, feature_names = l..
DecisionTreeClassifier 범주형 데이터를 Decision Tree 알고리즘으로 예측할 때 사용하는 객체이다. 사용법은 지금까지 sklearn 객체들과 같다. Hyper Parameter from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import * m3 = DecisionTreeClassifier(max_depth=5,min_samples_leaf=150) m3.fit(x_train,y_train) pred3 = m3.predict(x_val) print(classification_report(y_val,pred3)) max_depth 트리의 깊이(크기)를 결정하는 옵션이다. min_samples_leaf lea..
Decision Tree 분석과정을 실제로 눈으로 확인 가능한 알고리즘이다. 계산 비용이 낮아 대규모의 데이터도 빠르게 연산 가능한 장점이 있다. 지니 불순도 분류 후 얼마나 분류가 잘 됐는지 평가하는 지표다. 불순도가 낮을 수록 분류가 잘됐다고 판단한다. 어떤 집단에서 A를 가지는 집단과 B를 가지는 집단 둘로 나눴을 때, 각각의 집단에서 또 다시 True, False를 나눌 수 있다. 이 때, 집단 A의 불순도는 1-((A|T)^2 + (A|F)^2) 이고, 집단 B의 불순도는 1-((B|T)^2 + (B|F)^2) 이다. 수식으로 표현하면 아래와 같다. p 는 집단에서 어떤 사건이 일어날 확률이다. 예를 들어 A|T는 A 집단에서 True가 발생할 확률이다. 정보 증가량 지니 불순도는 어떤 집단(부..
KNeighborsClassifier KNeighborsClassifier는 KNN 알고리즘으로 범주형 데이터를 예측할 때 사용한다. KNeighborsRegressor와 사용법은 같다. 다만 성능을 판단할 때 Accuracy, Recall, Precision, f1-score로 판단한다. from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() x_train_s = scaler.fit_transform(x_train) x_val_s = scaler.transform(x_val) model = KNeighborsClassifier() model.fit(x_train_s,y_train) pred = model.predict(x_val_s..
# 라이브러리 호출 import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import * # 데이터 read path = "Attrition_simple2.CSV" data = pd.read_csv(path) data.head() # 불필요 데이터 삭제 data.drop('EmployeeNumber', axis = 1, inplace = True) # 타겟 선언 및 target, feature 분리 target..
Confusion Matrix Accuracy (정분류율) = (Zero Correct + One Correct) / Total * 100 Recall (재현율) = Zero Correct / (Zero Correct + Zero Incorrect) * 100 Precision (정밀도) = Zero Correct / (Zero Correct + One Incorrect) * 100 Accuracy (정분류율)는 전체의 경우에서 예측을 맞춘 경우의 확률이다. Recall (재현율)은 실제 값 중에서 예측을 맞춘 경우의 확률이다. Precision (정밀도)는 예측한 결과 중 예측이 맞은 경우의 경우의 확률이다. 이 세 확률은 각자 다른 관점을 가지고 바라본 것이다. 따라서 셋중에 하나를 가지고 예측을 잘..