zenn.skin 무료버전 배포중!
자세히보기

DataScience 56

DataScience
임의순열검정(random permutation test)

1. 부트스트랩(Bootstrap) 표본분포를 추정하는 쉽고 효과적인 방법은, 현재 있는 표본에서 추가적으로 표본을 복원추출하여 통계량과 모델을 다시 계산하는 방법입니다. 이러한 방법을 부트스트랩이라 하며, 부트스트랩을 할 때 데이터나 표본통계량이 정규분포를 따라야 한다는 가정은 필요하지 않습니다. 원래 부트스트랩은 갖고있는 표본을 무한대로 복제한 후 거기에서 표본을 추출하는 방법을 의미합니다. 하지만 실제로는 표본을 복제하지 않고 복원추출하는 방법으로 부트스트랩을 사용합니다. 부트스트랩을 사용하는 이유는 작은 표본크기를 보완하거나 새로운 데이터를 만드는 것이 아닙니다. 표본을 이용해 가상의 모집단을 만들고 거기서 표본추출을 했을 때, 새로운 표본이 원래의 표본과 얼마나 비슷할지를 보여주는 역할을 합니다..

DataScience
[ML] 회귀모형의 평가지표, MAE, MSE, RMSE, RSE, R^2

회귀모델을 평가하는 평가지표는 여러 가지가 있습니다. 1. MAE(Mean Absolute Error, 평균 절대 오차) 데이터의 단위와 동일하기 때문에 해석이 직관적이라는 장점이 있습니다. MSE에 비해 이상치의 영향을 덜 받습니다. 절대값을 취하기 때문에 모델이 underperformance인지, overperformance인지 알 수 없습니다. underperformance: 모델이 실제보다 낮은 값으로 예측 overperformance: 모델이 실제보다 높은 값으로 예측 from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_absolute_error lr = LinearRegression() lr.fit..

DataScience
[ML] 교차 검증(cross validate)

train_test_split을 사용하면 데이터셋을 train 데이터와 test 데이터로 분리할 수 있습니다. 하지만 train 데이터를 이용해 모델을 학습하고 test 데이터로 모델의 적합성 여부를 계속해서 판단하다 보면, 모델은 test데이터에 맞춰지게 됩니다. 그렇기 때문에 test 데이터는 마지막에 한 번만 사용해야 합니다. train 데이터를 다시 train 데이터와 검증용 데이터로 나누고, train 데이터로 학습한 후 검증용 데이터로 모델을 평가합니다. 교차 검증 train 데이터의 일부를 사용해 검증 세트를 만들었기 때문에 train 데이터가 많이 줄어들었습니다. 하지만 train 데이터를 늘리려고 검증 세트를 줄이게 되면 검증 점수가 불안정해집니다. 교차검증을 사용하면 안정적인 검증 점수..

DataScience
[ML] train_test_split을 이용한 데이터 분할

모델은 데이터를 이용해 학습을 합니다. 학습용 데이터만 가지고 모델이 학습한다면, 학습용 데이터에만 너무 과대적합(overfitting)되어 새로운 데이터가 들어왔을 때 정확한 예측이 어려울 수 있습니다. 그렇기 때문에 데이터셋을 먼저 학습용 데이터와 테스트용 데이터로 나누는 작업이 필요합니다. 학습용 데이터로 모델을 학습한 후에, 테스트용 데이터를 사용했을 때의 점수와 비교하여 모델이 잘 학습되었는지 평가합니다. sklearn.model_selection의 train_test_split은 데이터가 입력되면 학습용 데이터와 테스트용 데이터로 나누어집니다. import seaborn as sns from sklearn.model_selection import train_test_split iris = sn..

DataScience
[ML] K-NeighborsRegressor (K-최근접 이웃 회귀)

1. K-NeighborsRegressor(K-최근접 이웃 회귀 알고리즘) K-최근접 이웃 모델은 분류 모델뿐만 아니라 회귀 모델도 만들 수 있습니다. 분류 모델에서는 범주형 데이터를 예측한다면, 회귀 모델에서는 연속형 데이터를 예측합니다. 분류 모델과 마찬가지로 train 데이터가 입력되면 데이터를 저장하고 있다가 새로운 값들이 들어오면 근접한 이웃들의 평균값을 계산해 예측값으로 반환합니다. 오늘은 농어의 길이와 무게 데이터를 이용해 K-최근접 이웃 회귀 모델을 공부해보겠습니다. 농어의 길이와 무게 데이터 농어의 길이와 무게 데이터. GitHub Gist: instantly share code, notes, and snippets. gist.github.com import numpy as np perc..

DataScience
[ML] SimpleImputer (누락값 처리)

데이터를 정제하는 과정에서 반드시 필요한 과정 중 하나는 누락값(Nan)의 처리입니다. 누락값을 처리하는 방법에는 1) 누락값을 갖고 있는 행의 삭제, 2) 누락값을 갖는 열(특성)의 삭제, 3) 대체값으로 대체하는 방법이 있습니다. 1. 일반적인 누락값 처리 방법 import pandas as pd df = pd.DataFrame(data) # 누락값을 갖는 행(레이블) 삭제 df.dropna(subset=['col1']) # 누락값을 갖는 열(특성) 삭제 df.drop('col1', axis=1) # 누락값을 대체값으로 채움 mean = df['col1'].mean() df['col1'].fillna(mean) 데이터를 모으는 과정에서 누락값의 처리는 꼭 필요한 작업입니다. 누락값을 너무 많이 제거해..

DataScience
[ML] 모델 파라미터와 모델 하이퍼 파라미터 차이 (Difference between a model parameter and a model hyper parameter)

머신러닝 모델에서 파라미터와 하이퍼 파라미터라는 용어를 혼용해서 사용하는 경우가 많습니다. 그래서 오늘은 둘 사이에 어떤 차이가 있는지에 대해 공부해 보려 합니다. 둘의 차이를 잘 비교해놓은 사이트가 있어서 해당 글을 참고했습니다. What is the Difference Between a Parameter and a Hyperparameter? It can be confusing when you get started in applied machine learning. There are so many terms to use and many of the terms may not be used consistently. This is especially true if you have come from anot..

DataScience
[ML] K-NeighborsClassifier(K-최근접 이웃)

도미의 길이, 무게 데이터 도미의 길이, 무게 데이터. GitHub Gist: instantly share code, notes, and snippets. gist.github.com 빙어의 길이, 무게 데이터 빙어의 길이, 무게 데이터. GitHub Gist: instantly share code, notes, and snippets. gist.github.com 위 데이터를 이용해 K-최근접 이웃 모델에 대해 공부해보겠습니다. K-최근접 이웃 분류 모델은 지도학습 중에서도 분류 알고리즘에 해당하는 알고리즘입니다. K-최근접 이웃 모델은 별도의 규칙을 찾기보다는 전체 데이터를 메모리에 저장하는 역할만 합니다. 새로운 데이터가 주어지면 기존에 있던 데이터들 중에서 새로운 데이터와 유클리디언 거리가 가장 ..