[Kaggle] Brain stroke prediction _ decisiontree

YeoJin, Song·2022년 8월 14일
0

Kaggle

목록 보기
1/2

NoteBook 링크

이번에는 마찬가지로 Kaggle에 올라와 있는 Brain stroke prediction 코드에 관해서 공부를 할 것이다. decision tree(의사결정트리) 방식을 사용했다고 한다.

중요한 코드만 추려서 글을 쓰려고 한다.

gender = df.groupby(df['gender'])['stroke'].sum() #groupby 함수를 이용해서 gender카테고리를 묶고 그 중 stroke인 것만 sum
df_gender = pd.DataFrame({'labels': gender.index,
                   'values': gender.values
                  }) #gender의 index를 label로 지정하고 값을 그대로 지정
colors = ['lightpink', 'lightskyblue'] #색깔 지정
df_gender.iplot(kind='pie',labels='labels',values='values', title='The Proportion of Stroke among Gender', colors = colors)

이것은 Gender(성별)에 따른 뇌졸중 발생 비율 시각화 코드이다.
특정 feature에 대한 그래프를 그릴 때 활용하면 좋을 코드인 것 같아서 포스팅하게 되었다.

위 코드를 실행하면 이렇게 원그래프가 나오게 된다.

그 외에도 결혼 여부, 시골/도시 거주, 흡연 여부 등등 여러 요소를 시각화할 수 있다.

stroke = df.loc[df['stroke']== 1].reset_index() #stroke가 1인 곳에 위치한 데이터들의 인덱스를 초기화시켰다.

stroke["male_age"]=stroke[stroke["gender"]=="Male"]["age"] #stroke 데이터 중 gender가 male인 것들의 나이 데이터를 따로 묶었다.
stroke["female_age"]=stroke[stroke["gender"]=="Female"]["age"]
stroke[["male_age","female_age"]].iplot(kind="histogram", bins=20, theme="white", title="Stroke Ages",
         xTitle='Ages', yTitle='Count') #두 나이 데이터를 히스토그램 그래프로 구현하였다.

이 코드는 여성과 남성의 나이에 따른 뇌졸중 발생 비율을 시각화한 코드이다. 맨 처음 코드를 보면 reset_index를 진행한 것을 알 수 있는데, 왜 index를 초기화한 것인지 궁금했다.

여성과 남성의 나이라는 새로운 feature가 등장한 것이기 때문에 따로 뇌졸중이 발생한 곳만 새로운 인덱스를 부여한다.

df['ever_married'] = [ 0 if i !='Yes' else 1 for i in df['ever_married'] ] #만약 yes가 아니면(no) 0 yes이면 1로 변환
df['gender'] = [0 if i != 'Female' else 1 for i in df['gender']] #female이 아니면(male) 0 female이면 1로 변환
df.head(5)
#숫자형 데이터로 바꾸는 과정인듯. 머신러닝 할 때 기계가 이해할 수 있게!

문자형 데이터를 숫자형 데이터로 변환한다. 이것도 머신러닝 과정에서 중요한 단계라고 생각해 포스팅하였다.

df = pd.get_dummies(df, columns = ['work_type', 'Residence_type','smoking_status']) #get dummies는 가변수를 만든다.
df.sample(5)

이 코드는 더미 변수를 만드는 코드이다. 더미 변수를 왜 만드는지도 궁금하여 찾아 보았다.

단순히 수치형 데이터로만 바꾼다면 서로 관계성이 생기게 된다. 예를 들어 사과를 1, 바나나를 2, 포도를 3이라고 한다면 1+2=3이라는 관계성이 생긴다. 하지만 실제로 이들 사이에는 그러한 관계가 없다. 이처럼 잘못된 학습이 일어날 수 있으므로 더미 가변수를 만들어 방지한다.

       
profile
fake traveler

0개의 댓글