Je tente de construire un modèle de classification pour les données d'événements de charge de véhicules électriques. Je veux prédire si la station de recharge sera disponible à un moment donné. Je le travail de code suivant:sklearn Score de précision de forêt aléatoire identique pour les données d'entraînement et de test
from sklearn.ensemble import RandomForestClassifier
import pandas as pd
raw_data = pd.read_csv('C:/temp/sample_dataset.csv')
raw_test = pd.read_csv('C:/temp/sample_dataset_test.csv')
print ('raw data shape: ', raw_test.shape)
#choose which columns to dummify
X_vars = ['station_id', 'day_of_week', 'epoch', 'station_city',
'station_county', 'station_zip', 'port_level', 'perc_local_occupancy',
'ports_at_station', 'avg_charge_duration']
y_var = ['target_variable']
categorical_vars = ['station_id','station_city','station_county']
#split X and y in training and test
X_train = raw_data.loc[:,X_vars]
y_train = raw_data.loc[:,y_var]
X_test = raw_test.loc[:,X_vars]
y_test = raw_test.loc[:,y_var]
#make dummy variables
X_train = pd.get_dummies(X_train, columns = categorical_vars)
X_test = pd.get_dummies(X_test, columns=categorical_vars)
print('train size', X_train.shape, '\ntest size', X_test.shape)
# Train uncalibrated random forest classifier on whole train and evaluate on test data
clf = RandomForestClassifier(n_estimators=100, max_depth=2)
clf.fit(X_train, y_train.values.ravel())
print ('RF accuracy: TRAINING', clf.score(X_train,y_train))
print ('RF accuracy: TESTING', clf.score(X_test,y_test))
Résultats
raw data shape: (1000000, 15)
train size (1000000, 125)
test size (1000000, 125)
RF accuracy: TRAINING 0.831456
RF accuracy: TESTING 0.831456
Ma question est pourquoi la formation et de précision à l'essai EXACTEMENT la même chose? J'ai couru autant de fois, c'est toujours pareil. Des idées? (J'ai vérifié que les données d'origine sont différentes.)
Il y a aucune information sur la taille de 'raw_data'. Pensez-vous avoir exactement le même nombre d'observations dans vos ensembles 'raw_train' et' raw_test'? –
Vous testez et vous entraînez sur les mêmes données. 'X_train == X_test' est' True'. Utilisez la fonction 'test_train_split' de scikit-learn ou une forme d'itérateur de validation croisée. –