머신러닝 2주차 숙제
- import
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
from sklearn.preprocessing import OneHotEncoder
- 데이터셋 로드
df = pd.read_csv('diabetes2.csv')
df.head(5)
- 전처리: 비어있는 행 확인
print(df.isnull().sum())
- x/y 데이터 분할
x_data = df.drop(columns=['Outcome'], axis=1)
x_data = x_data.astype(np.float32)
x_data.head(5)
y_data = df[['Outcome']]
y_data = y_data.astype(np.float32)
y_data.head(5)
- 전처리: 표준화
scaler = StandardScaler()
x_data_scaled = scaler.fit_transform(x_data)
print(x_data.values[0])
print(x_data_scaled[0])
- 학습/검증 데이터 분할
x_train, x_val, y_train, y_val = train_test_split(x_data_scaled, y_data, test_size=0.2, random_state=2021)
print(x_train.shape, x_val.shape)
print(y_train.shape, y_val.shape)
- 학습
model = Sequential([
Dense(1, activation='sigmoid') # sigmoid function 사용 # linear regression 실행 후 sigmoid 실행
])
model.compile(loss='binary_crossentropy', optimizer=Adam(lr=0.01), metrics=['acc']) # 손실함수 binary_crossentropyh # matrics: loss 값만 보기 어려울때, accuracy 정확도(0~1)
model.fit(
x_train,
y_train,
validation_data=(x_val, y_val), # 검증 데이터를 넣어주면 한 epoch이 끝날때마다 자동으로 검증
epochs=20 # epochs 복수형으로 쓰기!
)
0513 - 타임어택 과제
** point
1. learning rate 변화시켜서 두번 학습시킨것
: learning rate가 클때와 작을때의 장단점 생각해보기
2. optimizer
SGD는 학습이 제대로 안됐지만 Adam 사용한 경우 잘됨
: 각각 어떤 특징들이 있으며 어느경우에 어떤 것을 사용해야할까?
-> 나중에 튜터님께 물어보기
3. 데이터 전처리
: 이번에는 표준화(standardscaler)를 사용했는데 새로운 데이터를 넣을 때도 전처리를 시켜서 입력시킬 것
- code
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
df = pd.read_csv('HappinessAlcoholConsumption.csv')
df.shape
df.head()
x_data = np.array(df[['Beer_PerCapita']], dtype=np.float32)
y_data = np.array(df['HappinessScore'], dtype=np.float32)
print(x_data.shape)
print(y_data.shape)
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
x_data_scaled = scaler.fit_transform(x_data)
print(x_data)
print(x_data_scaled[0])
x_data = x_data.reshape((-1, 1))
y_data = y_data.reshape((-1, 1))
print(x_data.shape)
print(y_data.shape)
x_train, x_val, y_train, y_val = train_test_split(x_data, y_data, test_size=0.2, random_state=2021)
print(x_train.shape, x_val.shape)
print(y_train.shape, y_val.shape)
model = Sequential([
Dense(1)
])
model.compile(loss='mean_squared_error', optimizer=Adam(lr=0.1))
model.fit(
x_train,
y_train,
validation_data=(x_val, y_val), # 검증 데이터를 넣어주면 한 epoch이 끝날때마다 자동으로 검증
epochs=100 # epochs 복수형으로 쓰기!
)
model.compile(loss='mean_squared_error', optimizer=Adam(lr=0.001))
model.fit(
x_train,
y_train,
validation_data=(x_val, y_val), # 검증 데이터를 넣어주면 한 epoch이 끝날때마다 자동으로 검증
epochs=100 # epochs 복수형으로 쓰기!
)
y_pred = model.predict(x_val)
plt.scatter(x_val, y_val)
plt.scatter(x_val, y_pred, color='r')
plt.show()
# 맥주소비량 1000일 때 행복지수 예측값 알아보기
x_test = 1000
# 데이터 전처리 과정 - 표준화
# x = (x - 평균) / 표준편차
x_data = np.array(df[['Beer_PerCapita']], dtype=np.float32)
x_data_mean = x_data.mean()
x_data_std = x_data.std()
x_test = (x_test - x_data_mean ) / x_data_std
y_pred = model.predict([x_test])
print(y_pred)
'AI 웹 개발 과정 > 개인 프로젝트' 카테고리의 다른 글
django_tutorial 01. | vs code에서 django 기본 구성 세팅 하기 (0) | 2022.05.28 |
---|---|
개인 프로젝트 05 : 타임어택 미션 - 강아지와 고양이 이미지 분류 (0) | 2022.05.25 |
개인 프로젝트 04 : turtlestagram | 회원가입, 로그인 페이지 구현 (0) | 2022.05.15 |
개인 프로젝트 03 : 타임어택 미션 - 회원가입/로그인 페이지 만들기 (0) | 2022.05.08 |
개인 프로젝트 02 : 인스타 UI 클론 코딩 - 3일차 제출 (1) | 2022.05.02 |