Výukový program Python

Python HOME Úvod do Pythonu Začínáme s Pythonem Syntaxe Pythonu Komentáře Pythonu Proměnné Pythonu Datové typy Pythonu Python čísla Python Casting Python řetězce Python Booleans Operátoři Pythonu Seznamy Pythonu Python n-tice Sady Pythonu Slovníky Pythonu Python If...Else Python While Loops Python pro smyčky Funkce Pythonu Python Lambda Pole Python Třídy/objekty Pythonu Dědičnost Pythonu Iterátory Pythonu Rozsah Pythonu Moduly Pythonu Data v Pythonu Matematika Pythonu Python JSON Python RegEx Python PIP Zkuste Python... Kromě Vstup uživatele Pythonu Formátování řetězců v Pythonu

Manipulace se soubory

Práce se soubory Python Soubory pro čtení Pythonu Python Zápis/Vytváření souborů Python mazat soubory

Moduly Pythonu

Výukový program NumPy Návod Panda Výukový program Scipy

Python Matplotlib

Úvod do Matplotlib Matplotlib Začínáme Matplotlib Pyplot Vykreslování Matplotlib Markery Matplotlib Linka Matplotlib Štítky Matplotlib Matplotlib Grid Matplotlib Subplots Matplotlib Scatter Bary Matplotlib Histogramy Matplotlib Koláčové grafy Matplotlib

Strojové učení

Začínáme Střední střední režim Standardní odchylka Percentil Distribuce dat Normální distribuce dat Bodový diagram Lineární regrese Polynomiální regrese Vícenásobná regrese Měřítko Vlak/test Rozhodovací strom

Python MySQL

MySQL Začínáme Vytvořit databázi MySQL Vytvořit tabulku MySQL Vložit MySQL Vyberte MySQL Kde MySQL Pořadí MySQL podle Smazat MySQL MySQL Drop Table Aktualizace MySQL Limit MySQL Připojte se k MySQL

Python MongoDB

MongoDB Začněte Vytvořit databázi MongoDB Vytvořit sbírku MongoDB Vložení MongoDB Najít MongoDB Dotaz MongoDB Řazení MongoDB Smazat MongoDB MongoDB Drop Collection Aktualizace MongoDB Limit MongoDB

Reference Pythonu

Přehled Pythonu Vestavěné funkce Pythonu Metody pythonských řetězců Metody seznamu v Pythonu Metody slovníku Python Metody Python Tuple Metody sady Python Metody souborů Python Klíčová slova Pythonu Výjimky v Pythonu Slovník Pythonu

Reference modulu

Náhodný modul Modul požadavků Modul statistiky Matematický modul cMath modul

Jak na to Python

Odebrat duplikáty seznamu Obrátit řetězec Přidejte dvě čísla

Příklady Pythonu

Příklady Pythonu Kompilátor Pythonu Cvičení Python Pythonský kvíz Python certifikát

Strojové učení – trénovat/testovat


Vyhodnoťte svůj model

Ve strojovém učení vytváříme modely pro předpovídání výsledku určitých událostí, jako v předchozí kapitole, kde jsme předpovídali emise CO2 auta, když jsme znali hmotnost a objem motoru.

K měření, zda je model dostatečně dobrý, můžeme použít metodu nazvanou Train/Test.


Co je vlak/test

Train/Test je metoda měření přesnosti vašeho modelu.

Nazývá se Train/Test, protože rozdělujete soubor dat do dvou sad: trénovací a testovací.

80 % na školení a 20 % na testování.

Model trénujete pomocí tréninkové sady.

Model otestujete pomocí testovací sady.

Trénovat model znamená vytvořit model.

Testovat model znamená testovat přesnost modelu.


Začněte souborem dat

Začněte se sadou dat, kterou chcete otestovat.

Náš soubor dat ilustruje 100 zákazníků v obchodě a jejich nákupní zvyklosti.

Příklad

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

Výsledek:

Osa x představuje počet minut před uskutečněním nákupu.

Osa y představuje množství peněz vynaložených na nákup.



Rozdělit na vlak/test

Tréninkový soubor by měl být náhodným výběrem 80 % původních dat.

Testovací sada by měla být zbývajících 20 %.

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

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


Zobrazte tréninkovou sadu

Zobrazte stejný bodový graf s tréninkovou sadou:

Příklad

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

Výsledek:

Vypadá to jako původní soubor dat, takže se zdá, že je to spravedlivý výběr:


Zobrazte testovací sadu

Abychom se ujistili, že testovací sada není úplně jiná, podíváme se také na testovací sadu.

Příklad

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

Výsledek:

Testovací sada také vypadá jako původní datová sada:


Přizpůsobit soubor dat

Jak vypadá soubor dat? Podle mého názoru si myslím, že nejvhodnější by byla polynomiální regrese , takže nakreslete čáru polynomiální regrese.

K nakreslení čáry přes datové body používáme plot()metodu modulu matplotlib:

Příklad

Nakreslete polynomiální regresní čáru přes datové body:

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

Výsledek:

Výsledek může podpořit můj návrh souboru dat, který vyhovuje polynomiální regresi, i když by nám to dalo nějaké divné výsledky, pokud bychom se pokusili předpovědět hodnoty mimo soubor dat. Příklad: čára ukazuje, že zákazník, který v obchodě stráví 6 minut, nakoupí v hodnotě 200. To je pravděpodobně známka nadměrného vybavení.

Ale co R-kvadrát skóre? Skóre R-squared je dobrým ukazatelem toho, jak dobře můj soubor dat odpovídá modelu.


R2

Pamatujete si R2, také známý jako R-squared?

Měří vztah mezi osou x a osou y a hodnota se pohybuje od 0 do 1, kde 0 znamená žádný vztah a 1 znamená zcela související.

Modul sklearn má metodu nazvanou r2_score() , která nám pomůže tento vztah najít.

V tomto případě bychom rádi změřili vztah mezi minutami, kdy zákazník v obchodě zůstane, a tím, kolik peněz utratí.

Příklad

Jak dobře zapadají moje tréninková data do polynomiální regrese?

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)

Poznámka: Výsledek 0,799 ukazuje, že existuje vztah OK.

Přineste testovací sadu

Nyní jsme vytvořili model, který je v pořádku, alespoň pokud jde o tréninková data.

Nyní chceme otestovat model také s testovacími daty, abychom zjistili, zda nám dává stejný výsledek.

Příklad

Pojďme najít skóre R2 při použití testovacích dat:

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)

Poznámka: Výsledek 0,809 ukazuje, že model také vyhovuje testovací sadě a jsme si jisti, že model můžeme použít k předpovědi budoucích hodnot.


Předvídat hodnoty

Nyní, když jsme zjistili, že náš model je v pořádku, můžeme začít předpovídat nové hodnoty.

Příklad

Kolik peněz utratí kupující, když zůstane v obchodě 5 minut?

print(mymodel(5))

Příklad předpovídal, že zákazník utratí 22,88 dolarů, jak se zdá, odpovídá diagramu: