Ich habe versucht, eine Funktion zu erstellen, die geschichtete Proben aus einem Dataset erzeugt (wie sklearn hat keine solche Funktion) und ich bin gekommen mit einer.Pandas Slice von [] wirft Index außerhalb der Grenzen Fehler, aber .ix nicht
Die Funktion unter den Indizes erzeugt und ich habe gehofft, dass die ursprünglichen Daten-Set mit, dass schneiden, aber aus irgendeinem Grunde, wenn es kommt zur
sampleData = dataset[indexes]
Linie, wirft es ein
IndexError: indices are out-of-bounds
Error. Jedoch
sampleData = dataset.ix[indexes]
funktioniert. Ich habe jedoch das Gefühl, dass dies falsch ist und meine späteren Prozesse vermasselt. Hat jemand eine Idee? :)
Hier ist der vollständige Code bis zu diesem Punkt:
def stratifiedSampleGenerator(dataset,target,subsample_size=0.1):
print('Generating stratified sample of size ' + str(round(len(dataset)*subsample_size,2)))
dic={}
indexes = np.array([])
# find number of classes in sample
for label in target.unique():
labelSize = len(target[target==label])
dic[label] = int(labelSize * subsample_size)
# make a dataset of size sizeSample with ratio of classes in dic
for label in dic:
classIndex = target[target==label].index #obtain indexes of class
counts = dic[label] #get number of times class occurs
newIndex = np.random.choice(classIndex,counts,replace=False)
indexes = np.concatenate((indexes,newIndex),axis=0)
indexes = indexes.astype(int)
sampleData = dataset[indexes] #throws error
sampleData = dataset.ix[indexes] #doesnt
Dank! :)
Hiya, was im suchen ist eine geschichtete Stichprobe. Wenn es nicht falsch ist, erzeugt diese Funktion in sklearn geschichtete Falten für den gesamten Datensatz. So sind die Größen immer noch gleich. ZB ursprüngliche Daten-Set: 100A 20B 10C geschichtete Stichprobe: 10A 2B 1C – Wboy
in meinem Beispiel 'X_eval' und' y_eval' eine geschichtete Substichprobe von Größe 0,1 * total_dataset_size enthalten. Willst du das nicht? –
gerade aktualisiert das Beispiel, können Sie es sofort ausführen, auch die Ausgänge gedruckt, so dass Sie sehen können, dass es die Subsample-Größe, aber es behält die Proportionen –