본문 바로가기

Data-science/machine learning

(6)
rdkit 설치하기 rdkit 공식 문서를 보면 pip 도 안되고 conda로 해라고 한다. 그런데 conda로도 안돼서 여러 삽질을 거치다 다음과 같은 해결법을 알게됐다. !pip install python-rdkit 위 명령어면 한 방에 해결된다. # General Imports import os import pandas as pd import numpy as np pd.options.display.max_columns=300 import warnings warnings.filterwarnings("ignore") from rdkit import Chem from rdkit.Chem import Draw, Descriptors from rdkit import DataStructs from rdkit.Chem import..
[pandas] pandas dataframe 이용해서 그룹별로 train/val 나누기 가끔 dataframe 자체로 train_test_split을 해야 할 때가 있다. 그럴 땐 어떻게 해야하나... 특히 그룹별로 특정 샘플이 valset에 균등하게 포함되도록 하려면...? 간단한 방법 groupby후 sampling을 한다. validation을 0.2만큼 하고 싶으면 frac=0.2로 준다. 그렇게 나타난 valDataset의 index를 drop 해주면 된다. 이것보다 어려운 방법은 drop의 반대 방법으로 있는 부분만 iloc으로 남기는 것이다. 이상 끝
dtreeviz IndexError, decision tree visualization random forest 모델 혹은 decision tree 모델을 이용했을 경우 모델이 어떻게 작동하는지 설명을 요구할 때가 있다. RandomForestRegressor를 이용해서 회귀분석을 진행했다. 그런데 RandomForestRegressor같은 경우 여러 Decision tree의 앙상블 모델로 tree를 한 번에 시각화하기가 어렵다. 그래서 tree중 하나를 선택해서 시각화한다. 그러다 좋은 라이브러리를 발견했다. dtreeviz 이런식으로 쓰면되는 간단하고 편리한 라이브러리다! model = Pipeline([('scaler',MinMaxScaler()), ('DecisionTreeRegressor', DecisionTreeRegressor(criterion='mae', max_depth=..
epoch, iter ? epoch, iter (한 번의 epoch는 인공 신경망에서 전체 데이터 셋에 대해 forward pass/backward pass 과정을 거친 것을 말함. 즉, 전체 데이터 셋에 대해 한 번 학습을 완료한 상태) [출처] 머신 러닝 - epoch, batch size, iteration의 의미|작성자 예비개발자 메모리의 한계와 속도 저하 때문에 대부분의 경우에는 한 번의 epoch에서 모든 데이터를 한꺼번에 집어넣을 수는 없습니다. 그래서 데이터를 나누어서 주게 되는데 이때 몇 번 나누어서 주는가를 iteration, 각 iteration마다 주는 데이터 사이즈를 batch size라고 합니다. 전체 2000 개의 데이터가 있고, epochs = 20, batch_size = 500이라고 가정합시다. ..
머신러닝 이미지 데이터 전처리 주의사항 학습데이터에서 이미지 데이터를 전처리했다. 그럼 테스트데이터에서는 어떻게 해야할까? 이에대한 해답. Contrast Normalization 다양한 이미지로 학습하는 경우 이미지마다 밝기가 다르고 찍은 환경이 다를 수 있습니다. 이것을 어느 정도 통일해 주는 것이 대비 표준화(contrast normalization) 과정입니다. 거의 언제나, 대비 표준화를 거치고 나면 훈련에 사용하기 좋은 데이터가 됩니다. 표준화 과정은 평균을 빼고 표준편차로 나눠주는 \( \hat X = \frac{X - E(X)}{\sigma(X)} \) 과정입니다. 전체 픽셀들의 분포가 평균이 0이고 분산이 1인 정규분포로 바뀌게 됩니다. 이 과정에서 신경써야 할 것은 2가지가 있습니다. 전체 이미지에 대해서 하는지, 각각의 이..
SVM 공부 서포트 백터 머신... 두 클래스를 명확히 구분할 수 있는 경계를 찾는다. 이때 거리 개념으로 특정 거리 이상일 경우 어떤 클래스에 속하도록 경계를 설정하는데 거리를 정의하기 위해 경계와 수직인 벡터가 등장하고 그 벡터와의 내적 개념이 등장. 내적을 이용해서 거리를 정의하고, 제약조건을 준다. 여기서 라그랑주 승수법을 이용 그리고 그 거리를 최대화해서 두 클래스를 구분짓는 경계의 폭을 크게 한다. * 라그랑즈 승수법은 제약조건(보통 boundary condition)을 특정 상수값과 곱해서 목적함수에 더해준다. 그리고 목적함수에 대해 모든 변수들에 대한 편미분을 0으로 한다. 제약조건을 따로 명시할 필요가 없는 좋은 수학 도구이다. -> 이렇게 할 수 있는 이유는 목적함수의 gradient(쉽게 말해 기..

728x90