我正在学习《Scikit 机器学习实践》教科书,在第 2 章中,作者建议使用以下代码在 train_test_split 期间对其中一个特征(收入组)进行分层:
strat_train_set, strat_test_set = train_test_split(housing,
test_size=0.2,random_state=42,stratify=housing["income_cat"])
根据我的理解,重要的是所有属性(包括目标)在训练和测试数据集中均等地表示。
在上面的以下代码中,我们不能保证其他属性按照各自列中的比率进行拆分。不是所有的属性都应该分层分割吗?
这是正确的吗?或者我误解了代码
谢谢
最佳答案
这是一个非常好的问题!
据我了解,您有 20% 的数据作为测试数据。
这很重要,因为当我们训练模型时,我们将能够确保生成的样本中的值的比例与提供给参数分层的值的比例相同。
例如,如果变量 venue_cat
是一个分类变量,其值为 High
和 Low
,并且 High
的比例为 25%/code> 和 Low
的 75%,stratify=housing["venue_cat"]
将确保您的随机分割具有 High
的 25%以及 75% 的低
。
希望对你有帮助!
关于python - 理解train_test_split方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57342864/