In [ ]:
from sklearn import model_selection, datasets
import numpy as np
In [ ]:
iris = datasets.load_iris()
In [ ]:
train_data, test_data, train_labels, test_labels = model_selection.train_test_split(iris.data, iris.target,
test_size = 0.3)
In [ ]:
#убедимся, что тестовая выборка действительно составляет 0.3 от всех данных
float(len(test_labels))/len(iris.data)
In [ ]:
print 'Размер обучающей выборки: {} объектов \nРазмер тестовой выборки: {} объектов'.format(len(train_data),
len(test_data))
In [ ]:
print 'Обучающая выборка:\n', train_data[:5]
print '\n'
print 'Тестовая выборка:\n', test_data[:5]
In [ ]:
print 'Метки классов на обучающей выборке:\n', train_labels
print '\n'
print 'Метки классов на тестовой выборке:\n', test_labels
In [ ]:
#сгенерируем короткое подобие датасета, где элементы совпадают с порядковым номером
X = range(0,10)
In [ ]:
kf = model_selection.KFold(n_splits = 5)
for train_indices, test_indices in kf.split(X):
print train_indices, test_indices
In [ ]:
kf = model_selection.KFold(n_splits = 2, shuffle = True)
for train_indices, test_indices in kf.split(X):
print train_indices, test_indices
In [ ]:
kf = model_selection.KFold(n_splits = 2, shuffle = True, random_state = 1)
for train_indices, test_indices in kf.split(X):
print train_indices, test_indices
In [ ]:
y = np.array([0] * 5 + [1] * 5)
print y
skf = model_selection.StratifiedKFold(n_splits = 2, shuffle = True, random_state = 0)
for train_indices, test_indices in skf.split(X, y):
print train_indices, test_indices
In [ ]:
target = np.array([0, 1] * 5)
print target
skf = model_selection.StratifiedKFold(n_splits = 2,shuffle = True)
for train_indices, test_indices in skf.split(X, target):
print train_indices, test_indices
In [ ]:
ss = model_selection.ShuffleSplit(n_splits = 10, test_size = 0.2)
for train_indices, test_indices in ss.split(X):
print train_indices, test_indices
In [ ]:
target = np.array([0] * 5 + [1] * 5)
print target
sss = model_selection.StratifiedShuffleSplit(n_splits = 4, test_size = 0.2)
for train_indices, test_indices in sss.split(X, target):
print train_indices, test_indices
In [ ]:
loo = model_selection.LeaveOneOut()
for train_indices, test_index in loo.split(X):
print train_indices, test_index
Больше стратегий проведения кросс-валидации доступно здесь: http://scikit-learn.org/stable/modules/cross_validation.html#cross-validation-iterators