Numpy směrodatná odchylka vysvětlena
tento tutoriál vysvětlí, jak používat funkci Numpy směrodatná odchylka (AKA, np.std).
na vysoké úrovni je funkce Numpy směrodatná odchylka jednoduchá. Vypočítává směrodatnou odchylku hodnot v Numpy poli.
ale podrobnosti o tom, jak přesně funkce funguje, jsou trochu složité a vyžadují nějaké vysvětlení.
Jak již bylo řečeno, tento tutoriál vysvětlí, jak používat funkci Numpy směrodatné odchylky.
vysvětlí syntaxi np.std (), a ukázat vám jasné, krok za krokem příklady toho, jak funkce funguje.
výukový program je uspořádán do sekcí. Můžete kliknout na některý z následujících odkazů, který vás přenese do příslušné sekce.
Obsah:
- velmi rychlý přehled Numpy
- Úvod do Numpy směrodatná odchylka
- syntaxe np.std
- Numpy příklady směrodatné odchylky
- Numpy standardní odchylka FAQ
poté, co řekl, že pokud jste relativně nový Numpy, budete chtít přečíst celý tutoriál.
- rychlá recenze Numpy
- Numpy je sada nástrojů pro práci s číselnými daty
- Numpy poskytuje nástroje pro manipulaci Numpy polí
- rychlý úvod do Numpy směrodatné odchylky
- rychlá poznámka, Pokud jste ve statistice noví
- syntaxe np.std
- rychlá poznámka: přesná syntaxe závisí na tom, jak importujete Numpy
- np.syntaxe STD
- parametry numpy.std
- a(požadováno)
- axis
- dtype
- ddof
- out
- keepdims
- příklady, jak používat Numpy směrodatnou odchylku
- nejprve spusťte tento kód
- příklad 1: Vypočítejte směrodatnou odchylku 1 rozměrového pole
- Vytvořte 1D pole
- Vypočítejte standardní dev
- jedna rychlá poznámka
- PŘÍKLAD 2: Výpočet směrodatné odchylky z 2-rozměrné pole
- Vytvořte 2rozměrné pole
- Vypočítejte směrodatnou odchylku pomocí np.std
- příklad 3: Vypočítejte směrodatnou odchylku sloupců
- Vytvořte 2rozměrné pole
- použijte np.std pro výpočet směrodatné odchylky sloupců
- vysvětlení
- příklad 4: Použití np.std pro výpočet směrodatných odchylek řádků
- Vytvořte 2rozměrné pole
- použijte np.std pro výpočet směrodatné odchylky řádků
- Vysvětlení
- příklad 5: Změňte stupně volnosti
- Vytvořte Numpy pole
- vytvořit vzorek
- Vypočítejte směrodatnou odchylku vzorku
- Vysvětlení
- PŘÍKLAD 6: Použití keepdims parametr v np.std
- Vytvořte 2rozměrné pole
- Podívejte se na rozměry
- Vypočítejte směrodatnou odchylku a zkontrolujte rozměry
- při použití np Zachovejte původní rozměry.std
- Často kladené otázky o Numpy směrodatná odchylka
- Otázka 1: Proč numpy std () dává jiný výsledek než matlab std() nebo jiný programovací jazyk?
- nechte své další otázky v komentářích níže
- Připojte se do našeho kurzu se dozvíte více o Numpy
rychlá recenze Numpy
Začněme s veeeery rychlou revizí Numpy.
Co je Numpy?
Numpy je sada nástrojů pro práci s číselnými daty
Zjednodušeně řečeno, Numpy je sada nástrojů pro práci s číselnými daty.
nejprve má Numpy sadu nástrojů pro vytvoření datové struktury nazvané Numpy array.
můžete si představit Numpy pole jako řádek a sloupec mřížky čísel. Numpy pole mohou být 1-dimenzionální, 2-dimenzionální, nebo dokonce n-dimenzionální.
2D pole vypadá takto:
pro jednoduchost se v tomto tutoriálu budeme držet polí 1 nebo 2-dimentional.
existuje celá řada způsobů, jak vytvořit různé typy polí s různými druhy čísel. Několik dalších nástrojů pro vytváření Numpy polí patří numpy uspořádat, numpy nuly, numpy ty, numpy dlaždice, a další metody.
bez ohledu na to, jak si vytvořit Numpy pole, na vysoké úrovni, jsou to prostě pole čísel.
Numpy poskytuje nástroje pro manipulaci Numpy polí
Numpy poskytuje nejen nástroje pro vytváření Numpy polí, Numpy také poskytuje nástroje pro práci s Numpy polí.
některé z nejdůležitějších z těchto Numpy nástrojů jsou Numpy funkce pro provádění výpočtů.
K dispozici je celá sada Numpy funkcí pro dělat věci jako:
- výpočetní technika součet z Numpy array
- výpočet maximální
- výpočet exponenciální čísla v poli
- výpočet hodnoty x na nějakou mocninu, pro každou hodnotu v Numpy array
… a řadu dalších výpočtů.
Numpy směrodatná odchylka je v podstatě hodně jako tyto ostatní Numpy nástroje. Používá se pouze k provedení výpočtu (směrodatná odchylka) skupiny čísel v Numpy poli.
rychlý úvod do Numpy směrodatné odchylky
na velmi vysoké úrovni je směrodatná odchylka měřítkem šíření datové sady. Jedná se zejména o měřítko toho, jak daleko jsou datové body od průměru dat.
podívejme se stručně na základní výpočet.
směrodatná odchylka se vypočítá jako druhá odmocnina rozptylu.
takže pokud máme dataset s čísla, rozptyl bude:
A směrodatná odchylka bude odmocnina z rozptylu:
Kde:
= jednotlivé hodnoty v datovém souboru
= počet hodnot v datovém souboru
= průměr z hodnot
Většinu času, výpočet směrodatné odchylky v ruce, je trochu náročné, protože budete potřebovat pro výpočet průměrné odchylky každý datapoint od průměru, pak čtverec odchylek, atd. Upřímně řečeno, je to trochu únavné.
Pokud však pracujete v Pythonu, můžete pro výpočet použít funkci Numpy směrodatné odchylky.
rychlá poznámka, Pokud jste ve statistice noví
, protože tento blogový příspěvek je o použití numpy.funkce std (), nechci se dostat příliš hluboko do plevele o tom, jak se výpočet provádí ručně. Tento tutoriál je opravdu o tom, jak tuto funkci používáme. Takže pokud potřebujete rychlý přehled o tom, co je směrodatná odchylka, můžete sledovat toto video.
Ok. Po rychlém přezkoumání standardní odchylky se podívejme na syntaxi pro np.std.
syntaxe np.std
syntaxe funkce Numpy směrodatné odchylky je poměrně jednoduchá.
vysvětlím to za sekundu, ale nejprve vám chci říct jednu rychlou poznámku o syntaxi Numpy.
rychlá poznámka: přesná syntaxe závisí na tom, jak importujete Numpy
typicky, když píšeme syntaxi Numpy, používáme alias „np“. To je běžná konvence většiny vědců v oblasti dat.
Chcete-li nastavit tento alias, musíte importovat Numpy takto:
import numpy as np
Pokud se import Numpy s alias, budeme moci zavolat Numpy směrodatná odchylka funkce jako np.std()
.
Ok, jak již bylo řečeno, podívejme se blíže na syntaxi.
np.syntaxe STD
na vysoké úrovni, syntaxe pro np.std vypadá takto:
Jak jsem již zmínil dříve, za předpokladu, že jsme importované Numpy s alias „np
“ voláme funkci s syntaxe np.std()
.
pak uvnitř závorky existuje několik parametrů, které vám umožňují přesně řídit, jak funkce funguje.
pojďme se podívat na tyto parametry.
parametry numpy.std
existuje několik důležitých parametrů, které byste měli vědět:
a
axis
dtype
ddof
keepdims
out
Pojďme se podívat na každý z nich.
a
(požadováno)
a
parametr určuje pole hodnot, přes které chcete spočítat standardní odchylku.
řekl jinak, to vám umožní zadat vstupní pole k funkci.
vhodné vstupy zahrnují Numpy pole, ale také objekty typu“ array like“, jako jsou seznamy Pythonu.
důležité je, že musíte zadat vstup do tohoto parametru. Je vyžadován vstup.
tento parametr může být implicitní nebo explicitní. Co tím myslím, je, že můžete přímo zadat parametr a=
, NEBO můžete nechat parametr z vašeho syntaxe, a jen zadejte název vstupního pole.
ukážu vám příklady v příkladu 1.
axis
parametr osa umožňuje určit osu, podél které bude vypočtena směrodatná odchylka.
abyste tomu porozuměli, musíte pochopit osy.
Numpy pole mají osy.
můžete si představit “ osu “ jako směr podél pole.
v 2rozměrném poli budou 2 osy: osa-0 a osa-1.
ve 2D poli osa – 0 bodů dolů podél řádků a osa-1 bodů vodorovně podél sloupců.
vizuálně si můžete představit osy 2D pole, jako je tento:
pomocí parametru axis
můžete vypočítat směrodatnou odchylku v určitém směru podél pole.
to je nejlépe ilustrováno příklady, takže vám ukážu příklad v příkladu 2.
(úplné vysvětlení OS Numpy array naleznete v našem tutoriálu nazvaném Numpy axes explained.)
dtype
(volitelné)dtype
parametr umožňuje vám určit typ dat, který chcete použít při np.std vypočítá směrodatnou odchylku.
pokud jsou data ve vstupním poli celá čísla, pak bude výchozí hodnota float64
.
V opačném případě, pokud jsou data ve vstupním poli plováky, bude toto výchozí pro stejný typ plováku jako vstupní pole.
ddof
(volitelné)
To vám umožní zadat“ stupně volnosti “ pro výpočet.
abyste tomu porozuměli, musíte se znovu podívat na rovnici 2.
V této rovnici první člen je .
nezapomeňte: je počet hodnot v poli nebo datové sadě.
ale pokud uvažujeme statisticky, je ve skutečnosti rozdíl mezi výpočtem směrodatné odchylky populace a směrodatné odchylky vzorku.
pokud vypočítáme směrodatnou odchylku populace, použijeme v naší rovnici výraz .
Nicméně, když jsme se vypočítat směrodatnou odchylku na vzorku dat (vzorek datapoints), pak musíme upravit rovnici tak, že hlavní termín je . V tom případě rovnice pro vzorek směrodatná odchylka se stane:
Jak implementovat toto s np.std?
to můžeme provést pomocí parametru ddof
nastavením ddof = 1
.
a ve skutečnosti můžeme nastavit výraz ddof
obecněji. Když jsme se použít ddof
, to bude změnit standardní odchylka výpočtu stát:
Chcete-li být upřímný, je to trochu technické. Pokud se o tom chcete dozvědět více, měli byste se podívat na toto video na Khan academy o stupních volnosti, a populace vs směrodatná odchylka vzorku.
out
(volitelné)out
parametr umožňuje zadat alternativní pole, ve kterém se dát na výstup.
měl by mít stejný tvar jako očekávaný výstup.
keepdims
(volitelné)keepdims
parametr může být použit, aby „držet“ původní počet dimenzí. Když nastavíte keepdims = True
, výstup bude mít stejný počet rozměrů jako vstup.
pamatujte: když vypočítáme směrodatnou odchylku, výpočet „zhroutí“ počet dimenzí.
Pokud například zadáme 2rozměrné pole jako vstup, pak ve výchozím nastavení np.std vypíše číslo. Skalární hodnota.
Ale pokud chceme, aby výstup číslo ve 2D pole (tj. výstupní matice se stejnými rozměry jako vstup), pak můžeme nastavit keepdims = True
.
abych byl upřímný, některé z těchto parametrů jsou trochu abstraktní a myslím, že s příklady budou mít mnohem větší smysl.
podívejme se na některé příklady.
příklady, jak používat Numpy směrodatnou odchylku
zde budeme pracovat na několika příkladech. Začneme jednoduše a pak zvýšíme složitost.
Příklady:
- Vypočítat standardní odchylku 1-rozměrné pole
- Výpočet standardní odchylky 2-rozměrné pole
- Využití np.std pro výpočet směrodatných odchylek sloupců
- použijte np.std pro výpočet směrodatných odchylek řádků
- změňte stupně volnosti
- použijte parametr keepdims v np.std
nejprve spusťte tento kód
než spustíte některý z příkladů kódu, musíte importovat Numpy.
K tomu, můžete spustit následující kód:
import numpy as np
import Numpy s alias „np
„.
příklad 1: Vypočítejte směrodatnou odchylku 1 rozměrového pole
zde začneme jednoduše.
vypočítáme směrodatnou odchylku 1-dimenzionálního Numpy pole.
Vytvořte 1D pole
nejprve vytvoříme naše 1D pole:
array_1d = np.array()
Vypočítejte standardní dev
nyní vypočítáme směrodatnou odchylku těchto čísel.
np.std(array_1d)
OUT:
30.84369195367723
tak co se tady stalo?
NP.funkce std právě vypočítala směrodatnou odchylku čísel pomocí rovnice 2, kterou jsme viděli dříve. Každé číslo je jedním z v této rovnici.
jedna rychlá poznámka
ve výše uvedeném příkladu jsme explicitně nepoužili parametr a=
. To proto, že np.std chápe, že když jsme poskytují argument pro funkci, jako v kódu np.std(array_1d)
, vstup by měl být předán do a
parametr.
Případně můžete také explicitně pomocí a=
parametry:
np.std(a = array_1d)
:
30.84369195367723
PŘÍKLAD 2: Výpočet směrodatné odchylky z 2-rozměrné pole
na tlačítko Ok. Nyní se podívejme na příklad s 2rozměrným polem.
Vytvořte 2rozměrné pole
zde vytvoříme 2D pole pomocí np.náhodný.randintova funkce.
np.random.seed(22)array_2d = np.random.randint(20, size =(3, 4))
toto pole má 3 řádky a 4 sloupce.
vytiskneme to, abychom to viděli.
print(array_2d)
:
]
Tohle je jen 2D pole, které obsahuje 12 náhodných celých čísel mezi 0 a 20.
Vypočítejte směrodatnou odchylku pomocí np.std
Dobře, pojďme vypočítat směrodatnou odchylku.
np.std(array_2d)
OUT:
5.007633062524539
zde, numpy.std() je jen výpočet směrodatné odchylky všech 12 celých čísel.
směrodatná odchylka je 5.007633062524539
.
příklad 3: Vypočítejte směrodatnou odchylku sloupců
nyní vypočítáme směrodatnou odchylku sloupců.
k tomu musíme použít parametr axis
. (O parametru axis
jste se dozvěděli v sekci o parametrech numpy.std)
konkrétně musíme nastavit axis = 0
.
proč?
jak jsem již zmínil ve vysvětlení parametru axis
, Numpy pole mají osy.
v dvojrozměrném poli je osa-0 osa, která směřuje dolů.
když používáme numpy.std s axis = 0
, která vypočítá směrodatné odchylky směrem dolů ve směru osy-0.
pojďme se podívat na příklad, abyste viděli, co tím myslím.
Vytvořte 2rozměrné pole
nejprve vytvoříme 2D pole pomocí np.náhodný.randintova funkce.
(Toto je stejné pole, jaké jsme vytvořili v příkladu 2, takže pokud jste jej již vytvořili,neměli byste jej znovu vytvářet.)
np.random.seed(22)array_2d = np.random.randint(20, size =(3, 4))
pojďme to vytisknout, abychom to mohli vidět.
print(array_2d)
:
]
Tohle je jen 2D pole, které obsahuje čísla mezi 0 a 20.
použijte np.std pro výpočet směrodatné odchylky sloupců
nyní nastavíme axis = 0
uvnitř np.std pro výpočet směrodatných odchylek sloupců.
np.std(array_2d, axis = 0)
OUT:
array()
vysvětlení
Co se tady děje?
při použití np.std s axis = 0
Numpy vypočítá směrodatnou odchylku směrem dolů ve směru osy-0. Pamatujte, jak jsem zmínil výše, osa – 0 bodů dolů.
to má za následek výpočet směrodatné odchylky každého sloupce Numpy pole.
nyní uděláme podobný příklad s řádkovými směrodatnými odchylkami.
příklad 4: Použití np.std pro výpočet směrodatných odchylek řádků
nyní použijeme np.std pro výpočet směrodatných odchylek vodorovně podél 2D numpy pole.
pamatujte, co jsem řekl dříve: numpy pole mají osy. Osy jsou jako směry podél Numpy pole. Ve 2D poli, osa-1 body vodorovně, jako je tento:
Pokud tedy chceme vypočítat standardní odchylky vodorovně, můžeme nastavit axis = 1
. To má za následek výpočet směrodatných odchylek řádku.
pojďme se podívat.
Vytvořte 2rozměrné pole
pro spuštění tohoto příkladu budeme opět potřebovat 2D Numpy pole, takže vytvoříme 2D pole pomocí np.náhodný.randintova funkce.
(Toto je stejné pole, jaké jsme vytvořili v příkladu 2, takže pokud jste jej již vytvořili,neměli byste jej znovu vytvářet.)
np.random.seed(22)array_2d = np.random.randint(20, size =(3, 4))
pojďme to vytisknout, abychom to mohli vidět.
print(array_2d)
:
]
Tohle je jen 2D pole, které obsahuje čísla mezi 0 a 20.
použijte np.std pro výpočet směrodatné odchylky řádků
nyní použijeme np.std s axis = 1
pro výpočet směrodatných odchylek řádků.
np.std(array_2d, axis = 1)
OUT:
array()
Vysvětlení
Pokud jste pochopili, příklad 3, příklad by měl smysl.
při použití np.std a set axis = 1
, Numpy vypočítá směrodatné odchylky vodorovně podél osy-1.
efektivně, když použijeme Numpy směrodatnou odchylku s axis = 1
, funkce vypočítá směrodatnou odchylku řádků.
příklad 5: Změňte stupně volnosti
nyní změníme stupně volnosti.
Zde v tomto příkladu, budeme vytvořit velké pole čísel, vzít vzorek z pole a výpočet směrodatné odchylky na vzorek.
nejprve vytvoříme pole.
Vytvořte Numpy pole
nejprve vytvoříme normálně distribuované Numpy pole s průměrem 0 a směrodatnou odchylkou 10.
k tomu použijeme Numpy náhodnou normální funkci. Všimněte si, že používáme funkci Numpy random seed k nastavení osiva pro generátor náhodných čísel. Další informace o tom naleznete v našem tutoriálu o np.náhodný.símě.
np.random.seed(22)population_array = np.random.normal(size = 100, loc = 0, scale = 10)
Ok. Nyní máme Numpy pole, population_array
, které má 100 prvků, které mají průměr 0 a směrodatnou odchylku 10.
vytvořit vzorek
nyní použijeme Numpy random choice k odběru náhodného vzorku z Numpy pole, population_array
.
np.random.seed(22)sample_array = np.random.choice(population_array, size = 10)
Toto nové pole, sample_array
, je náhodný vzorek 10 prvky z population_array
.
použijeme sample_array
při výpočtu naší směrodatné odchylky pomocí parametru ddof
.
Vypočítejte směrodatnou odchylku vzorku
nyní vypočítáme směrodatnou odchylku vzorku.
Konkrétně, budeme používat Numpy směrodatná odchylka funkce s ddof
parametr nastaven na ddof = 1
.
np.std(sample_array, ddof = 1)
:
10.703405562234051
Vysvětlení
Tady, jsme vypočítali:
A když jsme ddof = 1
, rovnice hodnotí se:
Aby bylo jasné, při výpočtu standardní odchylky vzorek, budete nastavit ddof = 1
.
Chcete-li být upřímný, podrobnosti o tom, proč jsou malá technická (a nad rámec tohoto příspěvku), takže pro více informací o výpočtu výběrové směrodatné odchylky, doporučuji sledovat toto video.
mějte na paměti, že v některých jiných případech můžete nastavit ddof
na jiné hodnoty kromě 1 nebo 0. Pokud parametr ddof
vůbec nepoužíváte, bude výchozí hodnota 0.
Bez ohledu na to, jakou hodnotu si vyberete, Numpy směrodatná odchylka funkce spočítá směrodatná odchylka s z rovnice:
PŘÍKLAD 6: Použití keepdims parametr v np.std
Ok. Nakonec uděláme poslední příklad.
zde nastavíme parametr keepdims
na keepdims = True
.
Vytvořte 2rozměrné pole
nejprve vytvoříme 2D pole pomocí np.náhodný.randintova funkce.
(Toto je stejné pole, jaké jsme vytvořili v příkladu 2, takže pokud jste jej již vytvořili,neměli byste jej znovu vytvářet.)
np.random.seed(22)array_2d = np.random.randint(20, size =(3, 4))
Pojďme vytisknout:
print(array_2d)
:
]
Podívejte se na rozměry
Nyní, pojďme se podívat na rozměry tohoto pole.
array_2d.ndim
:
2
Toto je 2D pole, jak jsme zamýšleli.
Vypočítejte směrodatnou odchylku a zkontrolujte rozměry
Ok. Nyní vypočítáme směrodatnou odchylku a zkontrolujeme rozměry výstupu.
output = np.std(array_2d)
Pojďme rychle vytisknout výstup:
print(output)
:
5.007633062524539
směrodatná odchylka je 5.007633062524539.
jaké jsou rozměry výstupu?
output.ndim
OUT:
0
výstup má 0 rozměrů (je to skalární hodnota).
proč?
Když np.std počítá směrodatnou odchylku, vypočítává souhrnnou statistiku. V tomto případě funkce bere velké množství hodnot a zhroutí je na jednu metriku.
vstup byl tedy 2rozměrný, ale výstup je 0rozměrný.
Co když to chceme změnit?
Co když chceme, aby výstup měl technicky 2-rozměry?
to můžeme udělat pomocí parametru keepdims
.
při použití np Zachovejte původní rozměry.std
zde nastavíme keepdims = True
, aby výstup měl stejné rozměry jako vstup.
output_2d = np.std(array_2d, keepdims = True)
Nyní, pojďme se podívat na výstupu:
print(output_2d)
:
]
Všimněte si, že výstup, směrodatná odchylka, je stále 5.00763306. Výsledek je však uzavřen uvnitř dvojitých závorek.
pojďme zkontrolovat output_2d
a podívejme se blíže.
type(output_2d)
:
numpy.ndarray
, output_2d
je Numpy array, ne skalární hodnotu.
Pojďme zkontrolovat rozměry:
output_2d.ndim
:
2
Tento Numpy array, output_2d
, má 2 rozměry.
Toto je stejný počet rozměrů jako vstup.
Co se stalo?
když nastavíme keepdims = True
, to způsobilo np.funkce std pro vytvoření výstupu se stejným počtem rozměrů jako vstup. I když na výstupu nejsou žádné řádky a sloupce, výstup output_2d
má 2 rozměry.
v případě, že budete někdy potřebovat váš výkon mají stejný počet dimenzí, jako váš vstup, můžete nastavit keepdims = True
.
(to také funguje, když používáte parametr axis
… zkuste to!)
Často kladené otázky o Numpy směrodatná odchylka
Teď, když jste se dozvěděl o Numpy směrodatná odchylka a vidět některé příklady, podívejme se na některé často kladené otázky o np.std.
Často kladené otázky:
- Proč numpy std() dát jiný výsledek, než matlab std() nebo jiný programovací jazyk?
Otázka 1: Proč numpy std () dává jiný výsledek než matlab std() nebo jiný programovací jazyk?
jednoduchý důvod je, že matlab počítá standardní dev podle následujícího:
(Mnoho dalších nástrojů, použít stejnou rovnici.)
Nicméně, Numpy počítá s následujícím:
Všimněte si jemného rozdílu mezi vs .
Chcete-li to opravit, můžete použít parametr ddof
v Numpy.
Pokud používáte np.std s ddof
parametr nastaven na ddof = 1
, měli byste dostat stejnou odpověď jako matlab.
nechte své další otázky v komentářích níže
máte další otázky týkající se funkce Numpy směrodatné odchylky?
nechte svůj dotaz v sekci komentáře níže.
Připojte se do našeho kurzu se dozvíte více o Numpy
příklady, které jste viděli v tomto výukovém programu by měla být dost, aby vám začít, ale pokud jste vážně o učení, Numpy, měli byste se zapsat do našeho prémiového kurzu s názvem Numpy Mistrovství.
je toho mnohem více, co se o Numpy dozvíte, a Numpy Mastery vás naučí vše, včetně:
- Jak vytvořit Numpy pole
- Jak používat Numpy náhodné funkce
- Co „Numpy náhodné semínko“ funkce
- Jak přetvořit, rozdělit a spojit své Numpy pole
- a další …
kromě toho, bude to pomůže zcela zvládnout syntaxi během několika týdnů. Zjistíte, jak se stát „plynulým“ při psaní Numpy kódu.
Zjistěte více zde:
další informace o Numpy Mastery