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 Pythona 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 — regresja wielomianowa


Regresja wielomianowa

Jeśli twoje punkty danych wyraźnie nie pasują do regresji liniowej (linia prosta przechodząca przez wszystkie punkty danych), może to być idealne rozwiązanie dla regresji wielomianowej.

Regresja wielomianowa, podobnie jak regresja liniowa, wykorzystuje zależność między zmiennymi x i y, aby znaleźć najlepszy sposób na narysowanie linii przez punkty danych.


Jak to działa?

Python ma metody znajdowania relacji między punktami danych i rysowania linii regresji wielomianowej. Pokażemy Ci, jak korzystać z tych metod zamiast przechodzić przez wzór matematyczny.

W poniższym przykładzie zarejestrowaliśmy 18 samochodów, które przejeżdżały przez określony punkt poboru opłat.

Zarejestrowaliśmy prędkość samochodu, a także porę dnia (godzinę) mijania.

Oś x reprezentuje godziny dnia, a oś y prędkość:

Przykład

Zacznij od narysowania wykresu punktowego:

import matplotlib.pyplot as plt

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

plt.scatter(x, y)
plt.show()

Wynik:

Przykład

Zaimportuj numpy, a matplotlibnastępnie narysuj linię regresji wielomianowej:

import numpy
import matplotlib.pyplot as plt

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

myline = numpy.linspace(1, 22, 100)

plt.scatter(x, y)
plt.plot(myline, mymodel(myline))
plt.show()

Wynik:

Przykład wyjaśniony

Zaimportuj potrzebne moduły.

Możesz dowiedzieć się o module NumPy w naszym samouczku NumPy .

Możesz dowiedzieć się o module SciPy w naszym samouczku SciPy .

import numpy
import matplotlib.pyplot as plt

Utwórz tablice reprezentujące wartości osi x i y:

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

NumPy posiada metodę, która pozwala na stworzenie modelu wielomianowego:

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

Następnie określ sposób wyświetlania linii, zaczynamy od pozycji 1, a kończymy na pozycji 22:

myline = numpy.linspace(1, 22, 100)

Narysuj oryginalny wykres punktowy:

plt.scatter(x, y)

Narysuj linię regresji wielomianowej:

plt.plot(myline, mymodel(myline))

Wyświetl schemat:

plt.show()



R-kwadrat

Ważne jest, aby wiedzieć, jak dobrze jest związek między wartościami osi x i y, jeśli nie ma związku, regresji wielomianowej nie można użyć do przewidzenia czegokolwiek.

Zależność mierzy się wartością zwaną r-kwadrat.

Wartość r-kwadrat mieści się w zakresie od 0 do 1, gdzie 0 oznacza brak związku, a 1 oznacza 100% powiązania.

Python i moduł Sklearn obliczą tę wartość za Ciebie, wszystko, co musisz zrobić, to nakarmić ją tablicami x i y:

Przykład

Jak dobrze moje dane pasują do regresji wielomianowej?

import numpy
from sklearn.metrics import r2_score

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

print(r2_score(y, mymodel(x)))

Uwaga: Wynik 0,94 pokazuje, że istnieje bardzo dobra zależność i możemy użyć regresji wielomianowej w przyszłych przewidywaniach.


Przewiduj przyszłe wartości

Teraz możemy wykorzystać zebrane informacje do przewidywania przyszłych wartości.

Przykład: Spróbujmy przewidzieć prędkość samochodu przejeżdżającego przez bramkę około godziny 17:

Aby to zrobić, potrzebujemy tej samej mymodeltablicy z powyższego przykładu:

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

Przykład

Wytypuj prędkość przejeżdżającego samochodu o godzinie 17:

import numpy
from sklearn.metrics import r2_score

x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22]
y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

speed = mymodel(17)
print(speed)

Przykład przewidywał prędkość 88,87, co również mogliśmy odczytać z wykresu:


Złe dopasowanie?

Stwórzmy przykład, w którym regresja wielomianowa nie byłaby najlepszą metodą przewidywania przyszłych wartości.

Przykład

Te wartości dla osi x i y powinny skutkować bardzo złym dopasowaniem dla regresji wielomianowej:

import numpy
import matplotlib.pyplot as plt

x = [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40]
y = [21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

myline = numpy.linspace(2, 95, 100)

plt.scatter(x, y)
plt.plot(myline, mymodel(myline))
plt.show()

Wynik:

A wartość r-kwadrat?

Przykład

Powinieneś otrzymać bardzo niską wartość r-kwadrat.

import numpy
from sklearn.metrics import r2_score

x = [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40]
y = [21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15]

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

print(r2_score(y, mymodel(x)))

Wynik: 0,00995 wskazuje na bardzo złą zależność i mówi nam, że ten zestaw danych nie nadaje się do regresji wielomianowej.