问题标签 [train-test-split]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 使用 train_test_split 与手动拆分数据时的不同结果
我有一个 pandas 数据框,我想对其进行预测并获得每个特征的均方根误差。我正在关注手动拆分数据集的在线指南,但我认为使用train_test_split
from会更方便sklearn.model_selection
。不幸的是,在手动拆分数据与使用train_test_split
.
一个(希望)可重现的例子:
这是一个函数 ,knn_train_test
它手动拆分数据、拟合模型、进行预测等:
现在,这是一个函数 knn_train_test2,它使用以下方法拆分数据train_test_split
:
为什么我得到不同的结果?我想我一般误解了 split > train > test 过程,或者可能是误解/错误指定train_test_split
。先感谢您
python - 在 python 3.6 中两次使用 train-test-split 函数时应该传递什么作为输入参数
基本上我想把我的数据集分成训练、测试和验证集。因此,我两次使用了 train_test_split 函数。我有一个大约 1000 万行的数据集。
在第一次拆分时,我将训练和测试数据集拆分为 7000 万个训练和 3000 万个测试。现在要获得验证集,我有点困惑是否使用拆分的测试数据或训练数据作为 train-test-split 的输入参数以获得验证集。给点建议。TIA
python-3.x - 在 train_test_split sklearn python 上设置种子
有没有办法在 python sklearn 上的 train_test_split 上设置种子。我已将参数设置random_state
为整数,但仍然无法重现结果。
提前致谢。
machine-learning - 特征选择应该在训练测试拆分之前还是之后完成?
实际上,有两个事实相互矛盾,这些事实是该问题的可能答案:
传统的答案是在拆分后执行,因为如果之前执行过,可能会从测试集中泄漏信息。
矛盾的答案是,如果仅使用从整个数据集中选择的训练集进行特征选择,那么特征选择或特征重要性得分顺序很可能会随着 Train_Test_Split 的 random_state 的变化而动态变化。如果任何特定工作的特征选择发生变化,则无法进行特征重要性的泛化,这是不可取的。其次,如果仅使用训练集进行特征选择,则测试集可能包含某些实例集,这些实例与仅在训练集上进行的特征选择相矛盾/矛盾,因为未分析整体历史数据。此外,特征重要性分数只能在给定一组实例而不是单个测试/未知实例的情况下进行评估。
machine-learning - 机器学习算法如何保留先前执行的学习?
我正在阅读 Hands on Machine Learning 这本书,作者谈到了训练和测试拆分期间的随机种子,在某个时间点,作者说在此期间机器会看到你的整个数据集。
作者正在使用以下函数来划分 Tran 和 Test 拆分,
好吧,这可行,但并不完美:如果再次运行该程序,它将生成不同的测试集!随着时间的推移,您(或您的机器学习算法)将看到整个数据集,这是您想要避免的。
Sachin Rastogi:为什么以及如何影响我的模型性能?我知道每次运行时我的模型精度都会有所不同,因为训练集总是不同的。我的模型如何在一段时间内看到整个数据集?
作者还提供了一些解决方案,
一种解决方案是在第一次运行时保存测试集,然后在后续运行中加载它。另一种选择是在调用 np.random.permutation() 之前设置随机数生成器的种子(例如,np.random.seed(42)),以便它始终生成相同的随机索引。
但是,当您下次获取更新的数据集时,这两种解决方案都会中断。一个常见的解决方案是使用每个实例的标识符来决定它是否应该进入测试集(假设实例具有唯一且不可变的标识符)。
Sachin Rastogi:这会是一个很好的训练/测试部门吗?我认为不,训练和测试应该包含来自整个数据集的元素,以避免训练集中的任何偏差。
作者举个例子,
您可以计算每个实例标识符的哈希值,如果哈希值低于或等于最大哈希值的 20%,则将该实例放入测试集中。这可确保测试集在多次运行中保持一致,即使您刷新数据集也是如此。
新的测试集将包含 20% 的新实例,但不会包含之前在训练集中的任何实例。
Sachin Rastogi:我无法理解这个解决方案。能否请你帮忙?
machine-learning - ValueError:发现样本数量不一致的输入变量:[25707, 25000]
尝试在下面应用此代码时出现以下错误:我正在根据此页面编写教程:https ://towardsdatascience.com/sentiment-analysis-with-python-part-1-5ce197074184
这里是代码的一部分
你知道我做错了什么吗?
我试图打印 (X.shape[0]) 它给了我 25707
但我不知道为什么因为原始文件包含 25 000 用于火车和测试
python - 我认为使用 train_test_split 对大型数据集进行采样,然后对样本使用 cross_validation 可能是错误的。同意?
几个月以来,我一直在尝试解决 DAT102x: Predicting Mortgage Approvals From Government Data。
我的目标是了解分类问题的各个部分,而不是排名靠前。
但是,我发现了一些我不清楚的东西:
我从基于样本的交叉验证模型中获得了几乎相同的性能(准确度 = 0.69),与在整个数据集上使用此模型得分的模型(准确度 = 0.69)相同。
但是当我使用竞赛数据集提交数据时,我得到一个“漂亮”的 0.5。
- 听起来像是过拟合的问题
但我认为简历会发现过度拟合问题......
我唯一合乎逻辑的解释是 CV 失败了,因为它是基于我使用“train_test_split”函数创建的样本。
换句话说:因为我使用了这种抽样方式,我的样本变成了一种分形:无论我创建什么子样本,它始终是对总体的非常精确的复制。
所以:CV“未能”检测到过度拟合。
好的。我希望我能够解释发生了什么。
(顺便说一句,如果您想知道为什么我不检查它是否运行完整的人口:我使用的是 HP core duo 2.8 Mhz 8 RAM ......这需要永远......)
这里是我的代码的步骤:
0)准备数据集(NaN等)并将所有内容转换为分类(数字-->分箱)
1) 使用 train_test_split 从 500K 数据集中采样 12.000 条记录 2) 使用 OHE 编码(选择)分类 3) 通过 PCA 减少特征 4) 执行 CV 以确定最佳 Log_reg 超参数“C”值 5) 使用 train_test_split 拆分样本:持有 2000 12000 条记录 6) 基于 Xtrain,y_train 构建 Log_reg 模型(准确度:0.69) 7) 将整个数据集拟合到 log_reg 模型中(准确度:0.69) 8) 将整个竞赛数据集拟合到 log_reg 模型中 9) 获得出色的 0.5 精度结果....
我唯一的其他解释是,我在竞争数据集中选择了一堆被我遗漏的特征“覆盖”的特征。(你知道:竞争者在那里让我们汗流浃背......)
在这里我也有一个“硬件问题”来改变数字。
如果有人对此有任何疑问,我很乐意学习。
多谢
- 我也尝试过使用随机森林,但我遇到了同样的问题。在这种情况下,我知道 OHE 不是 sklearn RF 模型喜欢的东西:它会危害模型并破坏具有“许多”类别的有价值的特征
如果需要,很乐意分享。
我希望这两个之一:
或者:在整个数据集上表现不佳的模型
或者:在竞争数据集上具有可比(0.66?)性能的模型。
apache-beam - 如何在 Apache Beam 中实现没有重叠的训练测试分割?
我想训练测试拆分具有关联实体的文本列表,因此没有实体重叠拆分。
确保没有重叠是一项挑战,我目前通过 2 次groupby
操作来实现。我想知道如何减轻这些groupby
操作造成的内存瓶颈,或者是否有更清洁的方法来完成整个过程。
输入
我想要输出:
火车分裂
测试拆分
我的方法
初始groupby
实体:
接下来我创建一个共现实体键:
然后我groupby
在这个同时出现的键上:
我在具有 700 万个条目的大型数据集上的工作在groubpy
操作上失败,请参阅下面的错误。
然后进行训练测试拆分,partition
最后申请distinct
删除重复项。
错误
可悲的是,我的方法在这里失败了:
python - 删除虚拟列以避免多重共线性后如何计算测试的 R-Squared?
所以我想找到我的 R 平方,X_test
其中包括虚拟列。
我尝试在删除虚拟列的X_test
同时不删除它们X_train
(这是我能想到的唯一解决方案,但显然它不起作用)。
所以 X 是一个矩阵并且有一些分类变量。火车测试拆分后,我转身X_train
并X_test
有虚拟柱。
为了避免多重共线性,我删除了每个虚拟列的第一列。
创建X_train_dum
and后X_test_dum
,我将训练拟合到线性回归模型中。
这是过程:
把 train 装进 lr 后,觉得合适找lr.score(X_test_dum, y_test)
不幸的是,它返回:ValueError: shapes (130,28) and (27,) not aligned: 28 (dim 1) != 27 (dim 0)
所以事实证明X_train_dum
有 27 列,而X_test_dum
有 26 列。我不知道为什么当两者具有相同数量的列时会发生这种X_test
情况X_train
。
machine-learning - 如何修复“ValueError:发现样本数量不一致的输入变量:[32979, 21602]”?
我正在制作一个逻辑回归模型来进行情绪分析。这就是问题所在 -ValueError: Found input variables with inconsistent numbers of samples: [32979, 21602]
当我尝试将数据集拆分为 x 和 y 训练集和有效集时,就会发生这种情况。
我在一些帖子中看到它可能由于 X 和 y 的形状而发生,因此打印出数据集的形状,我将数据集分成 85% 用于训练,其余用于测试/有效目的。
问题也出在这一行 -
现在我一无所知,究竟是什么导致了这个问题?你们能帮忙吗?提前致谢。