예 또는 아니요 예측
Coddy Machine Learning 여정의 지도 학습 섹션에 포함된 레슨. 58개 중 16번째.
이 장에서는 확률을 사용해 예 또는 아니요로 답하는 질문을 다룹니다. 직접 만드는 스팸 필터로 마무리하며, 필터는 다음과 같이 이메일을 순위로 매깁니다.
식당 예약이 취소될까요? LogisticRegression은 지난 예약 60건을 바탕으로 이를 학습합니다. 예약을 며칠 전에 했는지, 그리고 취소했는지(1) 아니면 유지했는지(0)를 학습합니다:
from sklearn.linear_model import LogisticRegression
model = LogisticRegression(max_iter=1000) # 학습을 마치기에 충분한 반복 횟수
model.fit(X, cancelled) # X: 남은 일수, 열 하나
print(np.round(model.predict_proba([[3], [40]]), 2))다음이 출력됩니다:
[[0.91 0.09]
[0.28 0.72]]각 예약의 행에는 클래스 0일 확률이 먼저, 그다음 클래스 1일 확률이 들어 있습니다. [:, 1]은 취소를 의미하는 클래스 1일 확률을 가져옵니다.
이 값은 S자 형태를 따릅니다. 확률이 그래야 하듯이 0보다 작거나 1보다 크지 않습니다.
챌린지
중급연날리기 동호회가 내일 연을 띄울 시간대 세 개를 예약합니다. kites.csv에는 과거에 연을 띄운 기록 90건이 들어 있습니다: wind_kmh와 flew이며, 연이 날아오르면 1입니다. 프로그램은 각 시간대의 예보 풍속을 slots에 입력합니다.
- 풍속 데이터를 사용해
LogisticRegression(max_iter=1000) 모델을 학습합니다. - 각 시간대에 연이 날아오를 확률을 정수 퍼센트로 출력합니다.
- 예상 비행 횟수, 즉 확률의 합을 출력합니다 (소수점 이하 1자리).
다른 동호회의 경우:
6 km/h: 9% chance the kite flies
18 km/h: 64% chance the kite flies
30 km/h: 97% chance the kite flies
Expected flights: 1.7 of 3직접 해보기
import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression
# 지난 90번의 연 날리기 시도: 풍속(km/h)과 flew(연이 날아올랐다면 1)
kites = pd.read_csv("kites.csv")
# 예보된 풍속에 따른 내일의 연 날리기 시간대 3개
winds = []
for i in range(3):
winds.append(int(input()))
slots = pd.DataFrame({"wind_kmh": winds})
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러