파이썬 아이리스 데이터 - paisseon ailiseu deiteo

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석, 머신러닝 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART) 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.

파이썬 아이리스 데이터 - paisseon ailiseu deiteo

최근들어 머신러닝과 머신러닝의 대표적인 라이브러리인 Scikit-learn에 대해서 공부하고 있습니다.

<머신러닝 관련 글>

2021.07.19 - [파이썬 패키지/데이터분석] - [코딩유치원] 비전공자도 쉽게 이해할 수 있는 인공지능/머신러닝/딥러닝 개념 총정리

2021.09.01 - [파이썬 패키지/머신러닝] - [Python/Scikit-learn] 머신러닝 라이브러리_1편. 머신러닝과 Scikit-learn 소개(ft. 지도학습, 비지도학습, 강화학습)

2021.09.07 - [파이썬 패키지/머신러닝] - [Python/Scikit-learn] 머신러닝 라이브러리_2편. Scikit-learn 학습용 데이터 셋 불러오기(ft. 붓꽃 데이터)

2021.09.11 - [파이썬 패키지/머신러닝] - [Python/Scikit-learn] 머신러닝 라이브러리_3편. 머신러닝 준비물! 학습/검증/예측 데이터(ft.과대적합과 과소적합)

2021.09.13 - [파이썬 패키지/머신러닝] - [Python/Scikit-learn] 머신러닝 라이브러리_4편. 모델 학습과 분류 (ft. 붓꽃의 꽃잎, 꽃받침 데이터로 종류 예측하기)


원래 Scikit-learn 설치를 먼저 다루려 했으나, 아나콘다 패키지로 파이썬을 설치한 경우엔 이미 설치가 되어 있다고 합니다.

그래서 별도로 설치 방법은 별도로 설명하지 않고 바로 데이터 셋을 불러오는 것 부터 시작해보겠습니다.

참고로 오늘도 여전히 쥬피터 노트북 (저의 경우엔 VS code 위에서)을 개발환경으로 사용하였습니다.


1. Scikit-learn의 데이터 셋

sklearn.dataset 모듈에는 기본적으로 내장되어 있는 데이터 셋들이 있습니다.

튜토리얼 진행할 정도의 Toy 데이터 셋도 있고, 실제 사용하는 데이터가 아주 큰 Real 데이터 셋도 있습니다.

그 외에도 sklearn.datasets.fetch_openml모듈을 이용해서 openml.org 에서 제공하는 데이터 셋을 받을 수 있다고 합니다.

(아직 해본적은 없어서 추후에 필요하다면 이용하는 방법을 포스팅해보겠습니다)

이번 시간에는 장난감 데이터 셋을 활용하여, 데이터 셋을 로드하고 다루어 보는 연습을 해보겠습니다.

<scikit-learn 공식 문서의 데이터 셋 관련 목록>

파이썬 아이리스 데이터 - paisseon ailiseu deiteo
출처. scikit-learn 공식 문서 (구글 번역을 사용하여 용어가 어색할 수 있음)

2.  장난감 데이터 셋의 종류

  • load_boston: 보스톤 집값 데이터
  • load_iris: 붓꽃 데이터
  • load_diabetes: 당뇨병 환자의 특성 데이터
  • load_digits: 0~9 필기 숫자 데이터
  • load_linnerud:  피트니스 클럽의 중년 남성 20명의 몸무게, 허리, 맥박데이터와 턱걸이, 윗몸 일으키기, 점프 횟수 데이터
  • load_wine: 와인 성분 데이터
  • load_breast_cancer: 위스콘신 유방암 환자 데이터

이 데이터들 중, seaborn을 공부할 때 많이 보았던 붓꽃 데이터를 불러와보겠습니다.

# 데이터 셋 중에서 iris 데이터 셋 관련된 클래스만 import
from sklearn.datasets import load_iris

# iris 변수에 데이터 셋 담기 (클래스의 객체 선언)
iris = load_iris()

# 출력
iris

출력 결과는 너무 길고 복잡해서 생략하고 출력한 데이터 셋이 어떤 형태를 가지고 있는지 설명드려 보겠습니다.

여러분들은 직접 실행해보신 후, 출력 결과를 아래의 내용과 비교해보세요.

3. 데이터 셋 자료구조

장난감 데이터 셋을 로드하시면 sklearn.utils.Bunch라는 자료구조(클래스)를 반환해 줍니다.

Bunch 클래스는 key-value 형식으로 구성되어 있으며, 딕셔너리(dict) 자료형과 유사한 구조를 가지고 있습니다.

key는 다음과 같습니다. 

  • data: Feature 데이터, Numpy의 배열(ndarray) 혹은 Pandas의 dataframe 형태
  • target: Label 데이터, Numpy의 배열(ndarray) 혹은 Pandas의 Series 형태
  • feature_names: Feature 데이터의 이름, 리스트
  • target_names: Label 데이터의 이름, 리스트
  • DESCR: 데이터 셋의 설명, 문자열
  • filename: 데이터 셋의 파일 저장 위치 (csv), 문자열

참고로 data와 feature_names가 특징 데이터(꽃잎 길이와 너비, 꽃받침의 길이와 너비), target과 target_names가 정답 데이터(붓꽃의 3가지 종류) 입니다.

해당 데이터들은 앞서 해본 것과 같이 iris로 한번에 불러올 수도 있지만 아래와 같이 각각 선택해서 가져올 수 있습니다.

# iris 데이터 셋의 data만 가져오기
data = iris['data']

# 데이터 10개만 출력
data[:10]

<출력 결과>

파이썬 아이리스 데이터 - paisseon ailiseu deiteo

4. 데이터 셋 DataFrame으로 변환

이미 pandas를 배우신 분들은 느끼셨겠지만 위와 같은 형식은 직관성이 너무 떨어집니다.

그래서 우리는 key로 분류된 데이터들을 합쳐서 데이터 프레임으로 만들어보겠습니다.

1) pandas 패키지 불러오기

먼저 pandas를 import 해줍니다.

import pandas as pd

2) data와 feature_names 합쳐주기

iris 데이터 셋의 'data'를 데이터 프레임으로 불러는 동시에, 컬럼명을 'feature_names'의 값들로 변경해줍니다.

이때, columns 파라미터 설정안해주면 컬럼명이 0,1,2,3으로 출력됩니다.

df = pd.DataFrame(iris['data'], columns=iris['feature_names'])

df.head()

<출력 결과>

파이썬 아이리스 데이터 - paisseon ailiseu deiteo

3) 데이터 프레임 가장 오른쪽에 target 데이터를 추가하기

해당 데이터들이 어떤 붓꽃 종류인지를 알려주는 target 데이터를 추가해보겠습니다.

참고로, 0은 'setosa', 1은 'versicolor', 2는 'virginica'를 의미합니다. (iris['target_names]로 확인 가능)

# df에 iris 데이터 셋의 target 데이터를 추가하고 컬럼명을 'target'으로 설정
df['target'] = iris['target']

# df 확인
df.head()

<출력 결과>

파이썬 아이리스 데이터 - paisseon ailiseu deiteo

오늘은 준비한 내용은 여기까지입니다.

다음 시간에는 오늘 불러온 데이터 프레임을 활용하여 간단한 머신러닝을 해보겠습니다.

감사합니다.


<참고 자료>

1. 테디노트 블로그_scikit-learn 데이터 셋(dataset) 다루기

https://teddylee777.github.io/scikit-learn/scikit-learn-dataset

2. scikit-learn 공식 문서_붓꽃 데이터 셋

https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_iris.html#sklearn.datasets.load_iris