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í – lineární regrese


Regrese

Termín regrese se používá, když se snažíte najít vztah mezi proměnnými.

Ve strojovém učení a ve statistickém modelování se tento vztah používá k předpovídání výsledku budoucích událostí.


Lineární regrese

Lineární regrese používá vztah mezi datovými body k nakreslení přímky skrz všechny.

Tento řádek lze použít k předpovědi budoucích hodnot.

Ve strojovém učení je předpovídání budoucnosti velmi důležité.


Jak to funguje?

Python má metody pro nalezení vztahu mezi datovými body a pro nakreslení čáry lineární regrese. Ukážeme vám, jak tyto metody použít místo procházení matematického vzorce.

V níže uvedeném příkladu osa x představuje věk a osa y rychlost. Zaregistrovali jsme stáří a rychlost 13 aut, když projížděla kolem mýtnice. Podívejme se, zda lze shromážděná data použít v lineární regresi:

Příklad

Začněte kreslením bodového grafu:

import matplotlib.pyplot as plt

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

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

Výsledek:

Příklad

Importujte scipya nakreslete čáru lineární regrese:

import matplotlib.pyplot as plt
from scipy import stats

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

slope, intercept, r, p, std_err = stats.linregress(x, y)

def myfunc(x):
  return slope * x + intercept

mymodel = list(map(myfunc, x))

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

Výsledek:

Příklad vysvětlen

Importujte moduly, které potřebujete.

O modulu Matplotlib se můžete dozvědět v našem Matplotlib Tutorial .

O modulu SciPy se můžete dozvědět v našem SciPy Tutoriálu .

import matplotlib.pyplot as plt
from scipy import stats

Vytvořte pole, která představují hodnoty osy x a y:

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

Proveďte metodu, která vrátí některé důležité klíčové hodnoty lineární regrese:

slope, intercept, r, p, std_err = stats.linregress(x, y)

Vytvořte funkci, která používá hodnoty slopea interceptk vrácení nové hodnoty. Tato nová hodnota představuje místo, kde na ose y bude umístěna odpovídající hodnota x:

def myfunc(x):
  return slope * x + intercept

Proveďte každou hodnotu pole x funkcí. Výsledkem bude nové pole s novými hodnotami pro osu y:

mymodel = list(map(myfunc, x))

Nakreslete původní bodový graf:

plt.scatter(x, y)

Nakreslete čáru lineární regrese:

plt.plot(x, mymodel)

Zobrazit diagram:

plt.show()



R pro vztah

Je důležité vědět, jaký je vztah mezi hodnotami osy x a hodnotami osy y, pokud žádný vztah neexistuje, nelze lineární regresi použít k předpovědi čehokoli.

Tento vztah - koeficient korelace - se nazývá r.

Hodnota rse pohybuje od -1 do 1, kde 0 znamená žádný vztah a 1 (a -1) znamená 100% vztah.

Python a modul Scipy vám tuto hodnotu spočítají, vše, co musíte udělat, je přidat hodnoty x a y.

Příklad

Jak dobře zapadají moje data do lineární regrese?

from scipy import stats

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

slope, intercept, r, p, std_err = stats.linregress(x, y)

print(r)

Poznámka: Výsledek -0,76 ukazuje, že existuje vztah, ne dokonalý, ale naznačuje, že bychom v budoucích předpovědích mohli použít lineární regresi.


Předvídat budoucí hodnoty

Nyní můžeme získané informace použít k předpovědi budoucích hodnot.

Příklad: Zkusme předpovědět rychlost 10 let starého auta.

K tomu potřebujeme stejnou myfunc()funkci z příkladu výše:

def myfunc(x):
  return slope * x + intercept

Příklad

Předpovězte rychlost 10 let starého auta:

from scipy import stats

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

slope, intercept, r, p, std_err = stats.linregress(x, y)

def myfunc(x):
  return slope * x + intercept

speed = myfunc(10)

print(speed)

Příklad předpovídal rychlost na 85,6, což jsme také mohli vyčíst z diagramu:


Špatná kondice?

Vytvořme příklad, kde by lineární regrese nebyla nejlepší metodou k předpovědi budoucích hodnot.

Příklad

Tyto hodnoty pro osu x a y by měly vést k velmi špatnému přizpůsobení pro lineární regresi:

import matplotlib.pyplot as plt
from scipy import stats

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]

slope, intercept, r, p, std_err = stats.linregress(x, y)

def myfunc(x):
  return slope * x + intercept

mymodel = list(map(myfunc, x))

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

Výsledek:

A rpro vztah?

Příklad

Měli byste získat velmi nízkou rhodnotu.

import numpy
from scipy import stats

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]

slope, intercept, r, p, std_err = stats.linregress(x, y)

print(r)

Výsledek: 0,013 označuje velmi špatný vztah a říká nám, že tento soubor dat není vhodný pro lineární regresi.