
58
|
第
2
章
样设置随机生成器种子;其次,你可以把行数相同的多个数据集一次性发送给它,它会
根据相同的索引将其拆分(例如,当你有一个单独的 DataFrame 用于标记时,这就非常
有 用 ):
from sklearn.model_selection import
train_test_split
trai n_set, test_set = train_test_split(housing, test_size=0.2, random_
state=42)
到目前为止,我们思考过了纯随机的抽样方法。如果数据集足够庞大(特别是相较于属
性的数量而言),这种方式通常不错;如果不是,则有可能会导致明显的抽样偏差。如
果一家调查公司想要打电话给 1000 个人来调研几个问题,他们不会在电话簿中纯随机
挑选 1000 个人。他们试图确保让这 1000 人能够代表全体人口。例如,美国人口组成为
51.3% 的女性和 48.7% 的男性,所以,要想在美国进行一场有效的调查,样本中应该试
图维持这一比例,即 513 名女性和 487 名男性。这就是分层抽样:将人口划分为均匀的
子集,每个子集称为一层,然后从每层抽取正确的实例数量,以确保测试集合代表了总
的人口比例。如果使用纯随机的抽样方法,将有 12% 的可能得到抽样偏斜的测试集
—
要么女性比例不到 49%,要么女性比例超过 54%。不论出现哪种情况都会导致调查结果
出现显著偏差。
如果你咨询专家,他们会告诉你,要预测房价中位数,收入中位数是一个非常重要的
属性。于是你希望确保在收入属性上 ...