了解 numpy 中的分层采样



我目前正在完成一本关于机器学习的练习册,可以说是这门学科的脚。现在我正在研究一个房地产数据集:每个实例都是加利福尼亚州的一个地区,并且有几个属性,包括该地区的收入中位数,该收入中位数已按比例调整并上限为 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)

他解释说,他将median_income除以1.5以限制类别的数量,然后他只保留低于5的类别,并将所有其他类别合并到类别5中。

我不明白的是

  • 为什么划分每个实例的median_income来创建地层在数学上是合理的?这种划分的结果究竟意味着什么?还有其他方法可以计算/限制地层数量吗?
  • 除法如何限制类别的数量,为什么他选择 1.5 作为除数而不是不同的值?他怎么知道该选择哪个值?
  • 为什么他只想要5个类别,他事先怎么知道至少有5个类别?

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

我也不确定这是否是我应该发布这个问题的 StackOverFlow 类别,所以如果我这样做犯了错误,请让我知道什么是合适的论坛。

谢谢!

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

分层抽样:假设您有一个包含食用不同水果的消费者的数据集。一个特征是"水果类型",这个特征有10个不同的类别(苹果,橙子,葡萄)。等)现在,如果您只是从数据集中抽样数据,则样本数据可能无法涵盖所有类别。这在训练数据时非常糟糕。为了避免这种情况,我们有一种称为分层抽样的方法,在这个概率中每个不同的类别都是相同的,这样我们就不会错过任何有用的数据。

如果您还有任何问题,请告诉我,我很乐意为您提供帮助。

最新更新