파이썬 튜토리얼

파이썬 홈 파이썬 소개 파이썬 시작하기 파이썬 구문 파이썬 주석 파이썬 변수 파이썬 데이터 유형 파이썬 숫자 파이썬 캐스팅 파이썬 문자열 파이썬 부울 파이썬 연산자 파이썬 목록 파이썬 튜플 파이썬 세트 파이썬 사전 파이썬 If...Else 파이썬 while 루프 Python For 루프 파이썬 함수 파이썬 람다 파이썬 배열 파이썬 클래스/객체 파이썬 상속 파이썬 반복자 파이썬 범위 파이썬 모듈 파이썬 날짜 파이썬 수학 파이썬 JSON 파이썬 정규식 파이썬 PIP 파이썬 시도...제외 파이썬 사용자 입력 파이썬 문자열 포맷

파일 처리

파이썬 파일 처리 파이썬 읽기 파일 Python 파일 작성/작성 파이썬 파일 삭제

파이썬 모듈

넘파이 튜토리얼 팬더 연습 사이피 튜토리얼

파이썬 Matplotlib

Matplotlib 소개 Matplotlib 시작하기 Matplotlib 파이플로트 Matplotlib 플로팅 Matplotlib 마커 Matplotlib 라인 Matplotlib 레이블 Matplotlib 그리드 Matplotlib 서브플롯 Matplotlib 분산 Matplotlib 바 Matplotlib 히스토그램 Matplotlib 파이 차트

기계 학습

시작하기 평균 중앙값 모드 표준 편차 백분위수 데이터 배포 정규 데이터 분포 산포도 선형 회귀 다항식 회귀 다중 회귀 규모 훈련/시험 의사결정나무

파이썬 MySQL

MySQL 시작하기 MySQL 데이터베이스 생성 MySQL 테이블 생성 MySQL 삽입 MySQL 선택 MySQL 어디 MySQL 주문 기준 MySQL 삭제 MySQL 삭제 테이블 MySQL 업데이트 MySQL 제한 MySQL 조인

파이썬 몽고DB

몽고DB 시작하기 MongoDB 데이터베이스 생성 MongoDB 컬렉션 생성 몽고DB 삽입 몽고DB 찾기 몽고DB 쿼리 몽고DB 정렬 몽고DB 삭제 MongoDB 드롭 컬렉션 몽고DB 업데이트 몽고DB 제한

파이썬 참조

파이썬 개요 파이썬 내장 함수 파이썬 문자열 메서드 파이썬 목록 메서드 파이썬 사전 메서드 파이썬 튜플 메서드 파이썬 세트 메소드 파이썬 파일 메서드 파이썬 키워드 파이썬 예외 파이썬 용어집

모듈 참조

랜덤 모듈 요청 모듈 통계 모듈 수학 모듈 cMath 모듈

파이썬 방법

목록 중복 제거 문자열 반전 두 개의 숫자 더하기

파이썬 예제

파이썬 예제 파이썬 컴파일러 파이썬 연습 파이썬 퀴즈 파이썬 인증서

기계 학습 - 학습/테스트


모델 평가

기계 학습에서 우리는 무게와 엔진 크기를 알고 있을 때 자동차의 CO2 배출량을 예측한 이전 장과 같이 특정 이벤트의 결과를 예측하는 모델을 만듭니다.

모델이 충분히 좋은지 측정하기 위해 Train/Test라는 방법을 사용할 수 있습니다.


훈련/시험이란

훈련/테스트는 모델의 정확도를 측정하는 방법입니다.

데이터 세트를 훈련 세트와 테스트 세트의 두 세트로 분할하기 때문에 훈련/테스트라고 합니다.

80%는 교육용, 20%는 테스트용입니다.

훈련 세트를 사용하여 모델을 훈련합니다 .

테스트 세트를 사용하여 모델을 테스트합니다 .

모델 학습 은 모델을 생성 하는 것을 의미 합니다.

모델 테스트 는 모델의 정확도를 테스트하는 것을 의미합니다.


데이터 세트로 시작

테스트하려는 데이터 세트로 시작하십시오.

우리의 데이터 세트는 한 상점에 ​​있는 100명의 고객과 그들의 쇼핑 습관을 보여줍니다.

