Python sklearn随机森林精度分数与训练和测试数据相同

Python sklearn随机森林精度分数与训练和测试数据相同,python,machine-learning,scikit-learn,random-forest,metrics,Python,Machine Learning,Scikit Learn,Random Forest,Metrics,我试图为电动汽车充电事件数据建立一个分类模型。我想预测充电站在给定时间点是否可用。我的代码如下: 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

我试图为电动汽车充电事件数据建立一个分类模型。我想预测充电站在给定时间点是否可用。我的代码如下:

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))
结果

raw data shape:  (1000000, 15)
train size (1000000, 125) 
test size (1000000, 125)
RF accuracy: TRAINING 0.831456
RF accuracy: TESTING 0.831456

我的问题是,为什么训练和测试的准确性完全相同?我已经运行了很多次,它总是完全相同的。有什么想法吗?(我已检查并确保原始数据不同)

是否可能在列车和测试文件中使用相同的数据集

如果是相同的数据,那么最好将数据拆分为train,并使用train\u test\u split模块进行测试


是否可能在列车和测试文件中使用相同的数据集

如果是相同的数据,那么最好将数据拆分为train,并使用train\u test\u split模块进行测试


您的代码中只存在一个输入错误,因为每次选择所有行时:

#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]

您应该通过一些索引对它们分别进行索引,例如:
X\u train=raw\u data.loc[:idx,X\u vars]

您的代码中只存在一个输入错误,因为每次选择所有行时:

#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]

您应该通过一些索引对它们分别进行索引,例如:
X\u train=raw\u data.loc[:idx,X\u vars]

没有关于
raw\u data的大小的信息。您是否希望在
raw_train
raw_test
集合中有完全相同数量的观察值?您在测试和训练相同的数据<代码>X_列==X_测试
。使用scikit learn的
test\u train\u split
函数或某种形式的交叉验证迭代器。没有关于
原始数据大小的信息。您是否希望在
raw_train
raw_test
集合中有完全相同数量的观察值?您在测试和训练相同的数据<代码>X_列==X_测试
。使用scikit learn的
test\u train\u split
函数或某种形式的交叉验证迭代器。