본문 바로가기

BLOG/머신러닝

[머신러닝] MinMaxScaler : 0~1 스케일로 정규화 하기 (파이썬 코드) MinMaxScaler는 스케일을 조정하는 정규화 함수로, 모든 데이터가 0과 1 사이의 값을 갖도록 해주는 함수입니다. 따라서 최댓값은 1로, 최솟값은 0으로 데이터의 범위를 조정해줍니다. 한편, MinMaxScaler 함수는 파이썬에서 다음과 같이 입력하여 사용할 수 있습니다. from sklearn.preprocessing import MinMaxScaler minmax_scaler = MinMaxScaler() minmax_scaled = minmax_scaler.fit_transform(X_train) #x_train라는 데이터 입력 먼저 필요한 라이브러리인 MinMaxScaler를 import 해주고, 두 번째 줄 ~ 세 번째 줄 코드처럼 정규화를 하는 함수에 정규화를 할 데이터(X_train.. 더보기
[머신러닝] MSE, MAE 뜻 & 구현 코드 1. MSE(Mean Squared Error) MSE란 Mean Squared Error의 약자로, 말 그대로 예측 값과 실제 값의 차이에 대한 제곱을 평균한 값을 말합니다. MSE의 경우 오차가 작으면 성능이 좋을 수 있지만, 과대적합이 될 수도 있습니다. 한편, MSE는 오차에 대해서 예측한 값이 실제 값보다 큰지, 작은지를 알 수 없다는 특징을 갖고 있습니다. - MSE : 코드로 구현하기 사이킷런(Scikit-learn) 패키지에서는 MSE를 구하는 라이브러리를 제공하는데요, 만약 실제 값 'true_y'와 예측한 값 'pred_y'의 MSE 값을 구하고 싶다면 다음과 같이 코드를 작성하면 됩니다. from sklearn.metrics import mean_squared_error #필요한 라이.. 더보기
[머신러닝] 사이킷런(Scikit-learn) 데이터로 ElasticNet 회귀 모델 만들기 - ElasticNet() 이전에 사이킷런 라이브러리와 데이터를 이용하여 Ridge, Lasso 회귀 모델을 만드는 방법에 대해서 살펴보았는데요, 이번에 살펴볼 ElasticNet 회귀 모델 역시 같은 방법으로 코드를 입력하면 된답니다. 한번 아래 코드를 보면서 차근차근 살펴보도록 하겠습니다. 1. ElasticNet 모델이란? ElasticNet은 Ridge와 Lasso를 결합한 형태의 모델로, 가중치의 절대값의 합(L1)과 제곱의 합(L2)을 동시에 제약 조건으로 가지는 모델을 말합니다. 따라서 Ridge와 Lasso 보다 좋은 성능을 낼 수 있다는 장점을 가지는 모델입니다. 한편, 사이킷런에서 제공하는 ElasticNet 함수에서 L1과 L2의 비율을 지정할 수 있는데, 아래에서 살펴보도록 하겠습니다. 2. 학습에 사용할 데.. 더보기
[머신러닝] 선형 회귀 모델의 장점과 단점, 언제 사용하는게 좋을까? 선형 회귀 모델은 선형 함수로 예측을 수행하는 회귀용 선형 알고리즘으로, train, test dataset에 있는 결과값(y) 사이의 평균제곱오차를 최소화하는 파라미터 가중치(w)와 절편(b)을 찾는 알고리즘을 수행합니다. 한편, 회귀를 하기 위한 선형 모델은 특성이 하나일 때 직선이 되고, 두 개일 땐 평면이 되며, 더 많은 특성을 가진 높은 차원일 땐 초평면이 되는 회귀 모델의 특징을 갖습니다. 또한 회귀를 하기 위한 선형 모델을 다양한데요, train data로부터 가중치 값을 결정하는 방법과 모델의 복잡도를 제어하는 방법에 따라 다양해집니다. 1. 선형 회귀 모델의 장점과 단점은? 그렇다면 선형 회귀 모델의 장점과 단점은 무엇일까요? 먼저, 선형 모델의 장점은 학습 속도가 빠르고, 예측이 빠르다.. 더보기
[머신러닝] 사이킷런(Scikit-learn) 데이터로 라쏘 회귀 모델 만들기 - Lasso() 지난 글에서는 사이킷런 라이브러리를 이용하여 릿지 회귀 모델을 만들어보았는데요, 이번에는 라쏘(Lasso) 회귀 모델을 만드는 방법에 대해서 살펴보겠습니다. 1. 라쏘 회귀 모델이란? 라쏘(Lasso)는 선형 회귀 모델 중 하나로, 릿지(Ridge) 회귀 모델을 보완하기 위해 사용됩니다. 라쏘 모델은 릿지와 같이 계수를 0에 가깝도록 만드는 L1 규제를 하며, 가중치의 절대값의 합을 최소화하는 계수를 추가하는 방식을 통해 학습을 합니다. 이러한 라쏘는 많은 특성 중 일부분만 분석할 때 쉽게 분석이 가능하다는 장점을 갖고 있습니다. 2. 학습할 데이터 불러오기 라쏘 회귀 모델을 만들기 앞서, 필요한 라이브러리를 설치해주어야 하며, 학습에 사용할 데이터를 불러와야 하는데요, 사이킷런에서 제공하는 보스턴 주택.. 더보기
[머신러닝] 사이킷런(Scikit-learn) 데이터로 릿지 회귀 모델 만들기 - Ridge() 이번 글에서는 사이킷런 라이브러리에서 제공하는 보스턴 주택 데이터(boston data)를 이용하여 릿지 회귀 모델을 만들어 보도록 하겠습니다. 1. 릿지(Ridge) 회귀 모델이란? 릿지 회귀 모델은 회귀를 하기 위한 선형 모델로, 가중치의 절댓값을 최소한으로 만드는 예측 함수를 사용합니다. 즉, 기울기를 작게 만들도록 제약을 거는데요, 과대적합이 되지 않도록 모델을 강제로 제약하는 '규제'를 하는 모델입니다. 2. 사이킷런 데이터 불러와 train data, test data로 나누기 릿지 회귀 모델에 사용할 데이터를 사이킷런 라이브러리에서 불러오고, train_test_split()함수를 이용하여 train data, test data로 나누어보도록 하겠습니다. import mglearn from .. 더보기
[머신러닝] 사이킷런(Scikit-learn) : 간단한 선형모델 만들기 & 가중치, 절편 구하기 사이킷런(Scikit-learn) 라이브러리를 이용하여 간단한 선형모델을 만들어 볼 수 있는데요, 아래 코드를 보면서 차근차근 살펴보도록 하겠습니다. 1. 필요한 라이브러리 설치 먼저, 선형모델을 만들기 위한 라이브러리와 데이터에 사용할 난수를 발생시킬 라이브러리를 설치해줍니다. import mglearn from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split 2. 학습시킬 sample data 만들기 그다음, 학습시킬 sample data를 만들어주어야 하는데요, 위에서 import 한 mglearn 라이브러리를 이용하여 sample data를 만들어주겠습니다. X, y = .. 더보기
[머신러닝] 사이킷런(Scikit-learn) 데이터의 특성 / 클래스 별 데이터 개수 / 크기 확인하기 사이킷런(Scikit-learn) 라이브러리는 의사결정 트리, 분류, 회귀 등의 알고리즘에 사용하기 적합한 함수 및 데이터를 제공하는 라이브러리로, 이번 글에서는 사이킷런에서 제공하는 데이터를 불러와 데이터의 특성, 클래스 별 데이터의 개수, 크기를 확인하는 방법에 대해서 살펴보도록 하겠습니다. 1. 데이터 불러오기 - iris_data 먼저, 사용할 사이킷런 데이터를 불러와야 하는데요, 그중 대표적인 iris_data 를 불러오도록 하겠습니다. from sklearn.datasets import load_iris iris = load_iris() 데이터를 불러와 iris 라는 변수에 저장해주었습니다. 2. 데이터의 특성 살펴보기 그 다음에, 데이터에 어떠한 특성(keys)이 있는지 살펴보려면 .keys.. 더보기
[머신러닝] train_test_split : 비율 설정 방법 - test_size 이전 글에서는 train_test_split() 함수를 이용하여 데이터를 train data와 test data로 나눌 때, 무작위로 나눌지 순차적으로 나눌지 설정하는 방법에 대해 살펴보았는데요, 이번에는 train data와 test data로 나눌 때 비율을 지정해주는 방법에 대해서 살펴보도록 하겠습니다. - train_test_split : 비율 설정 방법 train_test_split() 함수를 사용하여 데이터를 train data와 test data로 나눌 때, 기본값은 75 : 25 비율로 나누어지게 됩니다. 하지만, 데이터가 많이 없다면 학습할 데이터를 늘려주어야 하며, 데이터가 매우 많다면 오버피팅 문제를 방지하기 위해 학습할 데이터를 조금 줄여주는 게 좋을 수 있습니다. 따라서 각 상황에.. 더보기
[머신러닝] train_test_split : 순차적으로/무작위로 데이터 나누는 방법 train_test_split 함수는 데이터를 학습데이터의 입력값, 결과값과 테스트 데이터의 입력값, 결과값으로 데이터를 나눠주는 함수인데요, 설정을 통해 순차적으로 데이터를 나눌지, 무작위로 데이터를 나눌지 선택할 수 있답니다. 설정하는 방법은 매우 간단한데요, 아래 코드를 보면서 살펴보도록 하겠습니다. - train_test_split : 순차적으로/무작위로 데이터 나누기 train_test_split 함수에서 데이터를 무작위로 나눌지, 순차적으로 나눌지에 대해선 'shuffle'을 통해 설정할 수 있는데요, train_test_split 함수에서 shuffle은 기본값으로 shuffle = True 로 설정되어 있기 때문에, 따로 코드를 입력해주지 않아도 무작위로 나누어집니다. 하지만 만약 데이터를.. 더보기