Нужна помощь в понимании cross_val_score в sklearn python - PullRequest
0 голосов
/ 02 октября 2018

В настоящее время я пытаюсь реализовать перекрестную проверку K-FOLD в классификации с использованием sklearn в python.Я понимаю основную концепцию K-FOLD и перекрестной проверки.Однако я не понимаю, что такое cross_val_score и что он делает, и какую роль играет итерация CV в получении массива баллов, которые мы получаем.Ниже приведены примеры со страницы официальной документации sklearn.

**Example 1**
from sklearn import datasets, linear_model
from sklearn.model_selection import cross_val_score
diabetes = datasets.load_diabetes()
X = diabetes.data[:150]
y = diabetes.target[:150]
lasso = linear_model.Lasso()
print(cross_val_score(lasso, X, y, cv=3))  
***OUPUT***
[0.33150734 0.08022311 0.03531764]

Взглянув на Пример 1 , выходные данные генерируют 3 значения в массиве.Я знаю, что когда мы используем kfold, n_split - это команда, которая генерирует количество сгибов.Так что же делает cv в этом примере?

**My Code**
kf = KFold(n_splits=4,random_state=seed,shuffle=False)
print('Get_n_splits',kf.get_n_splits(X),'\n\n')
for train_index, test_index in kf.split(X):
print('TRAIN:', train_index, 'TEST:', test_index)
x_train, x_test = df.iloc[train_index], df.iloc[test_index]
y_train, y_test = df.iloc[train_index], df.iloc[test_index]

print('\n\n')

# use train_test_split to split into training and testing data
x_train, x_test, y_train, y_test = cross_validation.train_test_split(X, y,test_size=0.25,random_state=0)

# fit / train the model using the training data
clf = BernoulliNB()
model = clf.fit(x_train, y_train)
y_predicted = clf.predict(x_test)

scores = cross_val_score(model, df, y, cv=4)
print('\n\n')
print('Bernoulli Naive Bayes Classification Cross-validated Scores:', scores)
print('\n\n')

Глядя на Мой код , я использую 4-кратную перекрестную проверку для наивного байесовского классификатора Бернулли и использую cv = 4 в баллах, как показано ниже: scores = cross_val_score (model, df, y, cv = 4) Приведенная выше строка дает мне массив из 4 значений.Однако, если я изменю его на cv = 8, как показано ниже: scores = cross_val_score (model, df, y, cv = 8), то массив из 8 значений будет сгенерирован в качестве вывода.Итак, еще раз, что здесь делает cv.

Я перечитывал документацию снова и снова и искал многочисленные сайты, но так как я новичок, я действительно не понимаю, что делает cv и как генерируются оценки.,

Любая помощь будет очень признательна.

Заранее спасибо

...