Samouczek Pythona

Strona główna Pythona Wprowadzenie do Pythona Wprowadzenie do Pythona Składnia Pythona Komentarze w Pythonie Zmienne w Pythonie Typy danych Pythona Liczby w Pythonie Casting w Pythonie Ciągi Pythona Wartości logiczne w Pythonie Operatory Pythona Listy Pythona Krotki Pythona Zestawy Pythona Słowniki Pythona Python, jeśli... w przeciwnym razie Pętle while Pythona Python dla pętli Funkcje Pythona Python Lambda Tablice Pythona Klasy/obiekty Pythona Dziedziczenie Pythona Iteratory Pythona Zakres Pythona Moduły Pythona Daty Pythona Matematyka w Pythonie Python JSON RegEx w Pythonie PIP w Pythonie Python Wypróbuj... Z wyjątkiem Dane wejściowe użytkownika w Pythonie Formatowanie ciągów w Pythonie

Obsługa plików

Obsługa plików w Pythonie Odczytywanie plików Pythona Zapis/Tworzenie plików w Pythonie Usuń pliki Pythona

Moduły Pythona

Samouczek NumPy Przewodnik po pandzie Samouczek Scipy

Python Matplotlib

Wprowadzenie do biblioteki Matplotlib Matplotlib Rozpocznij Matplotlib Pyplot Matplotlib kreślenie Markery Matplotlib Linia Matplotlib Etykiety Matplotlib Siatka Matplotlib Wykresy podrzędne Matplotlib Rozproszenie Matplotlib Paski Matplotlib Histogramy Matplotlib Wykresy kołowe Matplotlib

Nauczanie maszynowe

Pierwsze kroki Tryb średniej mediany Odchylenie standardowe Percentyl Dystrybucja danych Normalna dystrybucja danych Wykres punktowy Regresja liniowa Regresja wielomianowa Regresja wielokrotna Skala Trenuj/Test Drzewo decyzyjne

Python MySQL

Rozpocznij MySQL Tworzenie bazy danych MySQL Utwórz tabelę MySQL Wstaw MySQL Wybór MySQL MySQL Gdzie Zamów MySQL według Usuń MySQL Tabela upuszczania MySQL Aktualizacja MySQL Limit MySQL Dołącz do MySQL

Python MongoDB

MongoDB Rozpocznij MongoDB Utwórz bazę danych MongoDB Utwórz kolekcję Wstaw MongoDB MongoDB Znajdź Zapytanie MongoDB Sortuj MongoDB Usuń MongoDB MongoDB Drop Collection Aktualizacja MongoDB Limit MongoDB

Odniesienie do Pythona

Przegląd Pythona Wbudowane funkcje Pythona Metody ciągów Pythona Metody listy Pythona Metody słownika Pythona Metody krotek w Pythonie Metody zestawów Pythona Metody plików Pythona Słowa kluczowe w Pythonie Wyjątki Pythona Słownik Pythona

Odniesienie do modułu

Moduł losowy Moduł żądań Moduł statystyk Moduł matematyczny Moduł cMath

Instrukcje Pythona

Usuń duplikaty listy Odwróć ciąg Dodaj dwie liczby

Przykłady Pythona

Przykłady Pythona Kompilator Pythona Ćwiczenia z Pythona Quiz Pythona Certyfikat Pythona

Uczenie maszynowe — trenuj/testuj


Oceń swój model

W uczeniu maszynowym tworzymy modele do przewidywania wyniku pewnych zdarzeń, tak jak w poprzednim rozdziale, w którym przewidywaliśmy emisję CO2 samochodu znając masę i wielkość silnika.

Aby zmierzyć, czy model jest wystarczająco dobry, możemy użyć metody zwanej Train/Test.


Co to jest pociąg/test?

Train/Test to metoda pomiaru dokładności modelu.

Nazywa się Train/Test, ponieważ dzielisz zestaw danych na dwa zestawy: zestaw uczący i zestaw testowy.

