Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 광주직업학교
- jsp
- 머신러닝
- 자바페스티벌
- 내일배움카드
- 스마트인재개발원
- 자바
- 자바스크립트
- Python
- ui
- 메시지시스템
- 파이썬
- 서블릿
- ux
- 빅데이터
- 코린이
- 스프링
- K디지털크레딧
- 딥러닝
- 리스트
- java
- 코딩
- iOS개발강의
- 문제풀이
- 패스트캠퍼스
- 썸머스쿨예약
- 전주독서실
- 바이트디그리
- 덴디컨설팅
- 전주스터디카페
Archives
- Today
- Total
멀리 보는 연습
머신러닝_BMI(체질량지수) 실습(K-Nearest Neighbors) 본문
머신러닝 2번째 실습인 bmi 체질량지수를 통한 실습. 막연하게 머신러닝을 생각했을 땐, 어떻게 학습을 시켜서 어떻게 예측하게 만드나 궁금했는데, 생각보다 간단하게 진행되었다. 바로 7:3으로 나눠서 7을 학습시키고 3을 예측하게 시키는 것! 이번 실습은 500명의 키와 몸무게를 통해서 진행했는데, 앞으로 규모가 더 커지면 500명은 아무것도 아닐 거라는 생각이 들었다.
01. 목표 (문제 정의)
- 500명의 키와 몸무게, 비만도 라벨을 이용해 비만을 판단하는 모델을 만들어보자.
import pandas as pd
import matplotlib.pyplot as plt
02. 데이터 수집
- bmi500.csv 파일 형식의 데이터 파일 가져오기
data = pd.read_csv('data/bmi_500.csv', index_col='Label')
data
data.head()
data.tail()
# 전체 데이터(row) 수, 결측치 여부, 컬럼 별 정보, 데이터 타입
data.info()
# 결측치가 없다는 것을 알 수 있음
data.head() # 인덱스를 빼면 컬럼은 3개
# 기술 통계 확인 >> 4분위수로 나눈 값들을 나열 (min, 25%, 50%, 75%, max)
data.describe()
data.index.unique()
#DataFrame
#df[컬럼명]
#df.loc[행]
#df.loc[행,열]
data.loc['Overweight'].head(2)
#과체중인 사람의 키 데이터
data.loc['Overweight','Height']
#보통인 사람의 몸무게 데이터
data.loc['Normal','Weight']
03. 전처리 생략
04. 탐색적 데이터 분석(EDA)
- 각 비만도 등급 별로 시각화
def myScatter (label, color) :
la_data = data.loc[label]
plt.scatter(la_data['Weight'],
la_data['Height'],
c = color,
label = label)
plt.figure(figsize=(5,5))
myScatter('Obesity','purple')
myScatter('Normal','red')
myScatter('Overweight','green')
myScatter('Extreme Obesity','pink')
myScatter('Weak','black')
myScatter('Extremely Weak','blue')
plt.legend()
plt.xlabel('Weight')
plt.ylabel('Height')
plt.show()
05. 모델링
- 1. 문제와 답으로 분리
- 2. train(훈련셋)과 test(평가셋) 분리
- 3. 모델 생성 및 하이퍼파라미터 조정
- 4. 학습 및 평가
#인덱스를 리셋해서 컬럼자리로 보내기
data.reset_index(inplace=True)
data.head()
#df.iloc[ 행 , 열]
#data.iloc[:,2:]
data[['Height','Weight']]
X = data.iloc[:,2:] #문제
y = data.iloc[:,0] # 정답
# 2. train(훈련셋)과 test(평가셋) 분리
# 7:3
# train > 350, test > 150
X_train = X.iloc[:350,:]# 훈련 문제
X_test = X.iloc[350:,:] # 평가 문제
y_train = y[:350] # 훈련 답
y_test = y[350:] # 평가 답
X_train.shape, y_train.shape
X_test.shape, y_test.shape
from sklearn.neighbors import KNeighborsClassifier #KNN 모델 Classifier 분류
knn_model=KNeighborsClassifier() #객체 생성
knn_model.fit(X_train, y_train) #학습하는 코드(문제, 답)
pre = knn_model.predict(X_test) # 예측하는 코드 (문제,답)
from sklearn import metrics #평가 지표 라이브러리
metrics.accuracy_score(pre, y_test) #예측한답, 실제답
학습 후 예측한 결과가 무려 90% 육박! 대박!
활용하기
knn_model.predict([[190,59]])
이렇게 키와 몸무게를 임의로 넣으면 스스로 분석해서 'Obesity', 'Normal', 'Overweight', 'Extreme Obesity', 'Weak', 'Extremely Weak' 6가지 카테고리 중 알맞는 상태(?)를 알려준다. 190cm에 59kg는 저체중(Weak)이라는 것을 알 수 있다. (육안으로만 봐도 알겠지만..)
'빅데이터 분석 서비스 > 머신러닝' 카테고리의 다른 글
머신러닝_네이버 영화 리뷰 감성 분석 (0) | 2021.09.12 |
---|---|
머신러닝_보스턴 주택 값 예측(L1 Lasso, L2 Ridge) (0) | 2021.09.12 |
머신러닝_버섯 데이터 분류 실습(Decision Tree) (0) | 2021.09.04 |
머신러닝_iris 품종 분류 실습(K-Nearest Neighbors) (0) | 2021.09.04 |
머신러닝_서울시 구별 CCTV 현황 분석 (1) | 2021.08.29 |
Comments