让我们使用DataFrame的head()方法查看前五行(如图2 - 5)。

图2 - 5 数据集中的前五行。

每行表示一个地区。有10个属性(您可以在屏幕快照中看到前6个)longitude(经度) , latitud(纬度)、housing_median_age、total_rooms、total_bedrooms、population、households、median_income、median_house_value和ocean_proximity。

info()方法对获取数据的快速描述非常有用,特别是对数据的总数,以及每个属性的类型和非空值的数量(参见图2-6)。

图2 - 6 住房信息

数据集中有20,640个实例,这意味着机器学习标准是相当小的,但是用它作为开始是很完美的。注意,total_bedrooms属性只有20,433个非空值,这意味着有207个地区是没有这个特性的。我们以后需要处理这件事。

所有属性都是数值型的,除了 ocean_proximity属性。它的类型是object,因此它可以容纳任何类型的Python对象,但是由于您从CSV文件中加载了这些数据,所以您知道它必须是一个text属性。当您查看前五行时,您可能注意到该列中的值是重复的,这意味着它可能是一个类别属性。通过使用value_count()方法,您可以了解有哪些类别存在,以及哪些地区属于某个类别。

>>> housing["ocean_proximity"].value_counts()
<1H OCEAN 9136
INLAND 6551
NEAR OCEAN 2658
NEAR BAY 2290
ISLAND 5
Name: ocean_proximity, dtype: int64

让我们看看其他的地区。describe()方法显示了数字属性的摘要(如图2-7)。

图2 - 7 每个数字属性的摘要。

总数(count)、平均(mean )、最小(min)和最大(max行是自解释的。注意,空值在这里被忽略(例如,total_bedrooms的count是20,433,而不是20,640)。std行显示了标准偏差(度量的是值的分散程度)。25%、50%和75%的行显示了相应的百分比。举例来说,25%的地区的housing_median_age低于18,而50%的则低于29,75%低于37。这些通常被称为25百分位数(或第一四分位数),中位数和75百分位数(或第三四分位数)。

另一种让你快速了解你正在处理的数据类型的方法是为每个数字属性绘制直方图。直方图显示了给定值范围(横轴上)的实例数量(在垂直轴上)。你可以一次绘制一个属性,或者您可以在整个数据集上调用hist()方法,它将为每个数字属性绘制一个直方图(参见图2-8)。例如,您可以看到,有略超过800个地区的median_house_value的值大约为50万美元。

%matplotlib inline # only in a Jupyter notebook 一定要指定 
import matplotlib.pyplot as plt
housing.hist(bins=50, figsize=(20,15))
plt.show()

图2 - 8 每个数字属性的直方图

hist()方法依赖于Matplotlib,它反过来依赖于用户指定的图形后端来绘制屏幕。因此,在您可以绘制任何内容之前,您需要指定应该使用哪个后端Matplotlib。最简单的选择是使用Jupyter的魔法命令 %matplotlib inline 。这告诉Jupyter设置Matplotlib。 所以它使用了Jupyter自己的后端。然后在笔记本内部绘制情节。注意,在Jupyter笔记本中调用show()是可选的,因为当一个单元格被执行时,Jupyter将自动显示情节。

在直方图中注意这些地方:

  1. 首先,收入中值属性看起来不是用美元(USD)来表示的。在与收集数据的团队进行检查之后,您会被告知。 数据已按比例调整,上限为15(实际上是15.0001),而最低的收入中值为0.5(实际上是0.4999)。在机器学习中使用预处理的属性是很常见的,这并不一定是一个问题,但是您应该尝试理解数据是如何计算的。
  2. 房屋年龄的中值和房价中值也有上限。后者可能是一个严重的问题,因为它是您的目标属性(您的标签)。你的机器学习算法可能会知道,价格永远不会超过这个限度。您需要与您的客户团队(使用您系统的输出的团队)进行检查,以确定这是否是一个问题。如果他们告诉你他们需要精确的预测,甚至超过50万美元,那么你主要有两种选择:

    1. 为标签超过上限的地区重新收集合适的标签

    2. 将这些地区从训练集(以及测试集)中删除,因为如果您的系统所预测值超过50万美元,则不应该对其进行评估。

  3. 这些属性有非常不同的缩放。我们将在本章后面讨论特性特征缩放时进行讨论。

  4. 最后,许多直方图都是尾重分布的(tail heavy):它们在中位数的右边的延伸远比左边多。这可能使一些机器学习算法更难检测到模式。稍后我们将尝试将这些属性转换为钟形分布。

希望您现在对所处理的数据有了更好的理解

等!在您进一步查看数据之前,您需要创建一个测试集,把它放在一边,并且永远不要看它。

results matching ""

    No results matching ""