행위

머신러닝 나이브 베이지언

DB CAFE

thumb_up 추천메뉴 바로가기


<수치형 데이터 처리>

이번에는 나쁜 건강상태이면 암이 발생될 확률을 계산해보자

나쁜 건강상태 측정 대상에는 혈압, 콜레스테롤 수치, 지방 수치 등이 있을 것이다

𝑃(𝐴)는 암이 발생할 확률이다.

조사 대상 전체에서 암이 발생한 확률을 구하면 된다

𝑃(𝐵)는 나쁜 건강상태일 확률이다.

혈압, 콜레스테롤 수치, 지방 수치 등이 각각 나쁠 확률을 구하여 곱한다.

문제는 자료가 수치형이므로 어느 정도가 나쁜지를 결정하기 어렵다는 것이다

따라서 연속적인 수치를 구획으로 나누어야 한다

어떤 수치를 넘었을 때 암 발생률이 높아지는지를 찾는다

그 구간을 기준으로 좋은 상태와 나쁜 상태를 구분 짓는다

<사용>

파이썬에서 나이브 베이즈 알고리즘을 돌려본다

아래의 데이터는 건강상태에 따라 암에 걸릴 수 있는 가능성을 기록한 것이다

자료는 암 발생 여부를 기록한 데이터이며, C:/pytest 폴더에 넣으면 된다

샘플데이터 다운로드

import os

import pandas as pd

from sklearn.model_selection import train_test_split

​

os.chdir("C:/pytest")

dataset = pd.read_csv('cancer.csv')

X = dataset.iloc[:, 0:30]

y = dataset.iloc[:, 30]

​

X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y)

​

from sklearn.naive_bayes import GaussianNB

gnb = GaussianNB()

gnb.fit(X, y)

​

print("prediction:", gnb.predict(X_test))

print("훈련 데이터 점수:", gnb.score(X_train, y_train))

print("테스트 데이터 점수(반올림):", round(gnb.score(X_test, y_test), 3))