了解numpy中的分层抽样

时间:2019-04-06 01:40:57

标签: numpy machine-learning statistics

我目前正在完成一本关于机器学习的练习本,以使我的脚湿。目前,我正在处理房地产数据集:每个实例都是加利福尼亚一个地区,并且具有多个属性,包括该地区的中位数收入,该中位数已缩放并限制为15。中位数收入直方图显示,大多数中位数收入值为聚集在2到5之间,但是有些值远远超过6。作者希望使用分层抽样,将分层基于收入中位数。他提供了下一段代码来创建收入类别属性。

housing["income_cat"] = np.ceil(housing["median_income"] / 1.5)
housing["income_cat"].where(housing["income_cat"] < 5, 5.0, inplace=True)

他解释说,他将中位数收入除以1.5以限制类别的数量,然后仅将那些类别保持低于5,并将所有其他类别合并为类别5。

我不明白的是

  • 从数学上讲,为什么要划分每个实例的位数_收入来创建阶层?这种划分的结果到底意味着什么?还有其他方法可以计算/限制层数吗?
  • 除法如何限制类别的数量,为什么他选择1.5作为除数而不是其他值?他怎么知道该选哪个值?
  • 为什么他只想要5个类别,他如何事先知道至少会有5个类别?

任何对理解这些决定的帮助将不胜感激。

我也不确定这是否是我应该发布此问题的StackOverFlow类别,因此,如果我这样做有误,请告诉我什么是合适的论坛。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可能是合适的人,可以根据您的数据集对此进行更多分析。但我可以帮助您了解分层抽样,以便您有所了解。

分层抽样:假设您有一个吃不同水果的消费者的数据集。一种功能是“水果类型”,该功能具有10个不同的类别(苹果,橙色,葡萄等),如果您仅从数据集中对数据进行采样,则样本数据可能无法涵盖所有​​类别。训练数据时,这非常糟糕。为了避免这种情况,我们有一种称为分层抽样的方法,这种抽样方式对每个不同类别进行抽样的可能性是相同的,因此我们不会错过任何有用的数据。

如果您还有任何疑问,请告诉我,我们非常乐意为您提供帮助。