Jak mogę losowo podzielić macierz danych i odpowiadający wektor etykiety na X_train, X_test, X_val, y_train, y_test, y_val za pomocą Sklearn? O ile mi wiadomo, sklearn.cross_validation.train_test_split
jest zdolny do podziału na dwie części, a nie na trzy ...
machine-learning
scikit-learn
Hendrik
źródło
źródło
train_test_split
, robisz to w stosunku do poprzedniego podziału 80/20. Więc twoja wartość wynosi 20% z 80%. Podziały proporcji nie są w ten sposób bardzo proste.Istnieje świetna odpowiedź na to pytanie dotyczące SO, które używa numpy i pand.
Polecenie (patrz odpowiedź do dyskusji):
tworzy podział 60%, 20%, 20% na zestawy szkoleniowe, walidacyjne i testowe.
źródło
.6
znaczenie 60% ... ale co to.8
znaczy?np.split
podzieli się na 60% długości przetasowanej tablicy, a następnie na 80% długości (co stanowi dodatkowe 20% danych), pozostawiając w ten sposób pozostałe 20% danych. Wynika to z definicji funkcji. Możesz testować / grać zx = np.arange(10.0)
np.split(x, [ int(len(x)*0.6), int(len(x)*0.8)])
Najczęściej okazuje się, że nie dzielisz go ani razu, ale w pierwszym kroku podzielisz swoje dane na zestaw szkoleniowy i testowy. Następnie wykonasz wyszukiwanie parametrów obejmujące bardziej złożone rozdzielenia, takie jak walidacja krzyżowa z algorytmem „split k-fold” lub „Leave-One-Out (LOO)”.
źródło
Możesz użyć
train_test_split
dwa razy. Myślę, że jest to najprostsze.W ten sposób
train
,val
,test
zestaw będzie 60%, 20%, 20% zbioru danych odpowiednio.źródło
Najlepsza odpowiedź powyżej nie wspomina, że oddzielenie dwa razy przy użyciu
train_test_split
niezmiennych rozmiarów partycji nie daje początkowo zamierzonej partycji:Następnie część zestawów sprawdzania poprawności i testów w x_remain zmienia się i może być liczona jako
Przy tej okazji wszystkie początkowe partycje są zapisywane.
źródło
Oto inne podejście (zakłada równy podział trójstronny):
Można to uczynić bardziej zwięzłym, ale trzymałem się tego w celu wyjaśnienia.
źródło
Biorąc pod uwagę
train_frac=0.8
, ta funkcja tworzy podział 80% / 10% / 10%:źródło
Dodanie do odpowiedzi @ hh32 , przy jednoczesnym zachowaniu dowolnych predefiniowanych proporcji, takich jak (75, 15, 10):
źródło
Rozszerzenie odpowiedzi @ hh32 o zachowane proporcje.
Ponieważ pozostały zestaw danych jest zmniejszony po pierwszym podziale, nowe współczynniki w stosunku do zredukowanego zestawu danych należy obliczyć, rozwiązując równanie:
źródło