import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
###전처리 완료한 자료받아오기
df=pd.read_csv("C:/data/diabetes3.csv",encoding="utf-8")
#iloc 정수위치 기반 행, 컬럼 선택 메서드
y=df.iloc[ : ,[-1]] #당뇨여부.. 정답
X=df.iloc[:, :-1] #속성명 8개
print(df)
###학습 자료와 테스트 자료 나누기
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0,shuffle=True)
print("학습자료",X_train)
print("정답",y_train)
#학습과 예측을 위해 pipe 라인이용하여 모델 생성
#파이프라인을 통해 표준편차, 회귀분석을 함께하여 데이터 누수를 방지함
model=Pipeline([("scaler",StandardScaler()),("clf",LogisticRegression())])
model.fit(X_train, y_train.values.ravel()) #1차원벡터로 펴주는역할(ravel)
"""
비포 (2차원): [[1], [0], [1], [0]] (세로로 긴 상자들)
애프터 (1차원): [1, 0, 1, 0] (옆으로 쭉 늘어선 데이터)
\사이킷런의 fit()
"""
print("정확도 = ",model.score(X_test,y_test)) #테스트자료로 30%
#특정 환자의 자료를 입력하여 당뇨 여부 확인
a = int(input("임신 횟수: "))
b = int(input("경구 포도당 내성 검사에서 2시간 후 혈장 포도당 농도: "))
c = int(input("이완기 혈압 (mm Hg): "))
d = int(input("삼두근 피부 두께 (mm): "))
e = int(input("2시간 혈청 인슐린 (mu U/ml): "))
f = float(input("체질량지수 (kg/m²): "))
g = float(input("당뇨병 가족력 함수 (가족력을 기반으로 당뇨병 발병 가능성을 예측하는 지표): "))
h = int(input("나이 (년): "))
new = pd.DataFrame([[a,b,c,d,e,f,g,h]], columns=X.columns)
#model이 있기 때문에 scalar.transform을 호출할 필요가 없음
#파이프라인을 통해 표준편차, 회귀분석을 동시 진행
#반환 형태: [[0인 확률, 1인 확률]] 형태의 2차원 배열을 반환
#predict_proba: [[Class 0 확률, Class 1 확률]]
proba=model.predict_proba(new)
"""
diabetes=proba[0][0] #0이면 당뇨
normal=proba[0][1] #1이면 정상
"""
#순서 바꿔도 상관 없음
normal=proba[0][0] #0이면 정상
diabetes=proba[0][1] #1이면 당뇨
print(diabetes) # = 0.743482642408591
print(f"당뇨 확률:{diabetes*100:.1f}") #소숫점 첫째자리까지 표시 # = 당뇨 확률:74.3
print(f"정상 확률:{normal*100:.1f}") # = 정상 확률:25.7
if diabetes>0.5:
result="당뇨"
else:
result="정상"
print(diabetes) # = 0.743482642408591
print("AI 예측 결과",result)

'AI딥러닝 > Python' 카테고리의 다른 글
| Vue3.js 시작 (0) | 2026.03.04 |
|---|---|
| 파이썬 라이브러리_numpy(수치,행렬) 예제 (0) | 2026.01.29 |
| 파이썬 그래프와 스프링부트 자바 연동 (0) | 2026.01.26 |
| txt,xlsx,csv 파일을 Oracle DB에 저장해보자! (0) | 2026.01.26 |
| 아나콘다로 시작하는 데이터 분석 - Jupyter (0) | 2026.01.22 |