SVM을 사용한 당뇨병 예측 - 흥미로운 기계 학습 프로젝트

도메인 지식



이 경우, 우리는 당뇨병 여부와 함께 환자의 혈당 수치, 인슐린 수치와 같은 여러 가지 의료 정보로 모델을 훈련합니다. 이 케이스의 레이블입니다.

일단 이 데이터를 지원 벡터 머신 모델에 공급합니다. 우리 모델은 데이터를 그래프로 표시하려고 시도합니다.
데이터를 표시하면 초평면을 찾으려고 시도하므로 이 이미지에서 초평면을 볼 수 있습니다. 따라서 이 초평면이 이 두 데이터를 분리합니다.
그런 다음 이 모델에 새 데이터를 제공하면 특정 데이터를 이 두 그룹 중 하나에 넣으려고 합니다. 이를 통해 당뇨병 환자인지 비당뇨병 환자인지 예측할 수 있습니다.
"그래서 이 경우 bmi, 혈당 수치, 환자의 인슐린 수치 등과 같은 여러 의료 정보를 사용합니다."

이 프로젝트의 요구사항
→ 파이썬
→ 서포트 벡터 머신

먼저 Support Vector Machine에 대해 이야기하겠습니다.
SVM은 분류 및 회귀 문제에 사용되는 가장 인기 있는 감독 학습 알고리즘 중 하나입니다.
그러나 주로 기계 학습의 분류 문제에 사용됩니다.
SVM 알고리즘의 목표는 n차원 공간을 클래스로 분리할 수 있는 최상의 선 또는 결정 경계를 만들어 향후에 올바른 범주에 새 데이터 포인트를 쉽게 넣을 수 있도록 하는 것입니다. 이 최상의 결정 경계를 초평면이라고 합니다.



워크플로우





당뇨병 데이터 → 병원이나 환자로부터 데이터를 가져옵니다.

데이터 전처리 → 우리는 데이터를 분석하려고 시도할 데이터를 전처리해야 하며 이 데이터는 기계 학습 모델에 공급하기에 적합하지 않습니다. 많은 의료 정보와 우리는 이 모든 데이터가 동일한 브리지에 있기를 원합니다. 따라서 우리가 하는 일은 이 모든 데이터를 표준화하여 이 모든 데이터가 동일한 범위에 있도록 하는 것입니다.
그리고 이러한 모든 작업은 데이터 전처리에서 수행됩니다.

훈련-테스트-분할 → 훈련 데이터로 기계 학습 모델을 훈련한 다음 테스트 데이터의 도움으로 모델의 정확도 점수를 찾으려고 노력할 것입니다. 간단히 말해서 모델이 얼마나 잘 수행되고 있는지 알려줍니다.
그래서 한 번은 데이터를 교육 데이터와 테스트 데이터로 분할했습니다.

Vector Machine Classifier 지원 → 이제 SVM 분류기 모델에 데이터를 공급합니다. 우리는 이 모델이 환자가 당뇨병인지 비당뇨병인지를 분류하는 분류기 모델을 사용할 것입니다.
한 번, 우리는 그것을 훈련시켰습니다. 훈련된 SVM 분류기가 있습니다. 그래서 우리가 새로운 데이터를 줄 때. 따라서 이제 환자가 당뇨병인지 비당뇨병인지 예측할 수 있습니다.



코드 요약:




# Importing Dependencies

import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler #(standardize data to common range)
from sklearn.model_selection import train_test_split
from sklearn import svm
from sklearn.metrics import accuracy_score

# Loading the diabetes dataset to pandas dataframe
df=pd.read_csv("diabetes.csv")

# all data except labels
X= df.drop(columns="Outcome",axis=1)
y=df["Outcome"]

# train test split
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,stratify=y, random_state=2)

# Model Training
classifier=svm.SVC(kernel='linear')
classifier.fit(X_train,y_train)


Jupyter 파일 및 데이터세트용 Github 링크 : Click Here

좋은 웹페이지 즐겨찾기