Wie führen Sie unter Probenahme in scikit lernen?
Wir haben ein Netzhaut-Datensatz, wobei das erkrankte Auge Informationen stellt 70 Prozent der Informationen, während die nicht erkrankten Auge stellt die restlichen 30 Prozent.Wir wollen einen Datensatz, wobei die erkrankten als auch die nicht erkrankten Proben sollten die gleiche Anzahl. Gibt es eine Funktion zur Verfügung, mit deren Hilfe wir das gleiche tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich wählen würde, dies zu tun mit Pandas
DataFrame
undnumpy.random.Auswahl
. Auf diese Weise ist es einfach zu tun Stichproben zu produzieren gleich große Daten-sets. Ein Beispiel:Dieser Daten hat zwei nicht-gesunden und fünf gesunden Proben. Um nach dem Zufallsprinzip wählen zwei Proben aus der gesunden Bevölkerung, die Sie tun:
Zur automatischen Auswahl einer teilstichprobe der gleichen Größe wie die nicht-gesunden Gruppe, die Sie tun können:
Als eine Variante, die Sie verwenden können stochastische Methode. Angenommen, Sie haben einen Datensatz
data
die eine große Zahl von Tupeln(X, Y)
, woY
kranke Auge Informationen (0 oder 1). Bereiten Sie eine Hülle für Ihr dataset, die Pässe alle nicht erkrankten Augen und geht erkrankten Augen mit Wahrscheinlichkeit 0.3 /0.7 (Sie brauchen nur 30% der erkrankten Augen aus dem dataset).Vorsichtig sein, wenn Sie benötigen, um dieses wrapper als einen generator, der viele Male und wollen, haben identische Ergebnisse, müssen Sie Feste random-seed vor der Verwendung der Funktion
random()
. Mehr darüber: https://docs.python.org/2/library/random.htmlKönnen Sie die
np.random.choice
für eine naive unter sampling wie bereits angedeutet, aber ein Problem kann sein, dass einige Ihrer Stichproben sehr ähnlich sind und damit verfälscht die Daten.Eine bessere option ist die Verwendung der unausgewogen-lernen - Paket, das mehrere Optionen zum Ausgleich ein dataset. Eine gute Anleitung und Beschreibung dieser finden Sie hier.
Den Paket-Listen ein paar gute Möglichkeiten, unter Probenahme (von der github):