예시

import numpy
import matplotlib.pyplot as plt
numpy.random.seed(2)

x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x

plt.scatter(x, y)
plt.show()

결과:

x축은 구매하기까지의 시간(분)을 나타냅니다.

y축은 구매에 사용한 금액을 나타냅니다.



기차/테스트로 분할

훈련 세트 는 원본 데이터의 80%를 무작위로 선택해야 합니다.

테스트 세트 는 나머지 20%여야 합니다.

train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]


훈련 세트 표시

훈련 세트와 동일한 산점도를 표시합니다.

예시

plt.scatter(train_x, train_y)
plt.show()

결과:

원래 데이터 세트처럼 보이므로 공정한 선택인 것 같습니다.


테스트 세트 표시

테스트 세트가 완전히 다르지 않은지 확인하기 위해 테스트 세트도 살펴보겠습니다.

예시

plt.scatter(test_x, test_y)
plt.show()

결과:

테스트 세트는 원본 데이터 세트와도 유사합니다.


데이터 세트 맞추기

데이터 세트는 어떻게 생겼습니까? 제 생각에는 다항식 회귀가 가장 적합하다고 생각 하므로 다항식 회귀 선을 그려 보겠습니다.

데이터 포인트를 통해 선을 그리려면 plot()matplotlib 모듈의 메서드를 사용합니다.

예시

데이터 포인트를 통해 다항식 회귀선을 그립니다.

import numpy
import matplotlib.pyplot as plt
numpy.random.seed(2)

x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x

train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]

mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))

myline = numpy.linspace(0, 6, 100)

plt.scatter(train_x, train_y)
plt.plot(myline, mymodel(myline))
plt.show()

결과:

결과는 다항식 회귀에 맞는 데이터 세트에 대한 제 제안을 뒷받침할 수 있지만, 데이터 세트 외부의 값을 예측하려고 시도하면 이상한 결과를 얻을 수 있습니다. 예: 선은 매장에서 6분을 보낸 고객이 200달러를 구매할 것임을 나타냅니다. 이는 아마도 과적합의 신호일 수 있습니다.

그러나 R-제곱 점수는 어떻습니까? R-제곱 점수는 내 데이터 세트가 모델에 얼마나 잘 맞는지를 나타내는 좋은 지표입니다.


R2

R-제곱이라고도 하는 R2를 기억하십니까?

x축과 y축 사이의 관계를 측정하며 값의 범위는 0에서 1까지이며 0은 관계가 없음, 1은 완전히 관련됨을 의미합니다.

sklearn 모듈에는 r2_score() 이 관계를 찾는 데 도움이 되는 메서드가 있습니다.

이 경우 우리는 고객이 상점에 머문 시간과 그들이 지출하는 돈 사이의 관계를 측정하고자 합니다.

예시

내 훈련 데이터가 다항식 회귀에 얼마나 잘 맞습니까?

import numpy
from sklearn.metrics import r2_score
numpy.random.seed(2)

x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x

train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]

mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))

r2 = r2_score(train_y, mymodel(train_x))

print(r2)

참고: 결과 0.799는 OK 관계가 있음을 나타냅니다.

테스트 세트 가져오기

이제 우리는 적어도 훈련 데이터에 관해서는 괜찮은 모델을 만들었습니다.

이제 테스트 데이터로 모델도 테스트하여 동일한 결과가 나오는지 확인하려고 합니다.

예시

테스트 데이터를 사용할 때 R2 점수를 알아보겠습니다.

import numpy
from sklearn.metrics import r2_score
numpy.random.seed(2)

x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x

train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]

mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))

r2 = r2_score(test_y, mymodel(test_x))

print(r2)

참고: 결과 0.809는 모델도 테스트 세트에 적합함을 보여주며 우리는 모델을 사용하여 미래 값을 예측할 수 있다고 확신합니다.


값 예측

모델이 정상임을 확인했으므로 이제 새 값을 예측할 수 있습니다.

예시

구매 고객이 5분 동안 상점에 머문다면 얼마나 많은 돈을 쓸 것입니까?

print(mymodel(5))

이 예에서는 다이어그램에 해당하는 것처럼 고객이 22.88달러를 지출할 것으로 예측했습니다.