Методы выполнения проверки K-Fold Cross на моих данных - PullRequest
0 голосов
/ 02 мая 2020

Я в замешательстве, когда использую k-кратную перекрестную вадиляцию в моем наборе данных (1400 точек данных), используя python.

Метод 1. Нужно ли разбивать данные на Xtrain / Xtest и передавать данные поезда в перекрестная проверка? В этом случае я получаю хорошие результаты и хороший средний балл даже в 10 раз. Использовал случайные леса для обучения разделенных Xtraindata.

ПРИМЕЧАНИЕ: Я даже разделил данные теста / поезда с размером теста 0,005, так что большинство данных будет в наборе поездов, перекрестная проверка отлично работает с обученными данными (0,9 точность) в этой ситуации. Я тестировал для разных размеров разделения теста, работают отлично, но когда я непосредственно использую перекрестную проверку для данных теста / поезда без разделения, оценка перекрестной проверки оказывается очень низкой.

Метод 2: Когда я перекрестно проверяю проверяйте весь мой набор данных без разделения набора данных, он показывает мне высокие диапазоны ошибок и полностью переоснащается, когда я сравниваю результаты теста и предсказанные результаты. Он показывает отрицательный балл C .V. Использовал случайные леса для обучения всех данных.

Я прочитал несколько похожих вопросов о стековом обмене и исследовательских воротах, у меня не было четкого понимания, какой метод c использовать. Пожалуйста, помогите мне.

Спасибо. Я загрузил некоторую часть кода ниже.

dataset = pd.read_csv('Dataset.csv')
X = dataset.iloc[:, 1:29].values
y = dataset.iloc[:, 0:1].values

from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer.fit(X[:, 1:29])
X[:, 1:29] = imputer.transform(X[:, 1:29])

#trainingand testsplit
# from sklearn.model_selection import train_test_split
# X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.005, random_state = 0)

from sklearn.ensemble import RandomForestRegressor
regressor = RandomForestRegressor(n_estimators = 311, min_samples_split = 2, min_samples_leaf = 1, max_features = "sqrt", max_depth= None, bootstrap = False, random_state = 0)
regressor.fit(X_train, np.ravel(y_train))
y_pred = regressor.predict(X_test)

from sklearn.model_selection import cross_val_score
accuracies = cross_val_score(estimator= regressor, X= X, y = y, cv= 10, n_jobs = -1 )
A= accuracies.mean()
B= accuracies.std()
print('Random forests,TC')
print('K-fold validation score for 10 folds')
print(accuracies)
print('mean')
print(A)
print('std')
print(B)
...