sklearn Random Forest训练和测试数据的准确率相同

我正在尝试为电动车充电事件数据构建一个分类模型。我想预测在给定的时间点,充电站是否会可用。我有以下代码在运行:

from sklearn.ensemble import RandomForestClassifierimport pandas as pdraw_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)#选择要进行虚拟变量处理的列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']#分割训练和测试数据的X和yX_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_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)#在整个训练数据上训练未校准的随机森林分类器,并在测试数据上进行评估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.831456RF accuracy: TESTING 0.831456

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


回答:

你的代码中有一个简单的拼写错误,因为每次你选择的所有行都是:

#分割训练和测试数据的X和yX_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_train = raw_data.loc[:idx,X_vars]

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注