Pandas的分层取样
分层抽样是一种抽样技术,用于获得最能代表人口的样本。它通过将人口划分为同质的子群,称为阶层,并从每个阶层中随机抽取数据,从而减少了选择样本的偏差。
在统计学中,当每个阶层的平均值不同时,就会使用分层抽样。在机器学习中,分层抽样通常用于创建测试数据集以评估模型,特别是当数据集明显庞大且不平衡时。
分层抽样所涉及的步骤
- 将人口分为不同的阶层。在这一步骤中,人口根据相似的特征被划分为不同的阶层,人口中的每个成员必须正好属于一个阶层(阶层的单数)。
- 确定样本大小。决定样本应该有多小或多大。
- 对各层进行随机抽样:从各层中随机抽取样本,采用不按比例抽样,即各层的样本量与该层的人口数量相等,或者采用比例抽样,即各层的样本量与该层的人口数量成比例。
示例 1:
在这个例子中,我们有一个由10名学生组成的虚拟数据集,我们将根据他们的成绩抽出6名学生,同时使用不成比例和成比例的分层抽样。
步骤1:使用pandas DataFrame从python字典中创建假数据集。
输出:
请注意,有50%的A级学生,30%的B级学生,20%的C级学生。
步骤2:建立一个由6名学生组成的不成比例的样本(每个年级层的学生数量相等)。
不按比例抽样:使用pandas groupby,根据学生的年级将他们分成几组,即A、B、C,并使用抽样函数从每个年级组中随机抽取2名学生。
输出:
步骤3:按比例抽出60%的学生(根据其在人口中的比例,从每个分层中建立比例样本)。
比例抽样:使用pandas groupby,根据学生的成绩即A、B、C分成几组,并根据人口比例从每组中随机抽样。总的样本量是人口的60%(0.6)。
输出:
请注意,即使在样本中,也有50%的A级学生,30%的B级学生,以及20%的C级学生。
示例 2:
在这个例子中,我们将从火车数据集中创建样本数据。泰坦尼克号是英国乘客,在撞上冰山后沉没在北大西洋。该数据集包含了所有登上泰坦尼克号的乘客的信息,一个乘客要么死亡,要么在坠机中幸存,所以我们将使用幸存列作为我们的分层列。
第1步:从CSV文件中读入数据集。
输出:
第2步:检查死亡/幸存乘客的百分比
检查死亡或幸存的乘客的比例/百分比,这是给死亡或幸存的乘客人数/乘客总数*100。
输出:
其中0代表死亡的乘客(61.6%),1代表幸存的乘客(38.4%)。
步骤3:不成比例地抽出8名乘客(4人死亡,4人幸存)。
输出:
第四步:按比例抽出1%(0.01)的乘客(0.6%死亡,0.4%幸存)。
输出: