머신러닝 2일차

ParkJinYoung·2022년 10월 19일
DataFrame 인덱싱 슬라이싱
인덱싱 : 데이터를 하나만 가져올때 사용한다
슬라이싱 : 여러개의 데이터를 범위로 잘라올때 사용한다

import pandas as pd
name = ['John','Jenny','Nate','Julia','Brian']
age = [20,30,30,40,45]
job = ['student','developer','teacher','dentist','manager']
dic = { 'name':name,'age':age,'job':job}
df = pd.DataFrame(dic)
df

#데이터 프레임에서 컬럼에 접근
#df['컬럼이름'] / df[['컬럼1','컬럼2']]

#인덱서 활용 (행부터 접근)
#df.loc[행,열]
#df.iloc[행,열]

#행데이터만 가져오고 싶으면 행만 적어주면된다.
#df.loc[행]

#1.name 컬럼 뽑아오기
# 1-1)열 인덱싱 시리즈데이터
df['name']
# 1-2)loc
df.loc[0:,'name']
# 1-3)iloc
df.iloc[0:,0]

#2.age, job 두개의 컬럼 뽑아오기
#2-1)단순하게 열 인덱싱
df[['age','job']]
#2-2)loc사용
df.loc[:,['age','job']]
#2-3)iloc사용
df.iloc[:,[1,2]]
df.iloc[:,1:]

#3.John~ Nate 데이터 뽑아오기 행
#3-1)단순하게 열 인덱싱
df[0:3]
#3-2)loc사용
df.loc['0':'2']
#3-3)iloc사용
df.iloc[0:3]

#라이브러리 불러오기
import matplotlib.pyplot as plt
import pandas as pd
#머신러닝 패키지
from sklearn.neighbors import KNeighborsClassifier as kn #KNN 분류모델
from sklearn.metrics import accuracy_score as acs #정확도 측정도구

목표
문제정의 500명의 키 몸무게 데이터를 활용하여 비만도를 판단해주는 모델 (머신러닝 과정 학습해보기)

#bmi.csv 데이터 불러오기
bmi=pd.read_csv("data/bmi_500.csv",index_col='Label',encoding="utf-8")
X_train=bmi[['Height','Weight']]

#데이터 살펴보기
#크기
bmi.shape
#행 데이터 : 500명의 데이터
#열 데이터 : 성별, 키, 몸무게

전처리
결측치, 이상치 처리
#전체 데이터 확인
bmi.info()

탐색적 데이터 분석(EDA - Exploratory Data Analysis)
데이터 세트들의 특성을 확인 & 분석한다
기술통계 확인(통계량에 대해 적어준 데이터) => 평균, 최대, 최소, 4분위수
시각화를 통해서 데이터의 분포 현황을 알아본다

# 기술통계 확인 describe() - 통계량을 한번에 확인 가능하다.
bmi.describe()
# 데이터개수, 평균, 표준편차, 최솟값, 4사분위수(중위값), 최댓값
#중위값과 평균값이 차이가 크지않음 =>이상치가 없음을 의미한다.

#각 클래스들의 개수 확인하기
#분포를 확인하여 편중된 데이터가 있는지 확인하기
#학습시 오류 발생이 높아진다.
bmi.index.value_counts()
#다시 데이터 수집해본다.

#남녀의 개수
bmi['Gender'].value_counts()

# BMI Label별 분포 현황 시각화 => 산점도(scatter)로 표기해보기
#고도비만(Extreme Obesity)(인덱스에 위치시켜서 찾기 편하게 해놓음)
eo=bmi.loc['Extreme Obesity']

#plt.scatter(x축=키데이터,y축=체중데이터)
plt.scatter(eo['Height'],eo['Weight'],color = 'purple', label='ext ob')
# 범례 설정하기
plt.legend()
plt.show()
profile
꾸준히

0개의 댓글