인공지능 AI

학습한 모델을 저장하는 방법은 2가지가 있다. 파이썬 객체 저장 : Pickle & Joblib 라이브러리 사용 Keras 모델 저장/로드 함수 사용 Pickle과 Joblib의 사용법은 거의 유사한데 Joblib의 사용법이 더 쉽기 때문에 Joblib을 기준으로 설명하겠다. [ Joblib 라이브러리 사용 ] 저장 : dump(객체, 저장경로) 확장자는 .pkl로 해준다. joblib.dump(data, 'data.pkl') 머신러닝 모델 저장 예시 불러오기 : load(불러올객체) loaded_data = joblib.load('data.pkl') 머신러닝 모델 불러오기 예시 [ Keras 모델 저장/로드 함수 사용 ] 케라스로 만든 모델의 경우에는 케라스에서 제공하는 함수를 사용해서 모델을 저장/로..
Pytorch를 사용하여 CNN, RNN 모델을 구현하기 위한 실습 내용임 파이토치 공식 문서 : https://pytorch.org/docs/stable/index.html PyTorch documentation — PyTorch 1.12 documentation Shortcuts pytorch.org 사용 코드 출처 : https://tutorials.pytorch.kr/beginner/blitz/tensor_tutorial.html#sphx-glr-beginner-blitz-tensor-tutorial-py 텐서(Tensor) 텐서(tensor)는 배열(array)이나 행렬(matrix)과 매우 유사한 특수한 자료구조입니다. PyTorch에서는 텐서를 사용하여 모델의 입력과 출력뿐만 아니라 모델의 ..
ImageDataGenerator Keras에서 이미지 파일을 쉽게 전처리하여 학습시킬 수 있도록 제공해주는 클래스이다. 뿐만 아니라 이미지 데이터에 여러 변형을 주어 원래 있는 학습 데이터셋보다 더 많은 양의 데이터를 학습시키는 것과 같은 효과를 낼 수 있는 이미지 증강(Image Argumentation)도 가능하게 해준다. 불러오기 import tensorflow as tf from tensorflow import keras from keras.preprocessing.image import ImageDataGenerator ImageDataGenerator() 인스턴스 생성 train_datagen = ImageDataGenerator( rescale=1. / 255, # 이미지의 픽셀 값을 조정..
OpenCV import cv2 동영상 데이터 불러오기 cv2.VideoCapture(파일 경로) video = cv2.VideoCapture(TUTORIAL_PATH + "/tutorial.mp4") video.isOpened() # True 영상 정보 확인 video.get()으로 여러 정보 불러올 수 있음 video.get(cv2.CAP_PROP_FRAME_WIDTH) # 영상 가로길이 확인 # 640.0 video.get(cv2.CAP_PROP_FRAME_HEIGHT) # 영상 세로길이 확인 # 360.0 video.get(cv2.CAP_PROP_FPS) # FPS 확인 # 24.0 video.get(cv2.CAP_PROP_FRAME_COUNT)# 비디오 총 길이 (프레임이 총 몇개인지) # 32..
LightGBM XGBoost와 같이 GBM(Gradient Boosting Model) 기법을 기반으로 하는 방식이다. (GBM : 여러 트리 모델을 점점 결합해가면서 오차를 줄이는 모델을 구성하는 방식) LightGBM의 특징 빠른 학습속도, 높은 효율성 적은 메모리 사용량 향상된 accuracy 병렬, 분산 및 GPU 학습 지원 대규모 데이터를 처리할 수 있음 LightBGM은 이름 그대로 가벼운(Light) GBM 알고리즘이다. 속도가 빠르고, 사이즈가 큰 데이터를 다룰 때도 적은 양의 메모리를 사용한다. 대부분의 트리 기반 알고리즘에서는 트리가 아래 그림과 같은 Level-wise 방식으로 확장되기 때문에 트리가 최대한 균형있게 확장되고, depth를 최소화할 수 있었다. 반면에 LightGBM..
RobustScaler RobustScaler는 각 feature의 2사분위수(median: 중앙값)에 해당하는 데이터를 0으로 잡고, IQR 차이 만큼을 기준으로 정규화를 진행한다. (IQR = 3사분위수 - 1사분위수) 데이터의 분포를 4분위수에 맞춰주기 때문에 이상치가 많은 데이터를 다룰 때 유용한 스케일링 방법이다. 사용법 import sklearn.preprocessing import RobustScaler scaler = RobustScaler() x_train_s = scaler.fit_transform(x_train) x_val_s = scaler.transform(x_val) https://scikit-learn.org/stable/modules/generated/sklearn.prepr..
Class Imbalance (클래스 불균형) 대부분의 비즈니스 상황에서 타겟 클래스의 불균형은 매우 흔하다. 예를 들어 제조 공정간 불량 예측을 수행하는 모델을 학습시킬 때, 데이터 중에는 정상 데이터가 불량보다 훨씬 많을 것이다. 머신러닝 알고리즘들은 보통 데이터가 클래스 내에서 고르게 분포되어있다고 가정하기 때문에, 다수의 클래스를 더 많이 예측하는 쪽으로 모델이 편향되는 경향이 있다. 즉, 소수의 클래스에서 오분류 비율이 높아질 수 있다는 것이다. 이러한 부분 때문에 클래스 불균형은 모델링을 할때 매우 문제가 될 수 있다. 극단적인 예시를 한번 살펴보면 실제값 314개의 데이터 중 0은 283개, 1은 31개인 데이터에 대해서 모델이 314개를 모두 0이라고 예측했다고 해보자 이 분류모델이 예측을..
분류 모델 사용 시, 예측 결과를 보면 1, 0 Survived, Died, Leave, Stay 등과 같이 Class(클래스)로 나오는 것 처럼 보인다. 하지만 이 결과는 바로 저렇게 예측되는 것이 아니고, 예측된 값을 가지고 만들어 낸 값이다. 분류 모델에 의해 예측된 값들은 실제 값과 함께 confusion matrix(교차집계표)를 만들어서 평가한다. 이를 위해서는 예측 결과값이 0과 1로 나와야 한다. 하지만 분류 모델들의 실제 예측 결과는 사실 0,1의 값이 아니고, 확률 값이다. 예측된 확률 값들을 어떠한 기준으로 잘라서 0과 1로 나누는 것이다. 이 때 예측된 확률 값을 자르는 기준이 되는 값을 Cut-off value (=Threshold) 라고 부른다. (디폴트는 0.5) cut-off..
Stacking : 다른 여러 모델로 예측한 예측값들을 누적시켜 최종 모델의 인풋으로 사용해서 예측에 사용하는 방식 Stacking 모델 불러오기 from sklearn.ensemble import StackingClassifier 모델 선언 estimators : stacking에 사용될 베이스 모델들을 지정해준다. 각 모델 이름(문자열)과 모델 인스턴스로 구성된 튜플 형식의 리스트로 지정해준다. final_estimator : 최종적으로 예측에 사용할 모델을 지정해준다. (디폴트 : LogisticRegression) # 모델 선언 estimators = [('lr', LogisticRegression()), ('dt', DecisionTreeClassifier()), ('knn', make_pipe..
구글 코랩을 사용하여 인공지능 팀 프로젝트를 진행 중인데, 머신러닝 특성상 학습 시간이 상당히 길다. 하지만 구글 코랩은 기본적으로 12시간이 지나면 런타임이 끊기고, 90분 동안 아무 입력이 없어도 런타임이 끊긴다. 12시간 뒤에 끊기는건 어쩔 수 없지만 90분 동안 입력이 없어 끊기는 경우를 방지해보자. 위도우랑 차이는 없겠다만 맥북을 기준으로 설명하겠다. 먼저 구글 코랩 작업중인 화면에서 우클릭 -> 검사를 누르면 개발자 도구 화면이 나온다. 콘솔 탭으로 이동하여 하단 에 다음 코드를 입력해주면 된다. function ClickConnect(){ console.log("연결 유지"); document.querySelector("#top-toolbar > colab-connect-button").sh..
kybeen
'인공지능 AI' 카테고리의 글 목록