Wiele klas
Część sekcji Uczenie nadzorowane ścieżki Machine Learning w Coddy. Lekcja 19 z 58.
Cytryna, limonka czy pomarańcza? Regresja logistyczna radzi sobie również z trzema klasami. Oto nowy owoc, który trafia między cytryny a pomarańcze:
model = LogisticRegression(max_iter=1000)
model.fit(X, kind) # X: średnica, waga; kind: cytryna, limonka lub pomarańcza
print(model.classes_)
print(np.round(model.predict_proba([[6.7, 144]]), 2))
print(model.predict([[6.7, 144]]))To wyświetla:
['lemon' 'lime' 'orange']
[[0.61 0. 0.39]]
['lemon']Każdy wiersz zawiera prawdopodobieństwo dla każdej klasy, w kolejności classes_, a ich suma wynosi 1. predict wybiera największe.
Model pokazuje, na ile jest pewny: 61% dla cytryny to niewielka przewaga, warto przyjrzeć się temu jeszcze raz.
Wyzwanie
ŚredniAplikacja podcastowa klasyfikuje nowe odcinki jako komedię, wiadomości lub true crime. Kod początkowy dopasowuje model LogisticRegression do danych z pliku episodes.csv (długość, liczba prowadzących, śmiechów na minutę) i wczytuje nowy odcinek do episode, czyli tabeli z jednym wierszem.
Uzupełnij describe(episode):
- Wypisz szansę dla każdego typu programu, w kolejności z
model.classes_, zaokrągloną do pełnego procentu. - Zwróć najbardziej prawdopodobny typ.
Dla odcinka z innej aplikacji:
comedy: 12%
news: 70%
true crime: 18%
Best guess: newsSpróbuj swoich sił
import pandas as pd
from sklearn.linear_model import LogisticRegression
episodes = pd.read_csv("episodes.csv")
features = ["length_min", "speakers", "laughs_per_min"]
model = LogisticRegression(max_iter=1000)
model.fit(episodes[features], episodes["show_type"])
# Wypisuje prawdopodobieństwo każdego typu programu dla jednego odcinka (tabela z jednym wierszem), a następnie zwraca najbardziej prawdopodobny typ
def describe(episode):
# Wpisz tutaj swój kod
return "unknown"
# Nie zmieniaj poniższych wierszy: nowy odcinek na podstawie danych wejściowych
length = float(input())
speakers = int(input())
laughs = float(input())
episode = pd.DataFrame({"length_min": [length], "speakers": [speakers], "laughs_per_min": [laughs]})
best = describe(episode)
print(f"Best guess: {best}")
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Uczenie nadzorowane
1Twój pierwszy model
Uczenie się na przykładachZbiory treningowe i testoweDopasowywanie i przewidywanieOcena modeluPodsumowanie: Sortownik nasion4Regresja logistyczna
Przewidywanie „tak” lub „nie”Próg decyzyjnyWagi jako dowodyWiele klasPodsumowanie: filtr spamu2Najbliżsi sąsiedzi
Jak działa k-NNWybór kGranice decyzyjneSkalowanie dla sąsiadówPodsumowanie: sąsiedzi w zbiorze Wine5Ocena klasyfikatorów
Macierz pomyłekPrecyzja i czułośćWynik F1Niezrównoważone klasyKrzywe ROCPodsumowanie: test przesiewowy8Walidacja krzyżowa
Walidacja k-krotnaUczciwe porównywanie modeliPrzeszukiwanie siatkiPodsumowanie: naprawa deskorolki11Projekt: Gatunki pingwinów
Poznaj pingwinyPrzygotuj daneWybierz modelDopracuj zwycięski modelWdróż modelPoćwicz samodzielnie: Kompilator Python online