[케라스] 암 분류기 , 당뇨병 분류기 파이썬 코드

2020. 4. 18. 10:37노트/Python : 프로그래밍

암분류기 

데이터 

 

ThoraricSurgery.csv
0.02MB

맨 오른쪽

#1: 수술후 생존, 0: 사망 

 

코드

import tensorflow as tf

seed=123
np.random.seed(seed)
tf.set_random_seed(seed)

path = "C:\\Users\\student\\Desktop\\DY\\★ 데이터\\105. deep-learning-dataset\\"
dataset=np.loadtxt(path+"ThoraricSurgery.csv", delimiter =",")

dataset

>>>
array([[293.  ,   1.  ,   3.8 , ...,   0.  ,  62.  ,   0.  ],
       [  1.  ,   2.  ,   2.88, ...,   0.  ,  60.  ,   0.  ],
       [  8.  ,   2.  ,   3.19, ...,   0.  ,  66.  ,   1.  ],
       ...,
       [406.  ,   6.  ,   5.36, ...,   0.  ,  62.  ,   0.  ],
       [ 25.  ,   8.  ,   4.32, ...,   0.  ,  58.  ,   1.  ],
       [447.  ,   8.  ,   5.2 , ...,   0.  ,  49.  ,   0.  ]])
       
np.shape(dataset)
>>> (470, 18)

 

# 트레이닝 테스트 데이터 분리 
xtrain=dataset[:400,0:17]
ytrain=dataset[:400,17] # 1: 수술후 생존, 0: 사망 
xtest=dataset[400:,0:17]
ytest=dataset[400:,17]

# 모델 생성 
model = Sequential()
model.add(Dense(30, input_dim = 17, activation='relu'))
model.add(Dense(1, activation = 'sigmoid'))

# 모델 학습 
model.compile(loss = 'mean_squared_error',optimizer = 'adam',metrics =['accuracy'])
model.fit(xtrain,ytrain, epochs=30, batch_size=10)

# 비용및 정확도 확인 ** 테스트 데이터 셋으로 평가
print("cost:"+str(model.evaluate(xtest,ytest)[0]),"\naccuracy:"+str(model.evaluate(xtest,ytest)[1]))

>>>
70/70 [==============================] - 0s 43us/step
70/70 [==============================] - 0s 57us/step
cost:0.21242533879620687 
accuracy:0.7857142686843872

 


당뇨병 분류기 

데이터

pima-indians-diabetes.csv
0.02MB

 

from keras.models import Sequential 
from keras.layers import Dense
import numpy as np 

np.random.seed(42)
tf.set_random_seed(42)

path="C:\\Users\\student\\Desktop\\DY\\★ 데이터\\105. deep-learning-dataset\\"

data = np.loadtxt(path+"pima-indians-diabetes.csv",delimiter=",")
data 
>>>
array([[  6.   , 148.   ,  72.   , ...,   0.627,  50.   ,   1.   ],
       [  1.   ,  85.   ,  66.   , ...,   0.351,  31.   ,   0.   ],
       [  8.   , 183.   ,  64.   , ...,   0.672,  32.   ,   1.   ],
       ...,
       [  5.   , 121.   ,  72.   , ...,   0.245,  30.   ,   0.   ],
       [  1.   , 126.   ,  60.   , ...,   0.349,  47.   ,   1.   ],
       [  1.   ,  93.   ,  70.   , ...,   0.315,  23.   ,   0.   ]])


x=data[:,0:8]
y=data[:,8]

print(x.shape)
print(y.shape)

>>>(768, 8)
(768,)

 

모델 생성 

model=Sequential()
model.add(Dense(12,input_dim=8,activation='relu'))
model.add(Dense(8,activation='relu'))
model.add(Dense(1,activation='sigmoid'))

model.compile(loss = "binary_crossentropy", optimizer="adam", metrics =["accuracy"])

#batch_size: weight 업데이트할때 몇개의 데이터를 읽겠느냐 
model.fit(x,y,epochs=200,batch_size=10)

 

모델 평가 

print("cost:")
print(model.evaluate(x,y)[0])
print("\naccuracy:")
model.evaluate(x,y)[1]