0基础学习kagge比赛,机器学习,人工智能入门2

选择建模数据

您的数据集包含太多变量,难以理解,甚至无法很好地打印出来。您该如何将这大量的数据精简到您能够理解的程度?

我们将首先使用直觉选择一些变量。以后的课程将向您展示如何使用统计技术自动优先考虑变量。

为了选择变量/列,我们需要查看数据集中所有列的列表。可以使用 DataFrame 的 columns 属性来实现(下面是代码的最后一行)。

import pandas as pd

melbourne_file_path = '../input/melbourne-housing-snapshot/melb_data.csv'
melbourne_data = pd.read_csv(melbourne_file_path) 
melbourne_data.columns

上述代码会显示数据集中的所有列,如下所示:

Index(['Suburb', 'Address', 'Rooms', 'Type', 'Price', 'Method', 'SellerG', 'Date', 'Distance', 'Postcode', 'Bedroom2', 'Bathroom', 'Car', 'Landsize', 'BuildingArea', 'YearBuilt', 'CouncilArea', 'Lattitude', 'Longtitude', 'Regionname', 'Propertycount'], dtype='object')

墨尔本数据中有一些缺失值(一些房屋的一些变量没有记录)。我们将在以后的教程中学习如何处理缺失值。不过,您的爱荷华数据在您使用的列中没有缺失值。因此,我们将采取最简单的选择,即从我们的数据中删除房屋。现在不用太担心这一点,尽管代码如下:

# dropna drops missing values (think of na as "not available")
melbourne_data = melbourne_data.dropna(axis=0)

有很多方法可以选择数据的子集。Pandas 课程更详细地介绍了这些内容,但我们现在将专注于两种方法。

  1. 使用点符号进行选择,用于选择“预测目标”。
  2. 使用列列表进行选择,用于选择“特征”。

选择预测目标

您可以使用点符号提取一个变量。这个单独的列存储在一个 Series 中,它在很大程度上类似于只有单列数据的 DataFrame。

我们将使用点符号选择我们要预测的列,称为预测目标。按照惯例,预测目标被称为 y。因此,我们需要保存墨尔本数据中房价的代码如下:

 
y = melbourne_data.Price

选择“特征”

输入我们的模型(以及后来用于预测的)的列称为“特征”。在我们的情况下,这些将是用于确定房屋价格的列。有时,您将使用除目标以外的所有列作为特征。其他时候,使用较少的特征可能更好。

现在,我们将构建一个仅包含几个特征的模型。稍后,您将看到如何迭代并比较使用不同特征构建的模型。

我们通过在括号内提供列名的列表来选择多个特征。该数据按照惯例称为 X。

melbourne_features = ['Rooms', 'Bathroom', 'Landsize', 'Lattitude', 'Longtitude']
X = melbourne_data[melbourne_features]

让我们快速查看我们将用于预测房价的数据,使用 describe 方法和 head 方法,它们分别显示数据的统计信息和前几行。

 
X.describe() 
RoomsBathroomLandsizeLattitudeLongtitude
count6196.0000006196.0000006196.0000006196.0000006196.000000
mean2.9314071.576340471.006940-37.807904144.990201
std0.9710790.711362897.4498810.0758500.099165
min1.0000001.0000000.000000-38.164920144.542370
25%2.0000001.000000152.000000-37.855438144.926198
50%3.0000001.000000373.000000-37.802250144.995800
75%4.0000002.000000628.000000-37.758200145.052700
max8.0000008.00000037000.000000-37.457090145.526350

 
X.head()

   

RoomsBathroomLandsizeLattitudeLongtitude
121.0156.0-37.8079144.9934
232.0134.0-37.8093144.9944
441.0120.0-37.8072144.9941
632.0245.0-37.8024144.9993
721.0256.0-37.8060144.9954

这些命令的视觉检查是数据科学家工作中的重要部分。您经常会在数据集中发现值得进一步检查的惊喜。

构建您的模型

您将使用 scikit-learn 库来创建模型。在编码时,该库被写为 sklearn,正如您将在示例代码中看到的那样。Scikit-learn 是对通常存储在 DataFrame 中的数据建模的最流行的库。

构建和使用模型的步骤如下:

  1. 定义:它将是什么类型的模型?决策树?某种其他类型的模型?还规定了模型类型的一些其他参数。
  2. 拟合:从提供的数据中捕捉模式。这是建模的核心。
  3. 预测:就像听起来的那样
  4. 评估:确定模型预测的准确性。

以下是使用 scikit-learn 定义决策树模型并使用特征和目标变量进行拟合的示例。

 
from sklearn.tree import DecisionTreeRegressor

# 定义模型。为确保每次运行都获得相同的结果,指定 random_state 的数字
melbourne_model = DecisionTreeRegressor(random_state=1)

# 拟合模型
melbourne_model.fit(X, y)
DecisionTreeRegressor(random_state=1)

许多机器学习模型允许在模型训练中引入一些随机性。指定 random_state 的数字确保您在每次运行时都获得相同的结果。这被认为是一种良好的做法。您可以使用任何数字,模型质量不会实质性地取决于您选择的确切值。

现在,我们有了一个已拟合的模型,我们可以用来进行预测。

实际上,您将希望为新上市的房屋进行预测,而不是我们已经有价格的房屋。但我们将为训练数据的前几行进行预测,以了解 predict 函数的工作原理。

 
print("Making predictions for the following 5 houses:")
print(X.head())
print("The predictions are")
print(melbourne_model.predict(X.head()))
Making predictions for the following 5 houses:
   Rooms  Bathroom  Landsize  Lattitude  Longtitude
1      2       1.0     156.0   -37.8079    144.9934
2      3       2.0     134.0   -37.8093    144.9944
4      4       1.0     120.0   -37.8072    144.9941
6      3       2.0     245.0   -37.8024    144.9993
7      2       1.0     256.0   -37.8060    144.9954
The predictions are
[1035000. 1465000. 1600000. 1876000. 1636000.]

以上是对前5行房屋进行预

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值