파이썬초보입니다 딥러닝 질문이있습니다

조회수 451회

딥러닝초보라 심장마비 엑셀 데이터셋을 받아서 연습해봤습니다. 근데 sex종목 같은 경우 M,F 자연어로 나가서 에러가 나는거같습니다. 그래서 여러모로 검색해봐서 원핫코딩? 같은걸 해야되는거같던데 잘안되서 질문드립니다. 이런경우 어떻게 해야할까요? 고수님들의 팁이필요합니다

import tensorflow as tf
import os
import pandas as pd
import numpy as np

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'

data = pd.read_csv("heart.csv")
data = data.dropna()

ydata = data['HeartDisease'].values
xdata = []

for i, rows in data.iterrows():
    xdata.append([rows['Age'], rows['Sex'], rows['ChestPainType'], rows['RestingBP'], rows['Cholesterol'], rows['FastingBS'],
                  rows['RestingECG'], rows['MaxHR'], rows['ExerciseAngina'], rows['Oldpeak'], rows['ST_Slope']])

xdata = np.array(xdata)
ydata = np.array(ydata)

model = tf.keras.models.Sequential([tf.keras.layers.Dense(64, activation='sigmoid'),
                                    tf.keras.layers.Dense(128, activation='sigmoid'),
                                    tf.keras.layers.Dropout(0.2),
                                    tf.keras.layers.Dense(1, activation='sigmoid')
])

model.compile(optimizer='Adam', loss='binary_crossentropy', metrics=['accuracy'])
model.fit(xdata, ydata, epochs=1)
result = model.evaluate(xdata, ydata, verbose=2)

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

    1. iterrows 로 for 루프 돌릴필요 없습니다. pandas dataframe 을 for 루프 돌리는 습관 좋지 않아요.
    2. xdata = data[["Age", "Sex", "ChestPainType", ..., "ST_Slope"]] 이렇게 하면 됩니다. 보통 또 많이 쓰는 코드는 타겟컬럼이 마지막에 있다고 할 때, xdata = data.iloc[:,:-1] 이런 코드도 많이 씁니다. (마지막 컬럼만 빼버림)
    3. xdata["Sex"] 만 문자로 되어 있다면, 0, 1 수치로 바꾸어 주면 됩니다. xdata["Sex"] = xdata["Sex"].map({"M":1, "F":0})

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)