초보 개발자

머신러닝 본문

AI 웹개발 트랙 - 내배캠/4주차

머신러닝

taehyeki 2022. 1. 6. 19:05
 
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import Adam, SGD
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt 
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

보통 기본적으로 쓰이는 모듈들이다.

sequential은 모델을 정의할 때 쓰고, dense는 가설을 구현할 때 쓰고

케라스는 넘파이 어레이를 입력받기 때문에 넘파이를 쓴다.

판다스는 csv파일을 읽어올 때 사용한다.

matplotlib은 그래프 그릴 때 사용한다. seaborn도 마찬가지

train_test_split은 데이터에서 트레이닝, 테스트를 나눠준다.

선형에서는 dense 1을쓴다. 분류에선 [1 0 0]과 같 다면 3

 

df.shape를 하면 모양을 알 수 있다. (200, 4) 이면 리스트 안에 리스트행이 200개 있고 각 리스트 행안에 4개의 열에 있다는 뜻(공백을 기준) 콤마 없음

 

 

인풋 하나 아웃풋 하나

데이터를 읽어올 때는df =  pd.reac_csv('csv파일명') 을 입력해온다.

 

pairplot에 첫번째 인자에는 판다스로 읽어온 파일 df를, 두번째에는 x_vars=[] 각 열의 이름들을 넣어 y에 매출과 비교하면 상관관계를 나타내는 점표를 보여준다. height는 크기

 

TV는 인풋데이터 Sales는 아웃풋 데이터 df에서 각각 추출 하여 넘파이 어레이안에 넣어줌(케라스는 넘파이 어레이만취급) 그리고 데이터 타입도 지정해준다. reshape는 shape을 맞춰주기 위해서이다. -1을 넣으면 전에 있던 숫자가 고정으로 들어오고 뒤를 1로지정하면 1열만 지정해주는 것이다.

 

x학습 x검증, y학습, y검증을 만들어 준다. 

fit은 모델을 학습시키는 것이다. 가설에 정답값을 맞춘다.

 

 

 

 

x_data = np.

 

 

인풋 여러개 아웃풋 하나

아깐 TV만썻지만 지금은 여러개

나머지는 마찬가지이다.

 

shape도 3으로 지정,

 

 

여러데이터와 아웃풋이 0과 또는 1 

 

standardscaler는 데이터 표준화를 위해 사용한다.

먼저 csv파일을 불러오고

사용하는 항목만 읽어온다

sns를 활용해서 데이터를 볼 수 있음. hue는 카테고리?를 만들어줌

기존의 0과 1이면 이제는 0과 1에서도 생존자, 사망자를 보여줌

만약 널값이 있다면 삭제해주어야 하니 이걸로 확인

df.dropna()를 하면 널값을 지워줌

 

df에서 생존자 열을 제외하고 그걸 x_data에 담는다. 생존자는 아웃풋이기 때문,

그리고 타입을 float32로 바꿔준다. 근데 np.array로는 안하는지 의문

y_data에는 생존자만을 담는다. 그리고 이 역시 float로 바꿔준다.

그리고나서 표준화를 시켜준다.

표준화는 x_data만 시켜주면 된다. 표준화는 만약 x의 데이터 a b 가 각각 50씩일때 a는 만점이 100점기준, b는 500점 기준이라면 값은 같더라도 기준이 다르기때문에 다르게 생각해야된다. 표준화는 이를 정리해준다.

학습,검증 데이터를 뽑아준다. 

 

결과가 1또는 0으로 나오기에 dense는 1 그리고 0과 1사이의 값만 내보내기에 activation은 sigmoid를 사용한다.

그리고 0이냐 1이냐를 구분하기 위한 것이니까 loss에 binary_crossentropy를 사용한다.

 

로스값만으로는 잘 모르기때문에 메트릭스 옵션을 줘서 더 정확히 알 수 있다.

 

여러데이터와 아웃풋이 여러개 (1,2,3)

onehotencoder만 추가해줬다.

마찬가지로 

불러오고

열의 이름을 지정할 수 있음

sns를 사용하여 name의 종류를 알 수 있다.

 

비어있는 값이 있는지 확인하고 없으면 넘어가자

우리가 불류해야될 게 이름이니까 이름을 제외한 데이터를 x에두고 float으로 변경

y_data에는 name만 넣어주어야함 마찬가지로 float으로 변경

표준화도 진행시켜줌

원핫인코딩을 y데이터에만 시켜주어야함.  분류를 해야되기 때문,

1이면 첫번째가 1 0 0 2면 0 1 0 3이면 0 0 3이런식

데이터 분리

출력이 3개 즉 와인 세종류를 예측해야하니까 dense가 3이다.

그리고 다항이니까 softmax를사용  손실함수도 이진과 다르게 여러개로 나오니까 categorical_crossentropy를 사용한다.

'AI 웹개발 트랙 - 내배캠 > 4주차' 카테고리의 다른 글

파이썬 스택 Stack 간단구현!  (0) 2022.01.07
딥러닝 xor  (0) 2022.01.07
np.random.seed(int)  (0) 2022.01.06
df drop  (0) 2022.01.06
flask 이미지 업로드 방식 3 aws s3사용  (0) 2022.01.05