안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다. 코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석, 머신러닝 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다. 업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART)나 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다. 최근들어 머신러닝과 머신러닝의 대표적인 라이브러리인 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 공식 문서의 데이터 셋 관련 목록> 2. 장난감 데이터 셋의 종류
이 데이터들 중, seaborn을 공부할 때 많이 보았던 붓꽃 데이터를 불러와보겠습니다.
출력 결과는 너무 길고 복잡해서 생략하고 출력한 데이터 셋이 어떤 형태를 가지고 있는지 설명드려 보겠습니다. 여러분들은 직접 실행해보신 후, 출력 결과를 아래의 내용과 비교해보세요. 3. 데이터 셋 자료구조장난감 데이터 셋을 로드하시면 sklearn.utils.Bunch라는 자료구조(클래스)를 반환해 줍니다. Bunch 클래스는 key-value 형식으로 구성되어 있으며, 딕셔너리(dict) 자료형과 유사한 구조를 가지고 있습니다. key는 다음과 같습니다.
참고로 data와 feature_names가 특징 데이터(꽃잎 길이와 너비, 꽃받침의 길이와 너비), target과 target_names가 정답 데이터(붓꽃의 3가지 종류) 입니다. 해당 데이터들은 앞서 해본 것과 같이 iris로 한번에 불러올 수도 있지만 아래와 같이 각각 선택해서 가져올 수 있습니다.
<출력 결과> 4. 데이터 셋 DataFrame으로 변환이미 pandas를 배우신 분들은 느끼셨겠지만 위와 같은 형식은 직관성이 너무 떨어집니다. 그래서 우리는 key로 분류된 데이터들을 합쳐서 데이터 프레임으로 만들어보겠습니다. 1) pandas 패키지 불러오기 먼저 pandas를 import 해줍니다.
2) data와 feature_names 합쳐주기 iris 데이터 셋의 'data'를 데이터 프레임으로 불러는 동시에, 컬럼명을 'feature_names'의 값들로 변경해줍니다. 이때, columns 파라미터 설정안해주면 컬럼명이 0,1,2,3으로 출력됩니다.
<출력 결과> 3) 데이터 프레임 가장 오른쪽에 target 데이터를 추가하기 해당 데이터들이 어떤 붓꽃 종류인지를 알려주는 target 데이터를 추가해보겠습니다. 참고로, 0은 'setosa', 1은 'versicolor', 2는 'virginica'를 의미합니다. (iris['target_names]로 확인 가능)
<출력 결과> 오늘은 준비한 내용은 여기까지입니다. 다음 시간에는 오늘 불러온 데이터 프레임을 활용하여 간단한 머신러닝을 해보겠습니다. 감사합니다. <참고 자료> 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 |