Пример данных с использованием np.random.choice()

avatar
freshman_2021
8 августа 2021 в 16:41
74
1
1

Я использую набор данных по радужной оболочке из sklearn, чтобы выполнить базовое прогностическое моделирование. Я разбиваю данные на обучающие и тестовые наборы, и для списка заданных пропорций я хочу отбирать без замены разные пропорции обучающих данных. Мне нужно сделать выборку, используя np.random.choice невозможно использовать df.sample

Но то, что я делаю для выборки, кажется неправильным. Буду очень признателен за любую информацию.

import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
iris = load_iris()
props=[0.2,0.5,0.7,0.9]
df = pd.DataFrame(data= np.c_[iris['data'], iris['target']],
                    columns= iris['feature_names'] + ['target'])
y=df[list(df.loc[:,df.columns.values =='target'])]
X=df[list(df.loc[:,df.columns.values !='target'])]
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3
                                       ,train_size=0.7)
for i in proportions:
   sampleX=np.random.choice(X_train, size=i, replace = False) #----> code to sample
Источник

Ответы (1)

avatar
StupidWolf
8 августа 2021 в 16:50
1

Вы можете попробовать индекс:

props=[0.2,0.5,0.7,0.9]
for i in props:
    ix = np.random.choice(X_train.index, size=int(i*len(X_train)), replace = False)
    sampleX = X_train.loc[ix]

Или просто используйте бином:

for i in props:
    sampleX = X_train.iloc[np.random.binomial(1,i,len(X))]
freshman_2021
8 августа 2021 в 17:11
0

Хотя это образцы идеально, это образцы с заменой.

freshman_2021
8 августа 2021 в 17:11
0

удивительно, потому что для замены установлено значение False. Я пытался установить random_state в test_train_split(), но это тоже не сработало.

StupidWolf
8 августа 2021 в 17:28
0

что вы подразумеваете под этим семплы с заменой, вы понимаете что перезаписываете sampleX с каждой итерацией права

StupidWolf
8 августа 2021 в 17:29
0

если вы делаете np.random.choice или np.random.binomial, каждая строка используется один раз. Повторов быть не может