Data Analysis

Python 45

[Pytorch] 경사하강법으로 이미지 복원해보기

전제조건 이미지 처리를 위해 만들어 두었던 weird_function() 함수에 실수로 버그가 들어가 100×100 픽셀의 오염된 이미지가 만들어졌습니다. 이 오염된 이미지와 오염되기 전 원본 이미지를 동시에 파일로 저장하려고 했으나, 모종의 이유로 원본 이미지 파일은 삭제된 상황입니다. 다행히도 weird_function()의 소스코드는 남아 있습니다. 오염된 이미지와 weird_function()을 활용해 원본 이미지를 복원해봅시다. 문제 해결 방안 오염된 이미지와 크기가 같은 랜덤 텐서를 생성한다.(랜덤 텐서는 오염된 이미지와 크기가 같은 무작위 이미지 텐서입니다) 랜덤 텐서를 weird_function 함수에 입력해 똑같이 오염된 이미지를 가설이라고 부른다. a. [사실] 원본 이미지가 weird..

[Pytorch] 텐서와 Autograd

텐서(Tensor) - 텐서는 파이토치에서 다양한 수식을 계산하는 데 사용하는 가장 기본적 자료구조입니다. - 수학의 벡터나 행렬을 일반화한 개념으로, 숫자들을 특정한 모양으로 배열한 것입니다. - 텐서에는 '차원' 또는 '랭크'라는 개념이 있으며, 랭크가 0이면 숫자 하나인 스칼라, 랭크 1 텐서는 일렬로 숫자를 나열한 벡터, 랭크 2 텐서는 2차원 행렬, 랭크 3 텐서는 정육면체 같은 3차원 행렬로 이해하면 됩니다. 랭크가 2인텐서 말들어 보기 # 랭크 2 텐서 x = torch.tensor([[1,2,3],[4,5,6],[7,8,9]]) print(x) print(x.size(),x.shape, x.ndimension()) unsqueeze(), squeeze(), view() 함수로 텐서의 랭크와..

[딥러닝] 합성곱 신경망 모델 만들기 (MNIST 데이터)

