我正在研究一个多类分类问题。数据的格式如下所示
Feature1 Feature2 Feature3 Features4 feature5 features features Class
0.1 0.2 0.3 1 0.2 0.9 0.5 Apple
0.3 0.1 0.4 0.2 0.2 1.1 1.9 Orange
0.12 0.22 0.13 1.4 1.5 1.9 1 Banana
0.112 0.231 0.3 8 4 4 2 Watermelon
我的数据集有7个功能和42000行。其中大约22000人属于苹果类,其余的人平均分配给其他人。现在我已经适应了使用随机森林分类器
有几个方面是错误的
X_train,y_train = oversample.fit_resample(X_train,y_train)
在交叉验证之前,您不能这样做。您正在使用验证集中的信息对训练集进行过采样
X_train = scaler.fit_transform(X_train)
不能缩放整个数据集,然后运行交叉验证。您正在使用将进入验证集(每轮CV)的样本来估计平均值和sd。那是不对的
一种实施方法是:
理想情况下,您应保持测试数据完整-仅对列车数据进行抽样: 因此,删除行
X_test,y_test = oversample.fit_resample(X_test,y_test)
此外,您正在此处打印列车数据的分数:
print(np.mean(cross_val_score(classifier, X_train, y_train, cv=10)))
-当您尝试打印测试数据时会发生什么情况另外,您可能应该将
min_samples_leaf
从1增加到一个更高的值-这里的1意味着您允许拆分,即使那里只有数据点-这肯定会帮助您进行过度拟合尝试可视化,看看是否有任何功能是重要的。探索数据总是有帮助或有用的。试试这个
相关问题 更多 >
编程相关推荐