- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我很困惑,为什么没有交叉验证的随机森林分类模型的平均准确度得分为 0.996,而具有 5 折交叉验证的模型的平均准确度得分为 0.687。
有 275,956 个样本。 0级=217891,1级=6073,2级=51992
我正在尝试预测“TARGET”列,它是 3 个类 [0,1,2]:
data.head()
bottom_temperature bottom_humidity top_temperature top_humidity external_temperature external_humidity weight TARGET
26.35 42.94 27.15 40.43 27.19 0.0 0.0 1
36.39 82.40 33.39 49.08 29.06 0.0 0.0 1
36.32 73.74 33.84 42.41 21.25 0.0 0.0 1
根据文档,数据分为训练和测试
# link to docs http://scikit-learn.org/stable/modules/cross_validation.html
from sklearn.model_selection import train_test_split
from sklearn import datasets
from sklearn import svm
# Create a list of the feature column's names
features = data.columns[:7]
# View features
features
Out[]: Index([u'bottom_temperature', u'bottom_humidity', u'top_temperature',
u'top_humidity', u'external_temperature', u'external_humidity',
u'weight'],
dtype='object')
#split data
X_train, X_test, y_train, y_test = train_test_split(data[features], data.TARGET, test_size=0.4, random_state=0)
#build model
clf = RandomForestClassifier(n_jobs=2, random_state=0)
clf.fit(X_train, y_train)
#predict
preds = clf.predict(X_test)
#accuracy of predictions
accuracy = accuracy_score(y_test, preds)
print('Mean accuracy score:', accuracy)
('Mean accuracy score:', 0.96607267423425713)
#verify - its the same
clf.score(X_test, y_test)
0.96607267423425713
关于交叉验证:
from sklearn.model_selection import cross_val_score
scores = cross_val_score(clf, data[features], data.TARGET, cv=5)
print("Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() * 2))
Accuracy: 0.69 (+/- 0.07)
要低得多!
并验证第二种方式:
#predict with CV
# http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_val_predict.html#sklearn.model_selection.cross_val_predict
from sklearn.model_selection import cross_val_predict
predicted = cross_val_predict(clf, data[features], data.queen3, cv=5)
metrics.accuracy_score(data.queen3, predicted)
Out[]: 0.68741031178883594
根据我的理解,交叉验证不应将预测的准确性降低这个数量,而是提高模型的预测,因为模型已经看到所有数据的“更好”表示。
最佳答案
通常我会同意 Vivek 并告诉你相信你的交叉验证。
但是,某种程度的 CV 是随机森林中固有的,因为每棵树都是从引导样本中生长出来的,因此您不应期望在运行交叉验证时会看到如此大的准确性降低。我怀疑您的问题是由于数据排序中的某种时间或位置依赖性造成的。
当您使用 train_test_split
时,数据是从数据集中随机抽取的,因此您的所有 80 个环境都可能出现在您的训练和测试数据集中。但是,当您使用 CV 的默认选项拆分时,我相信每个折叠都是按顺序绘制的,因此您的每个环境都不会出现在每个折叠中(假设您的数据按环境排序)。这会导致较低的准确性,因为您是在使用来自另一个环境的数据来预测一个环境。
简单的解决方案是设置cv=ms.StratifiedKFold(n_splits=5, shuffle=True)
。
在使用串联数据集之前,我曾多次遇到过这个问题,而且肯定有数百人已经意识到或没有意识到问题所在。默认行为的想法是维护时间序列中的顺序(根据我在 GitHub 讨论中看到的内容)。
关于python - 为什么交叉验证 RF 分类的性能比没有交叉验证的差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49544981/
Unix 中 rm -rf 中的 rf 代表什么? 更一般地说,我很难记住 Unix 命令和选项,因为我不明白它们代表什么。是否有资源可以解释这些简写的含义? 最佳答案 在rm中, -r 代表递归 -
在 Makefile 中,我读到: -rm -rf(而不是 rm -rf)。 Makefile 中行开头的第一个“-”是什么意思? 最佳答案 这意味着make本身将忽略来自rm的任何错误代码。 在 m
rm是删除item,但是参数-rf的作用是什么? 每当我输入 help -rf 时,它都会打印 powershell 中可用命令的完整列表。如果您在 powershell 中输入 rm -rf 会发生
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我尝试搜索 SO,但无法找到以下命令之间的区别。如果我有一个名为 dir 的目录,下面的命令有何不同? rm -rf dir/* rm -rf dir/ rm -rf dir 另外,如果运行命令的 i
我很困惑,为什么没有交叉验证的随机森林分类模型的平均准确度得分为 0.996,而具有 5 折交叉验证的模型的平均准确度得分为 0.687。 有 275,956 个样本。 0级=217891,1级=60
我正在尝试在 DRF3 中制作一个可写的嵌套序列化器。我有一个模型音乐会,其中有一个 m2m 领域“技术人员”到我的用户模型。我已成功在其 View 中添加连接到 Concert 实例的用户列表。现在
rm -rf 只删除文件不删除文件夹 我有一个数据库,我循环遍历 file_path 并检查 file_exist 如果文件不存在。我执行 rm -rf $db_value 但有时 db_value
首先,这是windows系统,不是linux。在我的 makefile 中,我正在做 make clean rm -rf output 但是,第一次运行时,会报错 rm: cannot lstat `
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我有一个非常简单的 dockerfile,用“rm -Rf”在安装后删除安装文件,但是我收到了一些错误,例如: Step 4/4 : RUN rm -Rf /INSTALLATION ---> Run
我想使用 TCL 删除目录中的所有文件。 (我在 Win 10 下使用 Xilinx Vivado 的 TCL 控制台。)我在 TCL documentation 中发现了这一点。那个 file de
git中的“-rf”是什么意思? 我用了 git rm -rf directories 但我不知道 -rf 的实际含义 最佳答案 -r - 当给出前导目录名称时允许递归删除。 -f - 覆盖最新检查。
当您将其键入控制台并运行时,此命令将完美运行。 rm -rf !(folder1|file_name|log.txt|*.sh|*.conf) 但是,当我从bash脚本运行它时,出现以下错误; ./t
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
我的问题与 here 完全相同和 here . 我还使用 simple2.py 对该程序生成的可执行文件进行沙箱处理 test1.c: #include int main(){ puts
使用随机森林算法进行回归,我在 iternet 中发现,在预测之后,它们对预测结果进行归一化,这意味着我们假设结果是 pred pred = pred = pred*(np.exp(-pred/100
我正在尝试编写一个 BASH 脚本,它将递归删除目录中的所有文件。 当我在控制台 rm -rf/home/dir/dir/* 中写入时,效果很好,但我不能使用变量来完成。 VAR="/home/dir
我是一名优秀的程序员,十分优秀!