합성곱신경망은 완전 연결 신경망 보다 훨씬 가중치가 작으면서도 이미지 분류 문제를 더 잘 해결한다. 합성곱 신경망 구조 데이터 세트 불러오기 import tensorflow as tf (x_train_all, y_train_all), (x_test, y_test) = tf.keras.datasets.fashion_mnist.load_data() 훈련 데이터 세트를 훈련세트와 검증세트로 나누기 from sklearn.model_selection import train_test_split x_train, x_val, y_train, y_val = train_test_split(x_train_all,y_train_all, stratify=y_train_all, test_size=0.2, random_state..

[딥러닝] 완전 연결 신경망 모델 만들기 (MNIST 데이터)

필요한 라이브러리 임포트하기 import tensorflow as tf import numpy as np import pandas as pd Mnist 이미지 데이터 불러오기 (x_train_all, y_train_all), (x_test, y_test) = tf.keras.datasets.fashion_mnist.load_data() x_train_all.shape 데이터 확인해보기 import matplotlib.pyplot as plt plt.imshow(x_train_all[0], cmap='gray') np.bincount(y_train_all) y_tain_all 기준으로 훈련데이터 나누기 from sklearn.model_selection import train_test_split x_tra..

[딥러닝] 텐서플로와 케라스를 활용한 신경망 구조

신경망의 기본적인 구조 # 신경망 모델 만들기 model = tf.keras.models.Sequential() # 완전 연결층 추가하기 model.add(tf.keras.layers.Dense(1)) # 옵티마이저와 손실 함수를 지정하기 model.compile(optimizer='sgd', loss='mse') # 훈련 데이터를 사용하여 에포크 횟수만큼 훈련시키기 model.fit(x, y, epochs = 10) 케라스는 인공신경망 모델을 만들기 위한 Sequential 클래스와 완전 연결층을 만들기 위한 Dense 클래스를 제공한다. Sequential 클래스는 이름의 의미 그대로 '순차적으로 층을 쌓는 신경망 모델' 이고 Dense 클래스는 모델에 포함된 완전 연결층 이다. Sequential ..

[딥러닝] 간단한 실습

필요 라이브러리 가져오기 import pandas as pd import numpy as np import tensorflow as tf 데이터 블러오고 NaN값 전처리 하기 data = pd.read_csv('gpascore.csv') data.isnull().sum() data['gre'] = data['gre'].fillna(data['gre'].sum()/len(data)) gre컬럼의 평균값으로 NaN값을 대체했다. rank라는 함수와 컬럼이름 'rank' 가 겹침으로 컬럼이름 변경 data.rename(columns={'rank':'ranking'}, inplace = True) 모델링할 종속변수와 독립변수들을 리스트형태로 만들기 y = data['admit'].values x = [] for..

[딥러닝] 손실함수 (loss function), 옵티마이저(Optimizer) 정리

손실 함수(loss function) 란? - 머신러닝 혹은 딥러닝 모델의 출력값과 사용자가 원하는 출력값의 오차를 의미 - 손실함수는 정답(y)와 예측(^y)를 입력으로 받아 실숫값 점수를 만드는데, 이 점수가 높을수록 모델이 안좋은 것 - 손실함수의 함수값이 최소화 되도록 하는 가중치(weight)와 편향(bias)를 찾는 것이 목표 1. binary_crossentropy (이항 교차 엔트로피) y값이 (ex. 0,1) 인 이진 분류기를 훈련할 때 자주 사용되는 손실 함수 (multi-label classification) 활성화 함수 : sigmoid 사용 (출력값이 0과 1사이의 값) 아래 함수에 예측값(Yi) 과 실제값(ti) 에 1을 대입하면, 수식은 0에 수렴하게 됨 아래 함수에 예측값(Y..

[딥러닝] 활성화 함수 정리

model = tf.keras.models.Sequential([ tf.keras.layers.Dense(64, activation='tanh') ]) 다음과 같이 딥러닝 모델의 레이어를 쌓을 때 활성화 함수를 반드시 설정해주어야 한다. 이번에는 어떤 각 자주쓰여지는 활성화 함수가 무엇이고, 어떤 특징이 있는지 살펴보자. 활성화 함수의 개념 활성화 함수(Activation Function)란 퍼셉트론(Perceptron)의 출력값을 결정하는 비선형(non-linear) 함수입니다. 즉, 활성화 함수는 퍼셉트론에서 입력값의 총합을 출력할지 말지 결정하고, 출력한다면 어떤 값으로 변환하여 출력할지 결정하는 함수입니다. 왜 non-liner변환이 필요한가? 신경망의 연산은 결국 곱셈의 연속인데 만약 계단 함수..

[Python] 유전체 정보 품종 분류 AI (Random Forest)

Dataset Info. train.csv [파일] id : 개체 고유 ID 개체정보 father : 개체의 가계 고유 번호 (0 : Unknown) mother : 개체의 모계 고유 번호 (0 : Unknown) gender : 개체 성별 (0 : Unknown, 1 : female, 2 : male) trait : 개체 표현형 정보 15개의 SNP 정보 : SNP_01 ~ SNP_15 class : 개체의 품종 (A,B,C) test.csv [파일] id : 개체 샘플 별 고유 ID 개체정보 father : 개체의 가계 고유 번호 (0 : Unknown) mother : 개체의 모계 고유 번호 (0 : Unknown) gender : 개체 성별 (0 : Unknown, 1 : female, 2 : m..

Python 2023.01.11

[Python] 따릉이 사용 예측 베이스라인 코드

라이브러리 로딩해오기 import pandas as pd from sklearn.ensemble import RandomForestRegressor 데이터 로밍 및 확인 train = pd.read_csv('따릉이/train.csv') test = pd.read_csv('따릉이/test.csv') train.info() train.head() 결측치 확인 및 0으로 전처리하기 train.isnull().sum() test.isnull().sum() train.fillna(0,inplace = True) test.fillna(0,inplace = True) 모델 정의 및 학습시키기 train_x = train.drop(['count'],axis = 1) train_y = train['count'] mode..

Python 2023.01.05