L'échantillonnage bootstrap est utilisé pour extraire de manière aléatoire des données d'un échantillon, ce qui permet la duplication, pour créer une population légèrement différente. Par exemple, répétez-le 1000 fois ou prenez des statistiques. J'ai pensé à quoi faire avec les Pandas, alors prenez-en note.
Obtenez des échantillons de pandas et d'iris, puis importez le module de nombres aléatoires utilisé pour l'échantillonnage aléatoire.
import pandas as pd
import random
from sklearn.datasets import load_iris
Ensuite, chargez les données et placez-les dans la trame de données pandas.
iris_dataset = load_iris()
df = pd.DataFrame(data=iris_dataset.data, columns=iris_dataset.feature_names)
Jetez un œil aux données avec df.describe ()
.
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)
count 150.000000 150.000000 150.000000 150.000000
mean 5.843333 3.057333 3.758000 1.199333
std 0.828066 0.435866 1.765298 0.762238
min 4.300000 2.000000 1.000000 0.100000
25% 5.100000 2.800000 1.600000 0.300000
50% 5.800000 3.000000 4.350000 1.300000
75% 6.400000 3.300000 5.100000 1.800000
max 7.900000 4.400000 6.900000 2.500000
Définissez ensuite une fonction qui échantillonne les données de manière aléatoire.
Tout d'abord, créez un bloc de données vide avec pd.DataFrame (columns = a_data_frame.columns)
en utilisant le bloc de données d'origine colonnes
, puis créez un nombre aléatoireselected_num = random.choice (range (a_data_frame.shape [0)) là. ])) Ajoutez le cadre
a_data_frame [selected_num: selected_num + 1]de la ligne sélectionnée par
with append
.
Notez qu'il semble que vous deviez sélectionner une plage ([0: 1]) pour sélectionner une seule ligne (par exemple, [0] pour numpy) dans le bloc de données des pandas.
def btstrap(a_data_frame):
btstr_data = pd.DataFrame(columns=a_data_frame.columns)
for a_data in range(a_data_frame.shape[0]):
selected_num = random.choice(range(a_data_frame.shape[0]))
btstr_data = btstr_data.append(a_data_frame[selected_num : selected_num + 1])
return btstr_data
Vérifiez les données après un échantillonnage aléatoire avec btstr_data.describe ()
en faisant btstr_data = btstrap (df)
.
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)
count 150.000000 150.000000 150.000000 150.000000
mean 5.750000 3.040667 3.660667 1.176000
std 0.728034 0.410287 1.716634 0.766644
min 4.300000 2.000000 1.100000 0.100000
25% 5.100000 2.800000 1.500000 0.200000
50% 5.700000 3.000000 4.250000 1.300000
75% 6.300000 3.300000 5.000000 1.800000
max 7.700000 4.400000 6.700000 2.500000
Tournez-la 1000 fois ou en boucle pour obtenir le résultat de la sélection d'ajustement ou de variable.
Si vous définissez replace = True
, il semble que vous puissiez faire la même chose avec .sample
, qui est la fonction d'origine des pandas.
@nkay Merci d'avoir souligné.
df.sample(n=df.shape[0], replace=True)
Recommended Posts