Introducere în bootstrapping

Eșantionare în Python

James Chapman

Curriculum Manager, DataCamp

Cu sau fără înlocuire

Eșantionare fără înlocuire:

Cărți de joc pe o masă de cazino.

Eșantionare cu înlocuire („reeșantionare"):

Patru zaruri aruncate.

Eșantionare în Python

Eșantionare aleatoare simplă fără înlocuire

Populație:

Boabe de cafea aranjate în rânduri și coloane.

Eșantion:

Boabe de cafea aranjate în rânduri și coloane, majoritatea estompate.

Eșantionare în Python

Eșantionare aleatoare simplă cu înlocuire

Populație:

Boabe de cafea aranjate în rânduri și coloane.

Reeșantion:

Un eșantion aleator de boabe de cafea, unele fiind duplicate.

Eșantionare în Python

De ce eșantionăm cu înlocuire?

  • coffee_ratings: un eșantion dintr-o populație mai mare de cafele
  • Fiecare cafea din eșantion reprezintă multe cafele ipotetice din populație
  • Eșantionarea cu înlocuire este o aproximare
Eșantionare în Python

Pregătirea datelor despre cafea

coffee_focus = coffee_ratings[["variety", "country_of_origin", "flavor"]]
coffee_focus = coffee_focus.reset_index()
      index  variety country_of_origin  flavor
0         0     None          Ethiopia    8.83
1         1    Other          Ethiopia    8.67
2         2  Bourbon         Guatemala    8.50
3         3     None          Ethiopia    8.58
4         4    Other          Ethiopia    8.50
...     ...      ...               ...     ...
1333   1333     None           Ecuador    7.58
1334   1334     None           Ecuador    7.67
1335   1335     None     United States    7.33
1336   1336     None             India    6.83
1337   1337     None           Vietnam    6.67

[1338 rows x 4 columns]
Eșantionare în Python

Reeșantionare cu .sample()

coffee_resamp = coffee_focus.sample(frac=1, replace=True)
      index  variety country_of_origin  flavor
1140   1140  Bourbon         Guatemala    7.25
57       57  Bourbon         Guatemala    8.00
1152   1152  Bourbon            Mexico    7.08
621     621  Caturra          Thailand    7.50
44       44     SL28             Kenya    8.08
...     ...      ...               ...     ...
996     996   Typica            Mexico    7.33
1090   1090  Bourbon         Guatemala    7.33
918     918    Other         Guatemala    7.42
249     249  Caturra          Colombia    7.67
467     467  Caturra          Colombia    7.50

[1338 rows x 4 columns]
Eșantionare în Python

Cafele repetate

coffee_resamp["index"].value_counts()
658     5
167     4
363     4
357     4
1047    4
       ..
771     1
770     1
766     1
764     1
0       1
Name: index, Length: 868, dtype: int64
Eșantionare în Python

Cafele lipsă

num_unique_coffees = len(coffee_resamp.drop_duplicates(subset="index"))
868
len(coffee_ratings) - num_unique_coffees
470
Eșantionare în Python

Bootstrapping

Opusul eșantionării dintr-o populație

Eșantionarea: de la o populație la un eșantion mai mic

Bootstrapping: construirea unei populații teoretice din eșantion

Caz de utilizare:

  • Înțelegerea variabilității eșantionării folosind un singur eșantion

O cizmă de cowboy.

Eșantionare în Python

Procesul de bootstrapping

  1. Creați un reeșantion de aceeași dimensiune ca eșantionul original
  2. Calculați statistica de interes pentru acest eșantion bootstrap
  3. Repetați pașii 1 și 2 de mai multe ori

Statisticile rezultate sunt statistici bootstrap și formează o distribuție bootstrap

Eșantionare în Python

Bootstrapping pentru media aromei cafelei

import numpy as np

mean_flavors_1000 = []
for i in range(1000):
mean_flavors_1000.append(
np.mean(coffee_sample.sample(frac=1, replace=True)['flavor'])
)
Eșantionare în Python

Histograma distribuției bootstrap

import matplotlib.pyplot as plt
plt.hist(mean_flavors_1000)
plt.show()

Distribuția bootstrap a mediei aromei

Eșantionare în Python

Să exersăm!

Eșantionare în Python

Preparing Video For Download...