Menu
CoddyTech

Przewidywanie „tak” lub „nie”

Część sekcji Uczenie nadzorowane ścieżki Machine Learning w Coddy. Lekcja 16 z 58.

W tym rozdziale odpowiesz na pytania typu tak lub nie za pomocą prawdopodobieństw. Na koniec zbudujesz filtr spamu, który będzie klasyfikować e-maile tak:

Osiem e-maili przedstawionych jako słupki pokazujące prawdopodobieństwo, że są spamem: od 0.02 dla Mamy do 0.97 dla WIN NOW. Słupki powyżej przerywanej linii przy 0.5 są czerwone: spam

Czy rezerwacja w restauracji zostanie odwołana? LogisticRegression uczy się na podstawie 60 wcześniejszych rezerwacji: liczby dni wyprzedzenia oraz tego, czy rezerwacja została odwołana (1), czy zrealizowana (0):

Sześćdziesiąt rezerwacji przedstawionych jako kropki przy wartościach 0 (zrealizowana) i 1 (odwołana) w zależności od liczby dni wyprzedzenia oraz pomarańczowa krzywa w kształcie litery S, rosnąca od 0.07 do 0.93. Dla 3 dni wskazuje 0.09, a dla 40 dni 0.72

from sklearn.linear_model import LogisticRegression

model = LogisticRegression(max_iter=1000)  # wystarczająca liczba kroków do zakończenia uczenia
model.fit(X, cancelled)  # X: liczba dni do przodu, jedna kolumna
print(np.round(model.predict_proba([[3], [40]]), 2))

To wyświetla:

[[0.91 0.09]
 [0.28 0.72]]

Wiersz każdego zamówienia zawiera prawdopodobieństwo klasy 0, a następnie klasy 1. [:, 1] zachowuje prawdopodobieństwa klasy 1, czyli anulowania.

Tworzą kształt litery S: nigdy nie spadają poniżej 0 ani nie przekraczają 1, tak jak powinno być w przypadku prawdopodobieństw.

challenge icon

Wyzwanie

Średni

Klub latawcowy rezerwuje trzy terminy startów na jutro. Plik kites.csv zawiera dane o 90 wcześniejszych startach: wind_kmh oraz flew, czyli 1, jeśli latawiec wzbił się w powietrze. Program odczytuje prognozowany wiatr dla każdego terminu do slots.

  1. Dopasuj model LogisticRegression (max_iter=1000) do danych o wietrze.
  2. Wypisz prawdopodobieństwo lotu dla każdego terminu, zaokrąglone do pełnego procenta.
  3. Wypisz oczekiwaną liczbę lotów: sumę prawdopodobieństw (z dokładnością do 1 miejsca po przecinku).

Dla innego klubu:

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

Spróbuj swoich sił

import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression

# 90 wcześniejszych prób startu: prędkość wiatru w km/h oraz flew (1, jeśli latawiec wzbił się w powietrze)
kites = pd.read_csv("kites.csv")
# Trzy jutrzejsze terminy startu według prognozowanej prędkości wiatru
winds = []
for i in range(3):
    winds.append(int(input()))
slots = pd.DataFrame({"wind_kmh": winds})

# Napisz swój kod poniżej
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Uczenie nadzorowane

Poćwicz samodzielnie: Kompilator Python online