Menu
CoddyTech

예 또는 아니요 예측

Coddy Machine Learning 여정의 지도 학습 섹션에 포함된 레슨. 58개 중 16번째.

이 장에서는 확률을 사용해 예 또는 아니요로 답하는 질문을 다룹니다. 직접 만드는 스팸 필터로 마무리하며, 필터는 다음과 같이 이메일을 순위로 매깁니다.

스팸일 확률을 막대로 나타낸 8개의 이메일. 확률은 Mom의 0.02부터 WIN NOW의 0.97까지입니다. 0.5의 점선 위에 있는 막대는 빨간색이며 스팸입니다

식당 예약이 취소될까요? LogisticRegression은 지난 예약 60건을 바탕으로 이를 학습합니다. 예약을 며칠 전에 했는지, 그리고 취소했는지(1) 아니면 유지했는지(0)를 학습합니다:

예약을 며칠 전에 했는지에 따라 0(유지)과 1(취소)에 표시된 점으로 나타낸 예약 60건과, 0.07에서 0.93까지 상승하는 주황색 S자 곡선. 3일에는 0.09, 40일에는 0.72로 표시됩니다

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보다 크지 않습니다.

challenge icon

챌린지

중급

연날리기 동호회가 내일 연을 띄울 시간대 세 개를 예약합니다. kites.csv에는 과거에 연을 띄운 기록 90건이 들어 있습니다: wind_kmh와 flew이며, 연이 날아오르면 1입니다. 프로그램은 각 시간대의 예보 풍속을 slots에 입력합니다.

  1. 풍속 데이터를 사용해 LogisticRegression (max_iter=1000) 모델을 학습합니다.
  2. 각 시간대에 연이 날아오를 확률을 정수 퍼센트로 출력합니다.
  3. 예상 비행 횟수, 즉 확률의 합을 출력합니다 (소수점 이하 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})

# 아래에 코드를 작성하세요
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

지도 학습의 모든 레슨

직접 연습해 보세요: 온라인 Python 컴파일러