80% na szkolenie i 20% na testy.

Trenujesz model za pomocą zestawu szkoleniowego .

Testujesz model za pomocą zestawu testowego .

Trenuj model oznacza tworzenie modelu.

Testowanie modelu oznacza testowanie dokładności modelu.


Zacznij od zestawu danych

Zacznij od zestawu danych, który chcesz przetestować.

Nasz zestaw danych ilustruje 100 klientów w sklepie i ich nawyki zakupowe.

Przykład

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()

Wynik:

Oś x reprezentuje liczbę minut przed dokonaniem zakupu.

Oś y przedstawia kwotę wydaną na zakup.



Podział na pociąg/test

Zbiór uczący powinien być losowym wyborem 80% oryginalnych danych.

Zestaw testowy powinien stanowić pozostałe 20%.

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

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


Wyświetl zestaw treningowy

Wyświetl ten sam wykres punktowy z zestawem treningowym:

Przykład

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

Wynik:

Wygląda jak oryginalny zestaw danych, więc wydaje się, że jest to uczciwy wybór:


Wyświetl zestaw testowy

Aby upewnić się, że zestaw testowy nie jest zupełnie inny, przyjrzymy się również zestawowi testowemu.

Przykład

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

Wynik:

Zestaw testowy również wygląda jak oryginalny zestaw danych:


Dopasuj zestaw danych

Jak wygląda zestaw danych? Moim zdaniem najlepszym dopasowaniem byłaby regresja wielomianowa , więc narysujmy linię regresji wielomianowej.

Aby narysować linię przez punkty danych, używamy plot()metody modułu matplotlib:

Przykład

Narysuj wielomianową linię regresji przez punkty danych:

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()

Wynik:

Wynik może poprzeć moją sugestię, że zestaw danych pasuje do regresji wielomianowej, chociaż dałoby nam to dziwne wyniki, jeśli spróbujemy przewidzieć wartości poza zestawem danych. Przykład: linia wskazuje, że klient spędzający 6 minut w sklepie dokonałby zakupu o wartości 200. Jest to prawdopodobnie oznaka nadmiernego dopasowania.

Ale co z wynikiem R-kwadrat? Wynik R-kwadrat jest dobrym wskaźnikiem tego, jak dobrze mój zestaw danych pasuje do modelu.


R2

Pamiętasz R2, znany również jako R-kwadrat?

Mierzy związek między osią x a osią y, a wartość mieści się w zakresie od 0 do 1, gdzie 0 oznacza brak związku, a 1 oznacza całkowity związek.

Moduł sklearn ma wywołaną metodę r2_score() , która pomoże nam znaleźć tę zależność.

W tym przypadku chcielibyśmy zmierzyć relację między minutami, w których klient przebywa w sklepie, a ilością wydanych pieniędzy.

Przykład

Jak dobrze moje dane treningowe pasują do regresji wielomianowej?

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)

Uwaga: Wynik 0,799 wskazuje, że istnieje relacja OK.

Przynieś zestaw testowy

Teraz stworzyliśmy model, który jest OK, przynajmniej jeśli chodzi o dane treningowe.

Teraz chcemy przetestować model również z danymi testowymi, aby sprawdzić, czy daje nam ten sam wynik.

Przykład

Znajdźmy wynik R2 korzystając z danych testowych:

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)

Uwaga: wynik 0,809 pokazuje, że model również pasuje do zestawu testowego i jesteśmy pewni, że możemy użyć modelu do przewidywania przyszłych wartości.


Przewidywanie wartości

Teraz, gdy ustaliliśmy, że nasz model jest OK, możemy zacząć przewidywać nowe wartości.

Przykład

Ile pieniędzy wyda klient kupujący, jeśli pozostanie w sklepie przez 5 minut?

print(mymodel(5))

Przykład przewidywał, że klient wyda 22,88 dolarów, co wydaje się odpowiadać wykresowi: