Train_test_split, установленный с 50-50, возвращает высокую точность, но низкую при разделении на 2 файла - PullRequest
1 голос
/ 15 января 2020

У меня есть 1 набор данных (называемый train_plus_test.csv ), который имеет 1275 строк с соответствующими столбцами и метками для классификации двух действий, а именно: Ходьба и Ложь. Это сбалансированный набор данных с одинаковым номером каждого класса.

Я реализую Случайный лес в 2 сценариях ios

Сценарий 1: Обучение по train_plus_test.csv с поезд-тест разделен на 0,75 - 0,25, что дает точность 91,8%

Сценарий 2: Разделите указанный выше файл train_plus_test.csv на 2 файла ( training.csv ) и тестирование ( testing.csv ) с разбивкой 75% - 25%. Затем я тренирую модель на train.csv и прогнозирую на test.csv , но точность составляет 52%. Мне сейчас интересно, где именно я не прав? @@

Спасибо за чтение!

Код python (ниже) и 3 файла CSV выше, которые я включил сюда:

[GoogleDrive] https://drive.google.com/drive/folders/1AAOOFhR1QpoPPtSNTofBnouBaYHfFbir?usp=sharing&fbclid=IwAR10SjHCu-6Sszd-okes-IneAA8pWzals9-NNtAsmrw0ql28mk3geZfmnQI

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn import metrics
from sklearn.ensemble import RandomForestClassifier

# Scenario 1 ==================>
dataset = pd.read_csv('train_plus_test.csv')
feature_cols = list(dataset.columns.values)
feature_cols.remove('label')
X = dataset[feature_cols] # Features
y = dataset['label'] # Target

clf_RF = RandomForestClassifier(n_estimators=100, random_state=0, max_features=8, min_samples_leaf=3)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 42)
clf_RF.fit(X_train, y_train)

y_pred_RF = clf_RF.predict(X_test)
print('Accuracy of training')
print(metrics.accuracy_score(y_test, y_pred_RF))

# Scenario 2 ======= comment Secenario 1 before running the scenario 2 ===========>

train_dataset = pd.read_csv('train.csv')
test_dataset = pd.read_csv('test.csv')
feature_cols = list(train_dataset.columns.values)
feature_cols.remove('label')
clf_RF = RandomForestClassifier(n_estimators=100, random_state=0, max_features=8, min_samples_leaf=3 )
X = train_dataset[feature_cols] # Features
y = train_dataset['label'] # Target
clf_RF.fit(X, y)

X_test_data = test_dataset[feature_cols]
y_test_data = test_dataset['label']
y_test_pred = clf_RF.predict(X_test_data)
print('Accuracy of testing')
print(metrics.accuracy_score(y_test_data, y_test_pred))
...