TIL 6주 1일차 (머신러닝 실습)

노우석·2022년 10월 11일
0

Colab 을 이용한 머신러닝 실습하기

https://colab.research.google.com/drive/1w3YuzGL7UYZ6wTR_q8rGDPkeanUxOR1V#scrollTo=pc5btn1h49bo <<colab주소

캐글을 이용한 선형회귀 실습하기 (keras)

1. 우선 캐글을 가입하고 원하는 데이터셋을 다운받는다.

2. 데이터셋 api를 복사해서 실행하기 전에 환경변수를 지정해줘야 한다.

import os
os.environ['KAGGLE_USERNAME'] = '[내_캐글_username]' # username
os.environ['KAGGLE_KEY'] = '[내_캐글_key]' # key

안에 있는 유저네임이나 키값은 로그인하고 내 프로필 클릭 Account 탭에 들어가서 API - Create New API Token 클릭해서 kaggle.json 파일 다운로드를 받으면 안에 정보가 저장되어 있으니 복사해서 가져온다.

3.원하는 데이터셋의 API를 복사해 와 실행하기

원하는 데이터셋 화면에 들어가서 상단에 설정 들어가서 API주소를 복사해서 선언한다. 참고로 !를 적어야 시스템 명령어로 들어가기 때문에 반드시 붙여줘야한다.

!kaggle datasets download -d ashydv/advertising-dataset

4.데이터셋을 실행하고 난 뒤 데이터셋 압축파일 풀어주기

!unzip /content/advertising-dataset.zip

5.필요한 라이브러리들 임포트 하기

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

6.데이터셋 불러와서 형태 확인하기

df = pd.read_csv('데이터셋이름'.csv')
df.head(5) ## 데이터셋 안에 위에 5개의 행 출력해서 확인하는 코드

7.데이터셋 가공하기

x_data = np.array(df[['데이터셋 안에 컬럼(입력값)']], dtype=np.float32) ## 소수점으로 받기 때문에 float를 사용한다.
y_data = np.array(df['데이터셋 안에 컬럼(출력값)'], dtype=np.float32)

print(x_data.shape)
print(y_data.shape)

x_data = x_data.reshape((-1, 1))
y_data = y_data.reshape((-1, 1))

print(x_data.shape)
print(y_data.shape)

8.데이터셋을 학습 데이터와 검증 데이터로 분할하기

x_train, x_val, y_train, y_val = train_test_split(x_data, y_data, test_size=0.2, random_state=2021) ## test_size=0.2는 나머지 0.8은 학습데이터로 사용하고 검증데이터로는 0.2로 쓰겠다는 코드이다.

print(x_train.shape, x_val.shape)
print(y_train.shape, y_val.shape)

9.학습시키기

model = Sequential([
Dense(1)
]) ## 선형회귀 방식 모델 , 나중에 배울 다중에서는 입력값에 따라 Dense 옆 숫자를 바꿔줘야한다.

model.compile(loss='mean_squared_error', optimizer=Adam(lr=0.1)) ## Adam 모듈을 사용했다. SGD모듈 도 가능하지만 보편적으로 Adam을 많이 사용한다. 괄호안에는 러닝 레이트이다 손실률이 차이가 많이 난다면 러닝 레이트를 바꿔주는게 좋다.

model.fit(
x_train,
y_train,
validation_data=(x_val, y_val), ## 검증 데이터를 넣어주면 한 epoch이 끝날때마다 자동으로 검증
epochs=100 ## epochs 복수형으로 쓰기!
)

10. 검증한 데이터로 예측해보기

y_pred = model.predict(x_val) ## 검증 데이터 X밸류값을 Predict 모듈안에 넣어서 예측값을 만든다.

plt.scatter(x_val, y_val) ## scatter는 그래프를 만들때 사용하는 함수이며 y_val값이기 때문에 결과값을 보여준다.
plt.scatter(x_val, y_pred, color='r') ## y_pred이기 때문에 위에 검증한 데이터로 예측값을 그래프로 보여준다.
plt.show() ## 그래프를 보여줘

최종 코드

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('advertising.csv')

x_data = np.array(df[['데이터셋의 칼럼(입력값)', '데이터셋의 칼럼(입력값)', 데이터셋의 칼럼(입력값)']], dtype=np.float32)
y_data = np.array(df['데이터셋의 칼럼(출력값)'], dtype=np.float32)

x_data = x_data.reshape((-1, 3))
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),
epochs=100 # epochs
)

profile
중요한건 버그에게 꺾이지 않는 마음

0개의 댓글