#예제
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import numpy as np
import tensorflow as tf
seed=0
np.random.seed(3)
tf.random.set_seed(3)
Data_set=np.loadtxt("/content/drive/MyDrive/Colab Notebooks/dataset/ThoraricSurgery.csv",delimiter=",")
X=Data_set[:,0:17]
Y=Data_set[:,17]
model= Sequential()
model.add(Dense(30, input_dim=17,activation='sigmoid'))
model.add(Dense(1,activation = 'sigmoid'))
model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])
model.fit(X,Y,epochs=30,batch_size=10)
print('\n Accuracy: %.4f'%(model.evaluate(X,Y)[1]))
keras는 거의 모든 종류의딥러닝 모델의 프로토타입을 빠르게 만들수 있음
(컴퓨터비전을 위한)cnn 시퀀스처리를위한 rnn 을 지원하며 이둘을 자유롭게 조합하여 사용가능
딥러닝의 모델을 설정하고 구동하는 부분은 모두 modl 이라는 함수를 선언하며 시작
모델을 정희하는 방법은 2가지 인데 sequrntial 클래스(가장 자주사용하는 구조인 층을 순서대로 쌓아 올린 네트워크) 또는 함수형 api
#예제 시그모이드
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Activation, Dense
import numpy as np
from tensorflow.keras import optimizers
import tensorflow as tf
seed=0
np.random.seed(0)
tf.random.set_seed(0)
training_data =np.array([[0,0],[0,1],[1,0],[1,1]] ,'float32')
target_data=np.array([[0],[1],[1],[0]] ,'float32')
model= Sequential()
#노드 4개 2는 x데이터 갯수
model.add(Dense(4, input_dim=2,activation='sigmoid'))
model.add(Dense(1,activation = 'sigmoid'))
model.compile(loss='binary_crossentropy',optimizer=optimizers.Adam(lr=0.1),metrics=['accuracy'])
model.fit(training_data,target_data,epochs=50,verbose=2)
print(model.predict(training_data))
print('\n Accuracy: %.4f'%(model.evaluate(training_data ,target_data)[1]))
#선형회귀 데이터 케라스로 학습하고 그래프 표현하기
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Activation, Dense
from tensorflow.keras.optimizers import RMSprop
from mpl_toolkits.mplot3d import Axes3D
raw_data=np.loadtxt("/content/drive/MyDrive/Colab Notebooks/dataset/Blood_fat.csv",delimiter=",")
xs=np.array(raw_data[:,0], dtype=np.float32)
ys=np.array(raw_data[:,1], dtype=np.float32)
zs=np.array(raw_data[:,2], dtype=np.float32)
x_data=np.array(raw_data[:,0:2], dtype=np.float32)
y_data=np.array(raw_data[:,2], dtype=np.float32)
y_data=y_data.reshape((25,1))
rmsproop=RMSprop(lr=0.01)
model= Sequential()
#히든레이어 없이 입력
model.add(Dense(1,input_shape = (2,)))
model.compile(loss='mse',optimizer=rmsproop)
model.summary()
hist=model.fit(x_data,y_data,epochs=1000)
print(hist.history.keys())
print('100KG, 40세 혈중지방함량치=',model.predict(np.array([100,40]).reshape(1,2)))
print('60KG, 25세 혈중지방함량치=',model.predict(np.array([60,25]).reshape(1,2)))
W_,b_=model.get_weights()
#x=np.linspace(start,stop,num).start 배열이시작,끝 값 num은 시작과 끝사이의간격
#num을 생략하면 디폴트로 50개의 수열, 즉 1차원 배열을 만들어 줍니다
#20~100까지 50개를 만듦
x=np.linspace(20,100,50).reshape(50,1)
y=np.linspace(10,70,50).reshape(50,1)
#10~70 까지 50개를 만듦
print('x=',x.shape)
print('y=',y.shape)
#numpy 배열들을 하나로 합치는데 이용
#나이와 몸무게를 하나의 2차원 배열로 만듦
X=np.concatenate((x,y),axis=1)
print('X=',X.shape)
#예측치
Z=np.matmul(X,W_)+b_
fig=plt.figure(figsize=(12,12))
ax=fig.add_subplot(111,projection='3d')
#예측 데이터
ax.scatter(x,y,Z)
#실제 데이터
ax.scatter(xs,ys,zs)
ax.set_xlabel('Weight')
ax.set_ylabel('Age')
ax.set_zlabel('Bllod Fat')
ax.view_init(15,15)
plt.show()
#실습하기 인터넷에서 데이터셋을 구해서 실습하기로 했고
나는 서울 자전거의 그날 기온, 시계에 따른 대여횟수를 선형데이터로 보고 학습했다
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Activation, Dense
from tensorflow.keras.optimizers import RMSprop
from mpl_toolkits.mplot3d import Axes3D
raw_data=np.loadtxt("/content/drive/MyDrive/Colab Notebooks/dataset/SeoulBikeData.csv",delimiter=",")
xs=np.array(raw_data[:,1], dtype=np.float32) #온도
ys=np.array(raw_data[:,2], dtype=np.float32) #시계
zs=np.array(raw_data[:,0], dtype=np.float32) #총 대여시간
x_data=np.array(raw_data[:,1:], dtype=np.float32)
y_data=np.array(raw_data[:,0], dtype=np.float32)
y_data=y_data.reshape((8760,1))
rmsproop=RMSprop(lr=0.01)
model= Sequential()
model.add(Dense(1,input_shape = (2,)))
model.compile(loss='mse',optimizer=rmsproop)
model.summary()
hist=model.fit(x_data,y_data,epochs=100)
print(hist.history.keys())
W_,b_=model.get_weights()
x=np.linspace(-50,100,100).reshape(100,1)#온도
y=np.linspace(0,2000,100).reshape(100,1) # 시계
print('x=',x.shape)
print('y=',y.shape)
X=np.concatenate((x,y),axis=1)
print('X=',X.shape)
#예측치
Z=np.matmul(X,W_)+b_
print('W는',W_)
print('b는',b_)
fig=plt.figure(figsize=(12,12))
ax=fig.add_subplot(111,projection='3d')
#예측 데이터
ax.scatter(x,y,Z)
#실제 데이터
ax.scatter(xs,ys,zs)
ax.set_xlabel('Temperature')
ax.set_ylabel('Visibility')
ax.set_zlabel('Rented Bike count')
ax.view_init(15,15)
plt.show()
'First step > AI 기초반' 카테고리의 다른 글
[TIL]21.07.13 웹크롤링 (0) | 2021.07.13 |
---|---|
[TIL] 21.07.13pandas 사용, (0) | 2021.07.13 |
[TIL] 21.07.09퍼셉트론,Relu ,실습 (0) | 2021.07.09 |
[TIL]21.07.08로지스틱 회귀2 , 퍼셉트론 (0) | 2021.07.08 |
[TIL] 21.07.07로지스틱 회귀 (0) | 2021.07.07 |