DSML_restart
중요한 내용
은 앞으로 뺌
X shape (7727, 10, 3595)으로 업데이트 된 거였음. 4068 제발 잊어.
<<220227>>
preds2_mean_lst.append(np.mean(preds2))
예측 for문에서 df 만들 때 pred에 이미 평균을 냈는데 평균을 왜 또 내..?
==> for문이 feature별로 돌아가면 예측은 환자수만큼 나와.
그니까 feature 별로 하나의 값으로 보려면 나온 값들의 평균으로 보는게 가장 좋음.
[6-1], [6-2]는 각각 조합과 CuDNNLSTM 관련 내용이므로 지금은 일단 버림
정리
mimic-iii data: 2001년~2012년 미국 중환자실 (ICU) data
7727: 폐렴환자 수, 근데 이제 abnormal(x matrix) sum이 0인 아무 의미 없는 환자들을 제외한. # DSML_re/[해외논문] Journal of Biomedical Informatics/01 데이터 전처리.ipynb
4068: 폐렴환자들에게서 발견된 item 수 (4069 -> 4068이 된 이유? : 7727로 줄여보니까 해당 아이템이 싹 0이었어서)
퇴원을 d-day로 두고 [d-10 ~ d-1]까지를 x의 time에,
[d-day]는 y에.
x [1: item을 통해 문제 발견(반응 有), 0: item에 대한 반응 無], shape: (7727, 10, 4068)
y [1:사망, 0:퇴원], shape: (7727, 1) # 1은 d-day를 의미
<!-- x,y의 80%를 train에 사용 (80%로 모델을 생성하고 저장)
x,y의 20%는 test에 사용 (20%로 예측) -->
x,y 모두를 학습에 사용한 모델을 사용해서
x,y 모두에 대해 예측.
[07. best model saving]
가장 예측력이 좋은 모델 뽑아서 저장하는 코드가 담긴 file.
[absum 함수는 line plot 그릴 때 쓰는 것.]
*** 예측을 정렬했을 때 순위 == Feature Importance (FI)
잊으면 아쉬운 변수이름 생성해주는 globals() 함수
for i in sequential_data:
globals()['{}'.format(i)]
ref.
[5-2] violin plot.ipynb 에 다시 갖다 놓았으니 확인 바람.
# # 참고로 첨 적용했을 때의 file 경로는
# # /project/godshu/2021 usw univ contest/가연/211218 (가연)
변경사항 없을 때, 파일 자체 save안하고 staging & commit 하려고 하면
On branch master Your branch is up to date with 'origin/master'. nothing to commit, working tree clean
이런 에러 남.
이미 pull한 상태이거나 혹은 pull할 게 없다면
상태를 변경해주고 pull을 해도 아무 충돌이 일어나지 않음. 아마 push는 물론 staging도 전이어서 그랬던 것 같음.
근데 그거 아무 일도 일어나지 않은 것에 놀라서 그만 스테이징도 안하고 push를 했는데
staging 돼있는게 없어서 아무 일도 안일어남.
staging, commit, push 얘네는 늘 세트인가봄.
Method1, df_all, ReLU, Sign.ipynb 정리해서 putty 업로드 완료.
Method1 & 2 allfit 안씀.
Method2_scaling 안씀.
<그래프 그리는 과정>
- absum 함수를 불러옴.
- 그 다음 PPL feature list 불러옴.
- PPL feature의 index를 불러옴.
- absum 적용.
ref.
[4] Method1 = ReLU x Sign x Entropy, graph까지.ipynb
axis는 어렵다.
단순하게 생각해서 데이터의 어떤 부분을 사용할 건지, 그랬을 때의 shape은 어때야 하는지를 고려하면서 하면 쉽다.
(axis로 sum 등을 했을 때, 어떤 shape이 나오는지 확인하면서 계산하면 됨.)
ref.
[4] Method1 = ReLU x Sign x Entropy, graph까지.ipynb
[Library]
#데이터 분석 라이브러리
import numpy as np
print("numpy version: {}". format(np.__version__))
import pandas as pd
#시각화 라이브러리
import matplotlib as mpl
import matplotlib.pyplot as plt
print("matplotlib version: {}". format(mpl.__version__))
import seaborn as sns
print("seaborn version: {}". format(sns.__version__))
#한글설정
import matplotlib.font_manager as fm
font_dirs = ['/usr/share/fonts/truetype/nanum', ]
font_files = fm.findSystemFonts(fontpaths=font_dirs)
for font_file in font_files:
fm.fontManager.addfont(font_file)
# 한글 출력을 위해서 폰트 옵션을 설정합니다.
# "axes.unicode_minus" : 마이너스가 깨질 것을 방지
sns.set(font="NanumBarunGothic",
rc={"axes.unicode_minus":False},
style='darkgrid')
#딥러닝 라이브러리
import tensorflow as tf
#기타 라이브러리
import os
import random
import time
#경고 에러 무시
import warnings
warnings.filterwarnings('ignore')
print('-'*50)
#시간 확인을 용이하게 해주는 라이브러리
from tqdm import tqdm
#결과 확인을 용이하게 하기 위한 코드
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
# GPU
#https://www.tensorflow.org/guide/gpu#allowing_gpu_memory_growth
#프로세스의 요구량만큼 메모리 사용 설정
gpus = tf.config.experimental.list_physical_devices('GPU')
print(gpus)
if gpus:
try:
for i in range(len(gpus)):
tf.config.experimental.set_memory_growth(gpus[i], True)
except RuntimeError as e:
# 프로그램 시작시에 메모리 증가가 설정되어야만 합니다
print(e)
[Series name 정하기]
Entropy_sr = pd.Series(Entropy_arr, name = 'Entropy')
ref.
https://ponyozzang.tistory.com/624
[df colnames 바꾸는 방법 2가지]
relu_and_sign.columns = ['feature', 'ReLU', 'Sign'] # [['feature', 'ReLU', 'Sign']]여도 됨.
relu_and_sign.rename(columns = {'diff':'ReLU', 'diff_preds':'Sign'}, inplace = True)
feature 간의 correlation 고려한 예측 해보기. m1_new = [0->1의 전체 평균] - [1->0의 전체 평균] preds를 하면 환자 수 만큼 preds값이 나옴.
LSH M1 New 4가지 scoring 함수 부분 항상 실행해서 결과 얻을 것.
pandas df
[CuDNNLSTM]
순환형 신경망 8 - CuDNNGRU & CuDNNLSTM
Tensorflow CuDNN RNN vs 그냥 RNN 비교
Tensorflow와 그 버전과 호환되는 CUDA, cuDNN까지 설치하는 법
4) IMDB 리뷰 감성 분류하기(IMDB Movie Review Sentiment Analysis)
%%time #cell의 맨 위에서 실행해야함.
계층적(stratified) cross validation :
sklearn.model_selection.StratifiedShuffleSplit <br>
[dic to df]
[dic to df](http://daplus.net/python-python-dict%EB%A5%BC-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%94%84%EB%A0%88%EC%9E%84%EC%9C%BC%EB%A1%9C-%EB%B3%80%ED%99%98/)
df = pd.DataFrame(dic.items(), columns=['key', 'value'])
df 원하는 위치에 column 추가
df.insert(0, 'feature', dic.keys())
[today 참고 논문]
Correlation-based Feature Selection 기법과 RF모델을 활용한 BMI 예측에 관한 연구
Feature Selection이란?
우선 test.py를 만들어야함. (tqdm)
vi test.py # vi는 편집창
i #누르고 편집 시작
esc
:wq # 여기까지 하면 .py파일이 저장된 것. (저장하고 나간다.)
tmux new -s 지어주고싶은 tmux이름
python test.py # 하면 아까 만든 test.py 실행됨. # 실수하면 exit()
exit # 하면 tmux 끝내는 것. tmux가 날라감.
tmux attach -t 실행하고싶은 tmux이름 # 서버에 접속
[파일 열고 편집창 명령어]
ctrl + c # 코드 실행 강제 종료
q # 바꾼 거 없을 때 그냥 나간다.
q! # 강제종료, 그냥 나가짐.
[코드가 잘못됐다면 py file 바꾸면 됨.]
np.sort(arr)
axes, axis???: axes는 그림판 안의 그림판?; axis는 말 그대로 축이 맞음
[그림 여러개]
fig.add_subplot(rows, cols, python_idx+1)
matplotlib 축 범위 지정 plt.xlim()
ax.set_xlim()
plt.axis('off') # 축 지우기
legend 투명도 plt.rcParams["legend.framealpha"]= None이 default, 0.5등 float으로 써주면 됨.
plt legend ref
[visualization]
레전드 위치
legend 작성 공식 ref
그래프 색 종류
그래프 위에 text 쓰기
text 위치 조정 verticalalignment = <top, bottom, center, baseline>, horizontalalignment = <center, left, right>
레전드, 복잡해서 안봄
파이썬 그래프 마커 종류
파이썬 f-string으로 소수점 관리 f'{변수:.2f}'
검색어>> 모델 종류를 알고싶으면 종류를 뒤에 붙일 것.
naive bayes 알고리즘 종류
scikit learn에서 제공하는 naive bayes 알고리즘 종류
scikit learn multinomial naive bayes
sklearn.naive_bayes.MultinomialNB official doc
bidirectional lstm 설명
bidirectional lstm 설명
tf.keras.layers.Bidirectional official doc
overleaf 사용법 표 위치 조정
overleaf 사용법 표 위치 고정
overleaf htp
overleaf 위치 조정 관련
LaTex 그림 배치 subplot
sns.lineplot(linestyle, marker)
파이썬 텍스트 파일에서 특정 패턴 다음에 오는 텍스트 가져오기; str.index("~~")+1
파이썬 문자열 찾기; startswith, endswith
- 오늘의 issue
정보과학회에 제출할 국내논문 쓰기로 함!!! (~220421?)
permutation FI의 핵심
그 feature의 값들을 무작위로 섞어서(permutation) 그 feature를 노이즈로 만드는 것입니다!
우리가 사용한 방법: item을 정해서(item으로 for loop 돌리는 것..) 환자끼리 그 아이템의 one hot을 무작위로 바꾸는 것.
ensemble learning에 대한 깔끔하고 이해하기 쉬운 설명
교수님 meeting 때 본 블로그 for adaboosting, adaboost 정리 잘 돼있음.
에러메세지 'module' object is not callable: class가 아닌 모듈만 불러왔을 때 모듈.class로해서 class 써주면 문제없음. 1
에러메세지 'module' object is not callable: class가 아닌 모듈만 불러왔을 때 모듈.class로해서 class 써주면 문제없음. 2
class가 아닌 모듈만 불러왔을 때
== from 모듈 import class 안하고 그냥 import 모듈만 했을 때!!!
module이 class를 포함하는 더 큰 개념.
[검색어: adaboost lstm 학습 안되는 이유]
혼합 약한 분류기를 이용한 AdaBoost 알고리즘의 성능 개선 방법
검출기의 성능은 약한 분류기의 성능에 영향을 받는다. 약한 분류기의 성능이 너무 약하거나 강하더라도 검출 성능이 떨어진다.
lstm과 약한 분류기? 약한 학습기?
머신러닝에 관한 부스팅과 AdaBoost
AdaBoost 돌아가는 과정, 개념 설명
머신러닝의 그래디언트 부스팅 알고리즘에 대한 친절한 소개
Keras에서 LSTM 네트워크에 대한 입력데이터를 재구성하는 방법
암호화폐 가격 예측을 위한 딥러닝 앙상블 모델링: Deep 4-LSTM Ensemble Model
- 모델링 결과 및 성능평가 부분이 맘에 듦.
stacking, boosting, bagging 비교, 괜찮은 참고자료
stacking은 overfitting 문제 발생...
그 문제 해결을 위해 CV 방식 도입
Blas xGEMM launch failed 에러 해결 (by gpu setting)
- os.makedirs(폴더명)이랑, to_categorical(변수명)은 또 하면 에러남.
makedirs의 경우 동일한 이름의 폴더를 또 생성하려고 할 때,
to_categorical은 동일한 변수를 또 카테고라이즈하려고 할 때.
to_categorical()에러는 다음과 같음.
ValueError: Shapes (...) and (...) are incompatible
- verbose뜻: 말 수가 많은
verbose = 0 : 과정 끔
verbose = 1 : 과정 보여줌
verbose = 2 : 과정 함축해서 보여줌.
verbose ref
- patience @ early stop
loss나 acc val이 가장 좋은 값이 나왔을 때 patience만큼 더 해보고도 안바뀌면 early stop해라.
- 앞에 있는 loss, acc는 training set`s
- 뒤에 있는 val_loss, val_acc는 validation set`s, 얘네로 monitoring
-
get_params()
-
lambda에 들어가는 (data에 적용하는) model이 이미 실행된 함수였던게 오늘의 가장 큰 문제였다. get_model() 와 get_model차이...
lambda에는 이미 실행된 함수가 들어가면 안됨.
get_model()를 한 모델을 lambda에 집어넣어 버리면 함수가 이미 실행된게 들어가서 문제였던 것...
-
hp 바꿔가면서 모델 실행해올 것.
-
Permutation FI 짜보기...
-
classifier 횟수(n_estimator)는 못 세는지..?
- ML, DL 관련 알쓸신팁.
batch_size = 늘릴 수 있을만큼늘리되 gpu가 감당할 수 있을만큼만 해라.
진행바 왼쪽이 input size / batch의 반올림한 값.
hyper parameter를 튜닝하면서 학습시키는게 맞음. 한경훈 교수님 영상 10강. 하이퍼파라미터 으로 확인함.
early stop 할 때는 epoch 수 상관 없음.
model.fit() parameters
- [교수님 meeting log]
sample weight만 반영되면 됨.
방법1. resampling (if문 어쩌고 했던거)
방법2. loss function 구할 때 weight 같이 곱해줌. (가중치)
더 많이 틀린 애를 집중적으로 학습하는 방향으로
sample weight 개수(len) 곱하라고 하신 이유??????
sample_weight 총 합이 원래는 1이되게 하는데 그걸 7727이 되게...... sample_weight가 너무 작아서 문제였으니까 그거를 커지게...
지금은 training set과 validation set에서 서로 적용되는 loss func 식이 달라서 문제임.
binary crossentropy 대신 weighted binary crossentropy 가능한지
원래는 만들어서 쓰는게 맞고, 만드는게 어려우면
validation data를 우리가 fit할 때 만들어주면 됨.
fit하는 class에
kwarg에 validation data 넣어주고...
train과 validation으로 나눠주기.
sample_weight 수정 다시해야함.
train .... validation 나눌 때 index만 뽑아주면 됨. index가 있으면 idx로 나눌 수 있음.
sample_weight도 train val 각각의 sw로 나눠줘야.
정규화는 training sw만 하면 됨.
len, sw가 다르니까..? 같이 하면 안된다고...?
val set은 어떻게 만들어야 하냐면,,,
val x, y는 우리가 한 번 더 샘플링 해줘야함. 위에서 resampling 했던 것처럼.
new_val_x, new_val_y
ref
[hyperparameter tuning]
(https://velog.io/@emseoyk/%ED%95%98%EC%9D%B4%ED%8D%BC%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0-%ED%8A%9C%EB%8B%9D)
(https://seamless.tistory.com/34)
[.fit]
[.fit1](https://machinelearningmastery.com/tune-lstm-hyperparameters-keras-time-series-forecasting/)
[.fit2](https://keras.io/ko/getting-started/sequential-model-guide/)
[.fit3](https://machinelearningmastery.com/grid-search-hyperparameters-deep-learning-models-python-keras/)
[.fit4](https://towardsdatascience.com/choosing-the-right-hyperparameters-for-a-simple-lstm-using-keras-f8e9ed76f046)
[.fit5](https://www.justintodata.com/hyperparameter-tuning-with-python-keras-guide/)
[model.fit!!!!!](https://keras.io/api/models/model_training_apis/)
[weighted binary crossentropy](https://data-newbie.tistory.com/645)
batch size 크게 하면 patience도 크게 해야....
training acc가 안오르면 학습이 안되는 것임.]
그냥 acc가 training acc
val_acc가 validation acc
==> training val이 계속 똑같거나 머무르면 학습이 안되는 것임.
-
LSTM 정의
LSTM 개발자의 논문
LSTM에 대하여 -
LSTM에 learning rate 설정하는 게 없는가에 대하여
[ Python ] Neural Network의 적당한 구조와 hyperparameter 찾는 방법
하이퍼파라미터 튜닝
Push 에러,,,,
word to pdf 이미지 화질 개선 방법) 주피터 이미지 관련, 확장자.svg 혹은 .eps로 저장해서 사용
feature importance의 일환으로 shap이 있음.
New 방법 추가 (기존 방법 수정된 게 아니고 새로운 방법 추가된 것임.)
방법 상세: 특이마커 고르기
- shape 바뀐 X에 대한 뉴 코드
/project/LSH/** 해외_Journal of Biomedical Informatics/03 Method2 - 사망, 생존 TOP10 & 그래프
/project/kelly/03 Method2 - 특이 마커 TOP10 & 그래프
- [/project/kelly/03 Method2 - 특이 마커 TOP10 & 그래프] 작성에 참고한 코드
/project/kelly/[7-2] method2 (결과 4 역전마커) # 역전마커 코드에 참고 (아마 원근 코드 모두에 참고할 것 같음.)
/project/kelly/[7-1] 결과2,3 method1_entropy ; (E(all to 1) - E(all to 0))*entropy & method1_부록 # entropy 들어있는 df가 어떻게 생겼는지 확인 차 참고
기껏 전처리 코드 다 치고 싹 정리해놨더니 노션에 옮기는 과정에서 공중분해됨. 어디로 사라진 것인지 찾을 수가 없었음.
[검색어: 파이썬 시계열 모델링 기초 코드 설명]
코드, 예제, LSTM 설명 페이지 추천
LSTM 자체에 대한 설명
[검색어: 파이썬 시계열 모델링 분석 LSTM예제]
LSTM에 대한 이해가 되는 설명, notion 설명에 참고할 예정
ARIMA 모델에 대한 설명, youtube 영상 추천
ARIMA 모델에 대한 설명, 코드, 예제
refs for notion
LSTM으로 시계열 예측하기: 절차
[검색어: keras LSTM X shape]
keras - Keras를 통한 LSTM의 구현
Keras LSTM 입력 포맷의 이해 Understanding Input shapes in LSTM | Keras
[케라스] 무작정 튜토리얼 11 - LSTM(feat.RNN) 구현하기
[공식문서] keras.layers.LSTM
[공식문서] LSTM layer, LSTM class
[검색어: keras lstm dropout]
RNN에서의 Dropout
💛💛 RNN Network에서 dropout을 Sequential()에 층을 쌓는 방식이 아닌 LSTM Layer 안에서의 option으로 사용해야하는 이유 ; 과거의 중요 정보까지는 잃지 않기 위해.
[검색어: keras lstm stateful return_sequences]
Keras를 사용한 반복적 인 신경망 (RNN)
[statistical Feature Selection]
Pneumonia identification using statistical feature selection
Statistical interpretation of machine learning-based feature importance scores for biomarker discovery
Interpretable and explainable AI (XAI) model for spatial drought prediction
Peeking Inside the Black-Box: A Survey on Explainable Artificial Intelligence (XAI)