분류 전체보기

import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestRegressor from lightgbm import LGBMRegressor from xgboost import XGBRegressor from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score import warnings warnings.filterwarnings('ignore') # bos..

2차원 IDW (Inverse Distance Weighting) 보간법은 공간 상의 점들의 값을 추정하는 데 사용되는 보간 기법입니다. IDW는 가장 가까운 이웃 점들의 값을 기반으로 추정 값을 계산합니다. 2차원 IDW 보간법을 사용하기 위해서는 다음과 같은 단계를 따릅니다: 추정하려는 지점 주변에 있는 이웃 점들을 선택합니다. 이웃 점들은 보간할 값과 가장 가까운 점들입니다. 선택한 이웃 점들과의 거리를 계산합니다. 일반적으로 유클리드 거리를 사용합니다. 거리에 따른 가중치를 계산합니다. 이 가중치는 거리가 더 가까울수록 더 큰 값을 갖게 됩니다. 일반적으로는 거리의 역수를 사용하여 가중치를 계산합니다. 이웃 점들의 값을 가중치로 가중 평균하여 추정 값을 계산합니다. 가중치가 높은 이웃 점일수록 추..


앞서 포스팅했던 머신러닝 모델들은 모두 하이퍼파라미터 라고 하는 모델의 성능과 특징을 결정하는 값이 존재한다. 모델마다 상이하기 때문에 각 라이브러리 공식문서를 통해 하이퍼파라미터를 확인해서 적용하면 된다. 우선 RandomForestClassifier 모델에 대해 최적의 하이퍼파라미터를 찾아보자. sk-learn 에서 제공하는 GridSearchCV 함수를 통해 dict 형태로 parameter grid 를 입력해준다. # GridSearchCV 이용하여 하이퍼파라미터 별 최적값 찾기 param_rfc = {"n_estimators" : [30,60,100,120,150], "max_depth" : [1,3,5,7,9], "min_samples_split" : [10,30,50,100,150,200],..

기계학습을 위한 input 데이터가 2개 이상일 경우, 각각의 parameter 별로 산포가 다양하다보면 특정 parameter 에 overfitting 되거나 가중치가 극적으로 나타날 수 있다. 예를 들어, a = [0.3, 0.5, 0.8, 0.6] 이고 b = [1000, 1500, 2000, 2500] 인 경우 a 보다 b 에서 편차가 수백배 이상 크기 때문에 모델은 b 데이터에 의해 결정될 수 밖에 없다. 따라서 각각의 parameter 가 독립적이라고 가정할 경우, 모두 동일한 scale 을 가질 수 있도록 전처리를 하여 모델에 학습시킬 필요가 있다. sklearn.preprocessing 패기지를 이용하여 여러가지 scaler 모델을 사용할 수 있다. 우리는 흔하게 사용되는 3가지 scale..


앞서 알아봤던 Random Forest 알고리즘의 최적화하는 방법에 대해 알아보자. 모델에 사용되는 하이퍼파라미터 별 성능을 시각화하여 최적화가 기대되는 값을 찾아내야 한다. 1. 모델 최적화 함수: 학습할 트리 모델 개수 선정 2. 모델 최적화 함수: 최대 깊이 선정 3. 모델 최적화 함수: 분리 노드의 최소 자료 수 선정 4. 모델 최적화 함수: 잎사귀 노드의 최소 자료 수 선정 위와 같이 4가지 하이퍼파라미터에 대해 순차적으로 시행하며 최적화한다. 사용할 데이터셋은 boston 집값예측 예제이며, RandomForestRegressor 로 평가하였다. # 1. 트리 모델 개수 선정 def optimi_estimator(algorithm, algorithm_name, x_train, y_train, ..


마지막으로 신경망(Neural Network) 알고리즘의 기본 방법인 Multi-Layer Perceptron 으로 예측을 진행해보자. 뉴럴네트워크란 인간 두뇌의 뉴런 구조를 모방하여 데이터를 학습하고 데이터에 내제되어 있는 관계, 함수 등을 추론하여 모델을 만드는 기계학습 알고리즘이다. 데이터 간의 상관관계가 복잡하고, 기존에 알려진 수학적 물리적 함수로 예측하기에 어려운 경우에 내제된 관계를 해석하는데 강점이 있다. 복잡한 데이터를 다루는 영상처리, 음성인식 등에서는 필수적으로 사용되는 방식으로 간단히 이해하고 넘어가자. 위 그림에서 Hidden(은닉층)과 Output 모두 layer 라고 부르며, 여러개의 은닉층을 구성할수도 있고 해당 latent value 의 개수도 여러개로 구성할 수 있다. 또..


이번에는 랜덤포레스트(Random Forest) 알고리즘을 적용하여 동일한 데이터셋에 대해 예측을 진행해보자. 우선 랜덤포레스트란, 회귀 또는 분류 문제에 모두 사용할 수 있는 기계 학습 방법 중 하나이다. 의사결정나무(Decision Tree)라고 하는 분류 알고리즘 여러개를 결합하는 앙상블 학습 방법이다. 이름에서 알 수 있는 것처럼, 의사결정나무가 모여 숲을 형성하는 것으로 이해하면 되겠다. 랜덤포레스트의 장점은 비교적 간단한 알고리즘과, 높은 예측력을 가지고 있으며 분류모델이다보니 스케일 변환이 필요없고 비선형데이터에 대해서도 잘 작동한다는 점이다. (선형/비선형 혼합 input 가능)또한 여러개의 결정트리로부터 학습되어 결정한 모델이기 때문에 과적합될 가능성이 낮으며, 다중 입력값이 있을 때에는..


주어진 데이터를 활용하여 현상에 대한 해석 및 예측은 엔지니어로서 필수적인 능력이자 업무라고 생각한다. 향후 현업에서 어떠한 예측 모델을 활용하기 위한 목적으로, 여러가지 머신러닝 기반 회귀 분석 및 분류(Classification) 방법을 알아보자. 먼저 회귀 분석을 위해 다음과 같은 3가지 모델을 통해 주어진 보스턴 집값 예측 데이터셋으로 성능을 비교해 볼 것이다. Gaussian Process Regression Random Forest Regression Neural Network Model (MLP) 우선 데이터 전처리 작업을 위한 자료구조 파악이 필요하다. EDA (Exploratory Data Analysis) : 탐색적 데이터 분석 수집한 데이터가 들어왔을 때, 다양한 각도에서 관찰하고 이..

클래스와 클래스 메서드는 Python 객체 지향 프로그래밍(OOP)의 핵심 개념으로, 사용자 정의 데이터 유형을 만드는 방법이다. 클래스는 데이터의 속성과 함수를 포함할 수 있고, 클래스 내에서 정의하고 method 를 통해 클래스가 수행할 동작과 작업을 추가로 정의할 수 있다. #클래스 메소드 이해 class human(): '''인간''' def __init__(self, name, weight): self.name = name self.weight = weight def eat(self): self.weight += 0.1 print("{}이가 먹어서 {}kg이 되었습니다".format(self.name, self.weight)) def walk(self): self.weight -= 0.1 pri..