我正在通过Scikit学习手册学习动手机器学习,并且在第二章中,作者建议使用以下代码对train_test_split中的功能(收入组)之一进行分层:
strat_train_set, strat_test_set = train_test_split(housing,
test_size=0.2,random_state=42,stratify=housing["income_cat"])
根据我的理解,在训练和测试数据集中均等地表示所有属性(包括目标)非常重要。
在上面的以下代码中,我们不能保证其他属性会按照其各自列中的比率进行拆分。难道所有属性都不应该是分层拆分吗?
对吗?还是我误会了代码
谢谢
答案 0 :(得分:0)
这是一个很好的问题!
据我了解,您有20%的数据作为测试数据。
这很重要,因为当我们训练模型时,我们将能够确保所产生的样本中值的比例与提供给参数分层的值的比例相同。
例如,如果变量income_cat
是具有值High
和Low
的类别变量,并且High
的25%和Low
的75% ,stratify = {housing["income_cat"]
将确保您的随机分组有High
的25%和Low
的75%。
希望有帮助!