Ich habe einige Daten und ich möchte es in kleinere Gruppen aufteilen, die ein gemeinsames Verhältnis beibehalten. Ich schrieb eine Funktion, die eine Eingabe von zwei Array und berechnen Sie das Größenverhältnis und dann sagen mir die Optionen für wie viele Gruppen kann ich es teilen (wenn alle Gruppen die gleiche Größe haben), hier ist die Funktion:Aufrechterhaltung eines Verhältnisses beim Teilen von Daten in Python-Funktion
Also meine Frage ist, wie kann ich es so machen, dass ein dritter Eingang für die Funktion, die Anzahl der Falten und ändern Sie die Funktion um, so dass nicht durchlaufen, um sicherzustellen, dass jede Gruppe den gleichen Betrag hat mit dem richtigen Verhältnis, es wird nur das richtige Verhältnis haben, aber unterschiedliche Größen?
Zusatz für @JamesHolderness
So ist Ihre Methode fast perfekt, aber hier ist ein Problem:
mit Längen 357 und 143 mit 9 Falten, ist dies die Rückkehr Liste:
[(39, 16), (39, 16), (39, 16), (39, 16), (39, 16), (39, 16), (39, 16), (39, 16), (39, 16)]
jetzt, wenn Sie die Spalten addieren, Sie diese: 351 144
die 3 51 ist in Ordnung, weil es weniger als 357 ist, aber die 144 funktioniert nicht, weil es größer als 143 ist! Der Grund dafür ist, dass 357 und 143 Längen von Arrays sind, so dass die 144. Zeile dieses Arrays nicht existiert ...
Meinen Sie, dass Sie mit einem variierenden Trainingssatz eine Kreuzvalidierung durchführen möchten? Das hört sich statistisch fragwürdig an? Wird es normalerweise in der Praxis gemacht? – thebigdog
ja das ist für die Kreuzvalidierung. Nein, dies soll die Ähnlichkeit zwischen einem Test und einem Trainingssatz testen, um zu prüfen, ob in den Testdaten etwas enthalten sein könnte, das nicht in den Trainingsdaten enthalten ist. Normalerweise wird die Kreuzvalidierung nur für diesen einen Trainingssatz durchgeführt, und dies könnte auch für sie gelten. Statt zwei Arrays würden Sie die Spalte im Trainings-Array und im Trainings-Array angeben, und das würde es auch tun. –
Wenn Ihre zwei Arrays die Größen "m" und "n" haben und der irreduzible Anteil von "m" geteilt durch "n" ist "p/q", dann sind "m = k * p" und "n = k * q '. Sobald Sie "k" haben, führt eine beliebige Partition (http://en.wikipedia.org/wiki/Partition_ (number_theory)) dazu, dass Sie Ihre Originaldaten teilen, die das Verhältnis der Elemente beibehalten. Lass es mich wissen, wenn du mich zur Ausarbeitung brauchst. – Jaime