728x90 반응형 SMALL 기계 학습17 리샘플링 방법 (Resampling Methods) 리샘플링 방법 (Resampling Methods) 리샘플링 방법은 현대 통계학에서 없어서는 안 될 도구이다. 이 방법은 훈련 세트에서 샘플을 반복적으로 추출하고 각 샘플에서 관심 있는 모델을 재추출하여 추정된 모델에 대한 추가 정보를 얻는다. 예를 들어, 선형 회귀식의 변동성을 추정하기 위해 훈련 데이터에서 여러 샘플을 반복적으로 추출하고 각각의 새로운 샘플에 선형 회귀식을 적용한 다음 결과값이 어느 정도 다른지 조사할 수 있다. 이러한 접근 방식을 사용하면 원래 학습 샘플을 사용하여 모델을 한 번만 프팅하면 얻을 수 없는 정보를 얻을 수 있다. 리샘플링 접근 방식은 훈련 데이터의 다른 하위 집합을 사용하여 동일한 통계적 방법을 여러 번 수행해야 하므로 계산 비용이 많이 들 수 있다. 그러나 최근 컴퓨.. 2024. 1. 30. [Machine Learning] 클래스 가중치 (Class Weight) 클래스 가중치 (Class Weight) from sklearn.model_selection import GridSearchCV from sklearn.ensemble import RandomForestClassifier # 분류기와 파라미터 그리드 정의 classifier = RandomForestClassifier() param_grid = { 'class_weight': ['balanced', None], 'max_depth': [3, 5, 10], 'n_estimators': [80, 100, 150] } # GridSearchCV를 사용하여 최적의 파라미터 찾기 grid_search = GridSearchCV(classifier, param_grid, cv=5) grid_search.fit(X_.. 2023. 9. 22. 그룹화, 정렬 및 섞기 (2) Sorting a Data Set 모델을 학습하기 전에, 훈련 및 전처리 중에 데이터 세트를 셔플하는 것이 항상 좋지만, 데이터 세트를 정렬할 수도 있다. 데이터 세트를 정렬하면 하나 이상의 열에 대해 오름차순 또는 내림차순으로 행을 정렬할 수 있다. import os import pandas as pd import numpy as np np.random.seed(42) df = pd.read_csv('auto-mpg.csv', na_values = ['NA', '?']) df = df.sort_values(by = 'name', ascending = True) print(f"The first car is : {df['name'].iloc[0]}" ) pd.set_option('display.max_co.. 2023. 7. 27. 타겟 인코딩 (Target Encoding) Removing the First Level pd.concat 함수에는 drop_first라는 매개 변수도 포함되어 있는데, 첫 번째 수준을 제거함으로써 k-1 더미를 k개의 범주형 수준에서 벗어나게 할지 여부를 지정한다. 이 경우 첫 번째 수준인 area_a를 제거하고자 하는 이유는 보통 사용되지 않는 [0,0,0]의 인코딩을 사용함으로써 더 효율적인 인코딩을 제공한다. area를 단지 세 개의 열로 인코딩하고 a의 범주형 값을 [0,0,0]으로 매핑한다. import pandas as pd dummies = pd.get_dummies(['a', 'b', 'c', 'd'], prefix = 'area', drop_first = True) print(dummies) 위의 데이터에서 볼 수 있듯이 area.. 2023. 7. 27. 원핫 인코딩 (One-Hot-Encoding) Encoding Categorical Values as Dummies 범주형 값을 부호화하는 전통적인 방법은 더미 변수로 만드는 것이다. 이 기법은 one-hot-encoding이라고도 한다. csv를 다운 받는다. import pandas as pd df = pd.read_csv('jh-simple-dataset.csv', na_values = ['NA', '?']) pd.set_option('display.max_columns', 7) pd.set_option('display.max_rows', 5) display(df) area 열은 숫자가 아니므로 원핫 인코딩으로 인코딩해야 한다. 영역 수와 개별 값을 표시한다. 이 경우 영역 범주형 변수에는 4개의 값만 있다. areas = list(df['ar.. 2023. 7. 27. Dropping / Concatenating Dropping Fields 값이 없는 필드를 신경망에 삭제해야 한다. 다음 코드는 MPG 데이터 세트에서 이름 열을 제거한다. import os import pandas as pd df = pd.read_csv('auto-mpg.csv', na_values = ['NA', '?']) print(f"Before drop : {list(df.columns)}") df.drop('name', 1, inplace=True) print(f"After drop : {list(df.columns)}") Before drop : ['mpg', 'cylinders', 'displacement', 'horsepower', 'weight', 'acceleration', 'year', 'origin', 'name'] Aft.. 2023. 7. 27. CatBoost CatBoost CatBoost는 Yandex에서 개발한 오픈 소스 소프트웨어 라이브러리이다. 이는 다른 기능 중에서 클래식 알고리즘과 비교하여 순열 기반 대안을 사용하여 범주형 기능을 해결하려고 시도하는 그레디언트 부스팅 프레임워크를 제공한다. pip install catboost import numpy from catboost import CatBoostRegressor dataset = numpy.array([[1,4,5,6], [4,5,6,7], [30,40,50,60], [20,15,85,60]]) train_labels = [1.2, 3.4, 9.5, 24.5] model = CatBoostRegressor(learning_rate=1, depth=6, loss_function='RMSE') .. 2023. 7. 12. [Machine Learning] Boosting Methods (3) LightBoost LGBM (Light Gradient Boosting Machine)은 2017년 마이크로소프트에서 처음 출시되었으며 사용자가 선호하는 또 다른 Gradient Boosting 방법이며 의사 결정 트리 기반이다. 다른 방법과의 핵심적인 차이점은 잎을 기준으로 트리를 분할한다는 것이다. 즉, 포인트 촬영에 필요한 단위를 감지하고 중지할 수 있다 (다른 것은 깊이 기반 또는 레벨 기반임). LGBM은 잎 기반이므로 오차를 줄여 정확도와 속도를 높이는 측면에서 매우 효과적인 방법이다. 특수 알고리즘을 사용하여 범주형 데이터를 분할할 수 있지만 열의 문자열 이름 대신 인덱스와 같은 정수 값을 입력해야 한다. import numpy as np from time import time from l.. 2023. 7. 11. [Machine Learning] 무작위 탐색 (RandomizedSearchCV) 무작위 탐색 (RandomizedSearchCV) Random Search는 Grid Search의 단점들을 조금 보완하고자 나온 방법이다. 말 그대도 파라미터의 범위를 선정하고 값을 랜덤으로 설정하여 파라미터를 조합하고 평가하는 방식이다. Grid Search와 방식 자체는 유사하나 Grid Search보다 근사 최적값을 빨리 찾을 수 있다. 또한, 격자 형식의 Grid Search와 다르게 그 사이값들도 랜덤으로 탐색할 수 있기 때문에 그 안에서 더 좋은 값을 찾을 수 있다는 장점도 있다. 즉, 몇 번 학습과 평가를 반복할 것인지 시도의 수를 직접 설정할 수 있기 때문에 비교적 시간이 적게 걸린다. RandomizedSearchCV 가 사용하는 인자들은 GridSearchCV와 거의 동일하지만, n_.. 2023. 7. 10. [Machine Learning] 사용자기반 협업 필터링 (User-based Filtering) 사용자기반 협업 필터링 (User-based Filtering) import pandas as pd import numpy as np import seaborn as sns import matplotlib.pylab as plt from sklearn.metrics import mean_squared_error from datetime import datetime %matplotlib inline movies = pd.read_csv('movies.csv') # 영화 정보 ratings = pd.read_csv('ratings.csv') # 사용자가 영화에 대해 남긴 평점 데이터 print(movies.shape) print(ratings.shape) movies.head() # 제목으로 영화 찾기 mo.. 2022. 12. 7. 이전 1 2 다음 728x90 반응형 LIST