Practice makes perfect!

[모두의 딥러닝] 11장 데이터 다루기 본문

Study/딥러닝

[모두의 딥러닝] 11장 데이터 다루기

na0dev 2021. 5. 29. 12:47

csv 파일에는 데이터를 설명하는 한 줄이 맨 처음에 나옴(헤더)
우리가 가진 csv 파일에는 헤더가 없기 때문에, name 함수를 통해 속성별 키워드 지정

df = pd.read_csv('../dataset/pima-indians-diabetes.csv',names=["pregnant","plasma","pressure","thickness",
                                                               "insulin","BMI","pedigree","age","class"])

# 정보별 특징을 더 자세히 확인
샘플수, 평균, 표준편차, 최솟갑, 백분위 수에 해당하는 값, 최댓값 보여줌.

print(df.describe())
import matplotlib.pyplot as plt # 그래프를 그리기 위한 라이브러리
import seaborn as sns # matplotlib을 기반으로 더 정교한 그래프를 그리게 도와주는 라이브러리

# 그래프의 크기 결정
plt.figure(figsize=(12,12))

# heatmap() 함수
각 항목 간의 상관관계를 나타냄. 두 항목씩 짝을 지은 뒤 각각 어떤 패턴으로 변화하는지 관찰.
두 항목이 전혀 다른 패턴으로 변화하고 있으면 0, 비슷한 패턴으로 변화할수록 1에 가까운 값 출력

sns.heatmap(df.corr(),linewidths=0.1,vmax=0.5, cmap=plt.cm.gist_heat, linecolor='white',annot=True)

 # vmax는 색상의 밝기 조절하는 인자
 cmap은 미리 정해진 matplotlib 색상의 설정값 불러옴.

class 항목을 보면 plasma항목과 가장 상관관계가 높음
-> plasma항목이 결론을 만드는 데 가장 중요한 역할을 한다고 예측가능.

 

# plasma와 class 항목만 떼어 두 항목간의 관계를 그래프로 그림.

grid = sns.FacetGrid(df,col='class') grid.map(plt.hist,'plasma',bins=10)

당뇨병 환자(class = 1)를 보면 plasma 수치가 150 이상인 경우가 많다는 것을 알 수 있음

 

 


# seed 값 생성

random 함수는 컴퓨터 안에 내장된 수많은 랜덤 테이블 중 하나를 불러내 그 표의 순서대로 숫자를 보여줌.

seed 값을 설정하는 것은 랜덤 테이블 중 몇 번째 테이블을 불러올지 정하는 것

-> seed 값이 같으면 같은 랜덤 값 출력! reproduction하기 위해 seed를 고정

np.random.seed(3)
tf.random.set_seed(3)

# 3개의 층 생성

# 은닉층 + 입력층, 8개 입력데이터 가져옴, 12개 노드, 활성화 함수로 relu 사용
model.add(Dense(12,input_dim=8,activation='relu')) 

# 은닉층, 8개 노드, 활성화 함수로 relu 사용
model.add(Dense(8,activation='relu')) 

# 출력층, 1개 노드, 활성화 함수로 sigmoid 사용
model.add(Dense(1,activation='sigmoid')) 

# 모델 컴파일
두 개의 예측값(당뇨병(1), 아님(0))을 갖기 때문에 오차함수로 binary_crossentropy 사용

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

 

 

 

 

반응형
Comments