파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

1.5 테스트와 검증 | 목차 | 2.2 큰 그림 보기

이 장에서는 여러분이 부동산 회사에 막 고용된 데이터 과학자라고 가정하고 예제 프로젝트의 처음부터 끝까지 진행해보겠습니다.1 진행할 주요 단계는 다음과 같습니다.

  1. 큰 그림을 봅니다.
  2. 데이터를 구합니다.
  3. 데이터로부터 통찰을 얻기 위해 탐색하고 시각화합니다.
  4. 머신러닝 알고리즘을 위해 데이터를 준비합니다.
  5. 모델을 선택하고 훈련시킵니다.
  6. 모델을 상세하게 조정합니다.
  7. 솔루션을 제시합니다.
  8. 시스템을 론칭하고 모니터링하고 유지 보수합니다.

2.1 실제 데이터로 작업하기

머신러닝을 배울 때는 인공적으로 만들어진 데이터셋이 아닌 실제 데이터로 실험해보는 것이 가장 좋습니다. 다행히 여러 분야에 걸쳐 공개된 데이터셋이 아주 많습니다. 다음은 데이터를 구하기 좋은 곳입니다.

  • 유명한 공개 데이터 저장소
    • UC 얼바인Irvine 머신러닝 저장소(http://archive.ics.uci.edu/ml/)
    • 캐글Kaggle 데이터셋(http://www.kaggle.com/datasets)
    • 아마존 AWS 데이터셋(http://aws.amazon.com/ko/datasets)
  • 메타 포털(공개 데이터 저장소가 나열되어 있습니다)
    • http://dataportals.org/
    • http://opendatamonitor.eu/
    • http://quandl.com
  • 인기 있는 공개 데이터 저장소가 나열되어 있는 다른 페이지
    • 위키백과 머신러닝 데이터셋 목록(https://goo.gl/SJHN2k)
    • Quora.com 질문(http://goo.gl/zDR78y)
    • 데이터셋 서브레딧subreddit (http://www.reddit.com/r/datasets)

이 장에서는 StatLib 저장소2에 있는 캘리포니아 주택 가격California Housing Prices 데이터셋을 사용합니다(그림 2-1). 이 데이터셋은 1990년 캘리포니아 인구조사 데이터를 기반으로 합니다. 최근 데이터는 아니지만(그 당시의 가격이라면 여러분도 베이 에어리어Bay Area에 꽤 좋은 집을 살 수 있습니다) 학습용으로 아주 좋기 때문에 최근 데이터라고 생각하겠습니다. 교육 목적으로 사용하기 위해 범주형 특성을 추가하고 몇 개 특성을 제외했습니다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje


1 이 예제 프로젝트는 완전히 가상으로 만든 것입니다. 머신러닝의 주요 단계를 설명하는 것이 목적이며 부동산 비즈니스에 대해 배우려는 것은 아닙니다.
2 원본 데이터는 켈리 페이스(R. Kelley Pace)와 로널드 배리(Ronald Barry )의 「Sparse Spatial Autoregressions」, Statistics & Probability Letters 33, no. 3 (1997) : 291-297에 기술되어 있습니다. 옮긴이_ StatLib 저장소는 카네기 멜론(Carnegie Mellon) 대학교의 통계학과에서 운영하는 공개 데이터셋 저장소입니다(http://lib.stat.cmu.edu/datasets/). 여기에서는 원본 데이터셋을 약간 수정한 버전을 사용합니다(https://goo.gl/QgRbUL).

1.5 테스트와 검증 | 목차 | 2.2 큰 그림 보기

이 글은 한빛미디어에서 출간한  “핸즈온 머신러닝“의 1장과 2장입니다. 이 책의 저작권은 한빛미디어(주)에 있으므로 무단 복제 및 무단 전제를 금합니다.

Your First Machine Learning Project in Python Step-By-Step

파이썬으로 단계별 첫 머신러닝 프로젝트 시작하기

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

* 이 글은 Machine Learning Masteryr에 작성된 Jason Brownlee의 글을 번역하였습니다.

파이썬을 이용해서 머신러닝을 하고 싶은데 시작하는데 어려움이 있으십니까?

이 게시글을 통해 Python을 사용하여 첫 번째 머신러닝 프로젝트를 완료하십시오.

이 단계별 튜토리얼 작업을 수행하십시오.

1. Python SciPy를 다운로드하여 설치하고 Python에서 머신러닝에 가장 유용한 패키지를 받으십시오.

2. 데이터 셋을 로드하고 통계 요약 및 데이터 시각화를 사용하여 데이터 셋의 구조를 이해하십시오.

3. 6가지 머신러닝 모델을 만들고, 가장 좋은 모델을 골라 정확도가 신뢰할 수 있다는 자신감을 심어준다.

4. 만약 당신이 머신러닝 초보자이고 마침내 파이썬을 사용하기 시작하려고 한다면, 이 튜토리얼은 당신을 위해 고안된 것이다.

시작합시다!

1. Python SciPy 다운로드, 설치 및 시작

아직 설치되어 있지 않은 경우 시스템에 Python 및 SciPy 플랫폼을 설치하십시오.

나는 이것을 아주 자세하게 다루고 싶지 않다. 왜냐하면 다른 사람들은 이미 알고 있기 때문이다. 당신이 개발자라면 이미 꽤 간단하다.

1.1 SciPy 라이브러리 설치

본 튜토리얼에서는 Python 버전 2.7 또는 3.6+로 가정한다.

5개의 주요 라이브러리를 설치해야 한다. 아래는 이 튜토리얼에 필요한 Python SciPy 라이브러리의 목록이다.

1. scipy

2. numpy

3. matplotlib

4. pandas

5. sklearn

이 라이브러리들을 설치하는 많은 방법들이 있다. 나의 가장 좋은 조언은 한 가지 방법을 선택한 다음 각 라이브러리를 설치하는 데 일관성을 지녀야 한다는 것이다.

scipy(https://www.scipy.org/install.html)는 Linux, Mac OS X, Windows와 같은 여러 플랫폼에 위의 라이브러리를 설치하기 위한 훌륭한 지침을 제공한다.

Mac OS X에서는 Macports를 사용하여 Python 3.6과 이러한 라이브러리를 설치할 수 있다. (https://www.macports.org/install.php)

Linux에서는 yum on Fedora와 같은 패키지 관리자를 사용하여 RPM을 설치할 수 있다.

만약 당신이 Windows를 사용하거나 자신이 없다면, 당신이 필요한 모든 것을 포함하는 무료 버전의 Anaconda를 설치하는 것을 추천한다. (https://www.anaconda.com/)

참고: 이 튜토리얼에서는 사용자가 Scikit-learn 버전 0.20 이상이 설치되어 있다고 가정한다.

1.2 Python 시작 및 버전 확인

Python 환경이 성공적으로 설치되었고 예상대로 작동하고 있는지 확인하는 것은 좋은 생각이다.

아래 스크립트는 환경을 테스트하는 데 도움이 될 것이다. 이 튜토리얼에 필요한 각 라이브러리를 가져와 버전을 프린트한다.

command line을 열고 python 인터프리터를 시작하십시오.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

Editor나 IDE가 아닌 인터프리터에서 직접 작업하거나 대본을 작성해 command line에서 실행하는 것을 추천한다. 단순함을 유지하고 툴체인이 아닌 기계학습에 집중한다.

다음 스크립트를 입력하거나 복사하여 붙여넣으십시오.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

# Check the versions of libraries

# Python version

import sys

print('Python: {}'.format(sys.version))

# scipy

import scipy

print('scipy: {}'.format(scipy.__version__))

# numpy

import numpy

print('numpy: {}'.format(numpy.__version__))

# matplotlib

import matplotlib

print('matplotlib: {}'.format(matplotlib.__version__))

# pandas

import pandas

print('pandas: {}'.format(pandas.__version__))

# scikit-learn

import sklearn

print('sklearn: {}'.format(sklearn.__version__))

OS X 워크스테이션에서 얻은 출력은 다음과 같다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

위의 출력을 당신과 비교하십시오.

이상적으로는 버전이 일치하거나 최신 버전이어야 한다. API는 빠르게 변경되지 않으므로 몇 가지 버전이 뒤쳐져도 너무 걱정하지 말자. 이 튜토리얼의 모든 것이 여전히 사용 가능할 가능성이 매우 높다.

오류가 발생하면 중지하십시오. 그것을 고쳐야 한다.

위의 스크립트를 완전히 실행할 수 없는 경우 이 튜토리얼을 완료할 수 없다.

가장 좋은 해결 방법은 구글에 당신의 오류 메시지를 검색하는 것이다.

2. 데이터 로드

우리는 iris 데이터 세트를 사용할 것이다. 이 데이터 세트는 거의 모든 사람들에 의해 머신러닝과 통계에서 "Hello World" 데이터 세트로 사용되기 때문에 유명하다.

데이터 세트에는 iris 관측치 150개가 들어 있다. 측정 열은 cm로 네 칸이다. 다섯 번째 열은 관찰된 꽃의 종이다. 관찰된 모든 꽃은 세 종 중 한 종에 속한다.

위키피디아에서 이 데이터 집합에 대해 더 많이 배울 수 있다. (https://en.wikipedia.org/wiki/Iris_flower_data_set)

이 단계에서는 CSV 파일 URL에서 iris 데이터를 로드할 것이다.

2.1 라이브러리 가져오기

먼저 이 튜토리얼에서 사용할 모든 모듈, 기능 및 객체를 가져오자.

모든 것이 오류 없이 로드되어야 한다. 오류가 있으면 중지하십시오. 계속하기 전에 작업 중인 SciPy 환경이 필요하다. 환경 설정에 대한 위의 조언을 참조하십시오.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

# Load libraries

from pandas import read_csv

from pandas.plotting import scatter_matrix

from matplotlib import pyplot

from sklearn.model_selection import train_test_split

from sklearn.model_selection import cross_val_score

from sklearn.model_selection import StratifiedKFold

from sklearn.metrics import classification_report

from sklearn.metrics import confusion_m

atrix

from sklearn.metrics import accuracy_score

from sklearn.linear_model import LogisticRegression

from sklearn.tree import DecisionTreeClassifier

from sklearn.neighbors import KNeighborsClassifier

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

from sklearn.naive_bayes import GaussianNB

from sklearn.svm import SVC

2.2 데이터 세트 로드

우리는UCI Machine Learning repository에서 직접 데이터를 로드할 수 있다.

우리는 자료를 로드하기 위해 pandas를 사용하고 있다. 또한 pandas를 사용하여 기술 통계와 데이터 시각화를 통해 데이터를 탐색할 것입니다.

데이터를 로드할 때 각 열의 이름을 지정하고 있다. 이것은 나중에 우리가 데이터를 탐색할 때 도움이 될 것이다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

# Load dataset

url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/iris.csv"

names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']

dataset = read_csv(url, names=names)

데이터 세트는 문제 없이 로드되어야 한다.

네트워크 문제가 있는 경우 iris.csv 파일을 작업 디렉토리에 다운로드한 후 동일한 방법을 사용하여 로드하여 URL을 로컬 파일 이름으로 변경할 수 있다.

3. 데이터 세트 단순화

이제 데이터를 살펴봐야 할 때다.

이 단계에서는 다음과 같은 몇 가지 다른 방법으로 데이터를 살펴보기로 한다.

1. 데이터 세트 크기

2. 데이터 훑어보기

3. 모든 속성의 통계적 요약

4. 클래스 변수에 의한 데이터 분석

이러한 명령은 향후 프로젝트에서 계속 사용할 수 있는 유용한 명령어다.

3.1 데이터 세트의 크기

우리는 얼마나 많은 인스턴스(행)와 그 데이터에 모양 특성이 포함된 속성(열)을 빠르게 알 수 있다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

# shape

print(dataset.shape)

150개의 인스턴스와 5개의 속성임을 알 수 있다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

3.2 데이터 훑어보기

또한 실제로 데이터를 들여다보는 것도 항상 좋은 생각이다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

# head

print(dataset.head(20))

데이터의 처음 20행을 봐야 한다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

3.3 통계적 요약

이제 각 속성의 요약을 살펴볼 수 있다.

여기에는 수, 평균, 최소값 및 최대값뿐만 아니라 일부 백분위수도 포함된다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

# descriptions

print(dataset.describe())

우리는 모든 수치들이 0cm~8cm사이의 동일한 척도와 유사한 범위를 가지고 있다는 것을 알 수 있다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

3.4 클래스 분포

이제 각 클래스에 속하는 인스턴스(행) 수를 살펴봅시다. 우리는 이것을 절대적인 수로 볼 수 있다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

# class distribution

print(dataset.groupby('class').size())

각 클래스의 인스턴스 수가 같은 것을 알 수 있다.(데이터셋의 50 또는 33%)

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

3.5 전체적 예

참고로 이전의 모든 요소를 하나의 스크립트로 묶을 수 있다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

# summarize the data

from pandas import read_csv

# Load dataset

url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/iris.csv"

names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']

dataset = read_csv(url, names=names)

# shape

print(dataset.shape)

# head

print(dataset.head(20))

# descriptions

print(dataset.describe())

# class distribution

print(dataset.groupby('class').size())

4. 데이터 시각화

우리는 이제 데이터에 대한 기본적인 아이디어를 가지고 있다. 우리는 시각화를 통해 그것을 확장시킬 필요가 있다.

다음 두 가지 유형의 plots을 살펴보기로 한다.

1. 각 속성을 더 잘 이해하기 위한 Univariate plots

2. 속성 간의 관계를 더 잘 이해하기 위한 Multivariate plots

4.1 Univariate Plots

먼저 각 변수의 Univariate Plots, 즉 각 개별 변수의 그래프로 시작한다.

입력 변수가 숫자인 경우 각 입력 변수의 box and whisker plot을 만들 수 있다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

# box and whisker plots

dataset.plot(kind='box', subplots=True, layout=(2,2), sharex=False, sharey=False)

pyplot.show()

이를 통해 입력 속성의 분포에 대한 훨씬 명확한 아이디어를 얻을 수 있다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

또한 각 입력 변수의 히스토그램을 만들어 분포에 대한 아이디어를 얻을 수 있다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

# histograms

dataset.hist()

pyplot.show()

입력 변수 중 두 개가 가우시안 분포를 갖는 것처럼 보인다. 이 가정을 이용할 수 있는 알고리즘을 사용할 수 있어 유용하다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

4.2 Multivariate Plots

이제 우리는 변수들 사이의 상호작용을 살펴볼 수 있다.

먼저, 모든 속성 쌍의 산점도를 살펴본다. 이것은 입력 변수들 사이의 구조화된 관계를 알아내는 데 도움이 될 수 있다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

# scatter plot matrix

scatter_matrix(dataset)

pyplot.show()

일부 속성 쌍의 대각선 그룹화에 유의하자. 이는 높은 상관관계와 예측 가능한 관계를 시사한다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

4.3 전체적 예

참고로 이전의 모든 요소를 하나의 대본으로 묶을 수 있다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

# visualize the data

from pandas import read_csv

from pandas.plotting import scatter_matrix

from matplotlib import pyplot

# Load dataset

url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/iris.csv"

names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']

dataset = read_csv(url, names=names)

# box and whisker plots

dataset.plot(kind='box', subplots=True, layout=(2,2), sharex=False, sharey=False)

pyplot.show()

# histograms

dataset.hist()

pyplot.show()

# scatter plot matrix

scatter_matrix(dataset)

pyplot.show()

5. 일부 알고리즘 평가

이제 데이터의 일부 모델을 만들고 보이지 않는 데이터에 대한 정확도를 추정할 때가 되었다.

이 단계에서 다룰 내용은 다음과 같다.

1. 유효성 검사 데이터 세트 분리

2. 10-fold cross 검증을 사용하도록 테스트 하네스를 설정

3. 꽃 측정에서 종을 예측할 수 있는 여러 가지 다른 모델 구축

4. 최상의 모델을 선택

5.1 검증 데이터 세트 생성

우리가 만든 모델이 좋은지 알아야 한다.

나중에 우리는 통계적 방법을 사용하여 보이지 않는 데이터에 대해 우리가 만든 모델의 정확도를 추정할 것이다. 우리는 또한 실제 보이지 않는 데이터에 대해 평가함으로써 보이지 않는 데이터에 대한 최고의 모델의 정확성에 대해 보다 구체적인 추정치를 원한다.

즉, 알고리즘이 볼 수 없는 일부 데이터를 보류하고 이 데이터를 사용하여 최고의 모델이 실제로 얼마나 정확할 수 있는지에 대한 두 번째 독립적 아이디어를 얻도록 할 것이다.

로드된 데이터셋을 두 개로 나누고, 그 중 80%를 모델 중 훈련, 평가 및 선택하는데 사용할 것이며, 20%는 검증 데이터셋으로 보류할 것이다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

# Split-out validation dataset

array = dataset.values

X = array[:,0:4]

y = array[:,4]

X_train, X_validation, Y_train, Y_validation = train_test_split(X, y, test_size=0.20, random_state=1)

이제 X_train과 Y_train에의 교육 데이터와 나중에 사용할 수 있는 X_validation 및 Y_validation 검증 데이터 세트를 갖고 있다.

5.2 테스트 하네스

우리는 모델 정확도를 추정하기 위해 층화된 10-fold cross 검증을 사용할 것이다.

이렇게 하면 데이터 집합을 10개 부분으로 나누고, 9번 훈련하고, 1번 테스트하는 것을 반복할 것이다.

계층화란 데이터 세트의 각 fold 또는 split이 전체 교육 데이터 세트에 존재하는 것과 동일한 클래스별 예시 분포를 목표로 함을 의미한다.

각 알고리즘이 교육 데이터 집합의 동일한 분할에서 평가되도록 random_state 인수를 통해 랜덤 시드를 고정 숫자로 설정했다.

우리는 모형을 평가하기 위해 'accuracy(정확도)'의 측정 기준을 사용하고 있다.

이는 정확하게 예측된 인스턴스 수를 데이터 집합의 총 인스턴스 수로 나눈 비다.

5.3 모델 빌드

우리는 어떤 알고리즘이 이 문제에 좋을지 어떤 구성을 사용해야 할지 모른다.

6가지 알고리즘을 테스트하자.

1. Logistic Regression (LR)

2. Linear Discriminant Analysis (LDA)

3. K-Nearest Neighbors (KNN)

4. Classification and Regression Trees (CART)

5. Gaussian Naive Bayes (NB)

6. Support Vector Machines (SVM)

단순 선형(LR 및 LDA), 비선형(KNN, CART, NB 및 SVM) 알고리즘이 잘 혼합된 것이다.

모델을 구축하고 평가하자.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

# Spot Check Algorithms

models = []

models.append(('LR', LogisticRegression(solver='liblinear', multi_class='ovr')))

models.append(('LDA', LinearDiscriminantAnalysis()))

models.append(('KNN', KNeighborsClassifier()))

models.append(('CART', DecisionTreeClassifier()))

models.append(('NB', GaussianNB()))

models.append(('SVM', SVC(gamma='auto')))

# evaluate each model in turn

results = []

names = []

for name, model in models:

kfold = StratifiedKFold(n_splits=10, random_state=1, shuffle=True)

cv_results = cross_val_score(model, X_train, Y_train, cv=kfold, scoring='accuracy')

results.append(cv_results)

names.append(name)

print('%s: %f (%f)' % (name, cv_results.mean(), cv_results.std()))

5.4 최적의 모델 선택

우리는 이제 각각 6개의 모델과 정확도 추정치를 가지고 있다. 우리는 모델을 서로 비교하고 가장 정확한 모델을 선택해야 한다.

위의 예제를 실행하면 다음과 같은 원시 결과를 얻을 수 있다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

이 경우 SVM(지원 벡터 머신)의 추정 정확도 점수가 약 0.98 또는 98%로 가장 큰 것으로 보인다.

또한 모델 평가 결과의 plot을 작성하고 각 모델의 산포도와 평균 정확도를 비교할 수 있다. 각 알고리즘이 10회 평가되었기 때문에 (10회 교차 검증을 통해) 각 알고리즘에 대한 정확도 측정의 집단이 있다.

각 알고리즘의 결과 샘플을 비교하는 유용한 방법은 각 분포에 대한 box and whisker plot을 만들고 분포를 비교하는 것이다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

# Compare Algorithms

pyplot.boxplot(results, labels=names)

pyplot.title('Algorithm Comparison')

pyplot.show()

 box and whisker plot이 범위 상단에 스쿼시되어 있으며, 많은 평가가 100% 정확도를 달성하고 있으며, 일부는 높은 80% 정확도로 내려가는 것을 볼 수 있다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

5.5 전체적 예

참고로 이전의 모든 요소를 하나의 스크립트로 묶을 수 있다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

# compare algorithms

from pandas import read_csv

from matplotlib import pyplot

from sklearn.model_selection import train_test_split

from sklearn.model_selection import cross_val_score

from sklearn.model_selection import StratifiedKFold

from sklearn.linear_model import LogisticRegression

from sklearn.tree import DecisionTreeClassifier

from sklearn.neighbors import KNeighborsClassifier

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

from sklearn.naive_bayes import GaussianNB

from sklearn.svm import SVC

# Load dataset

url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/iris.csv"

names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']

dataset = read_csv(url, names=names)

# Split-out validation dataset

array = dataset.values

X = array[:,0:4]

y = array[:,4]

X_train, X_validation, Y_train, Y_validation = train_test_split(X, y, test_size=0.20, random_state=1, shuffle=True)

# Spot Check Algorithms

models = []

models.append(('LR', LogisticRegression(solver='liblinear', multi_class='ovr')))

models.append(('LDA', LinearDiscriminantAnalysis()))

models.append(('KNN', KNeighborsClassifier()))

models.append(('CART', DecisionTreeClassifier()))

models.append(('NB', GaussianNB()))

models.append(('SVM', SVC(gamma='auto')))

# evaluate each model in turn

results = []

names = []

for name, model in models:

kfold = StratifiedKFold(n_splits=10, random_state=1, shuffle=True)

cv_results = cross_val_score(model, X_train, Y_train, cv=kfold, scoring='accuracy')

results.append(cv_results)

names.append(name)

print('%s: %f (%f)' % (name, cv_results.mean(), cv_results.std()))

# Compare Algorithms

pyplot.boxplot(results, labels=names)

pyplot.title('Algorithm Comparison')

pyplot.show()

6. 예측하기

우리는 예측하는 데 사용할 알고리즘을 선택해야 한다.

앞 절의 결과는 SVM이 아마도 가장 정확한 모델이었을 것임을 시사한다. 우리는 이 모델을 최종 모델로 사용할 것이다.

이제 우리는 우리의 검증 세트에서 모델의 정확성에 대한 아이디어를 얻기를 원한다.

이것은 우리에게 최고의 모델의 정확성에 대한 독립적인 최종 점검을 제공할 것이다. 훈련 세트 오버핏이나 데이터 유출 등 훈련 중 실수한 경우를 대비해서 검증 세트를 보관하는 것이 중요하다. 이 두 이슈 모두 지나치게 낙관적인 결과를 초래할 것이다.

6.1 예측

전체 훈련 데이터 세트에 모델을 적합시키고 검증 데이터 집합에 대한 예측을 할 수 있다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

# Make predictions on validation dataset

model = SVC(gamma='auto')

model.fit(X_train, Y_train)

predictions = model.predict(X_validation)

6.2 예측 평가

검증 세트의 예상 결과와 비교하여 예측을 평가한 후 분류 정확도와 confusion matrix 및 분류 보고서를 계산할 수 있다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

# Evaluate predictions

print(accuracy_score(Y_validation, predictions))

print(confusion_matrix(Y_validation, predictions))

print(classification_report(Y_validation, predictions))

보류 데이터 세트에서 정확도가 0.966(약 96%)인 것을 알 수 있다.

confusion matrix는 오류가 발생했음을 나타낸다.

마지막으로, 분류 보고서는 각 분류를 precission(정밀도), recall(재현율), f1 점수 및 지원에 의해 분류하여 우수한 결과를 보여준다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

6.3 전체적 예

참고로 이전의 모든 요소를 하나의 스크립트로 묶을 수 있다.

파이썬 딥러닝 프로젝트 예제 - paisseon dibleoning peulojegteu yeje

# make predictions

from pandas import read_csv

from sklearn.model_selection import train_test_split

from sklearn.metrics import classification_report

from sklearn.metrics import confusion_matrix

from sklearn.metrics import accuracy_score

from sklearn.svm import SVC

# Load dataset

url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/iris.csv"

names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']

dataset = read_csv(url, names=names)

# Split-out validation dataset

array = dataset.values

X = array[:,0:4]

y = array[:,4]

X_train, X_validation, Y_train, Y_validation = train_test_split(X, y, test_size=0.20, random_state=1)

# Make predictions on validation dataset

model = SVC(gamma='auto')

model.fit(X_train, Y_train)

predictions = model.predict(X_validation)

# Evaluate predictions

print(accuracy_score(Y_validation, predictions))

print(confusion_matrix(Y_validation, predictions))

print(classification_report(Y_validation, predictions))

요약

이 글에서 파이썬에서 첫 번째 머신러닝 프로젝트를 완료하는 단계별 방법을 알아냈다.

데이터 로딩에서 예측에 이르는 소규모 엔드투엔드 프로젝트를 완료하는 것이 새로운 플랫폼에 익숙해지는 가장 좋은 방법임을 알게 되었다.

번역 - 핀인사이트 인턴연구원 김영현

원문 보러가기 >

https://machinelearningmastery.com/machine-learning-in-python-step-by-step/