Kaggle 教程3 -- 你的第一个机器学习模型

2019-02-22  本文已影响0人  TwinIsland

翻译自 Kaggle
翻译 by Wyatt Huang
转载请著名

选择合适的数据

一个数据集有太多的变量,如果你想在你的模型中全部囊括的话可能会让你疯狂!所以,预处理数据是很重要的,在这篇教程,我们会学习怎么把那些数据削减到你能理解的东西?

我们首先使用直觉选择一些变量。后面的课程将向您展示一些能够自己选择有用数据的算法

要选择对模型有用的变量,我们需要查看数据集中列表的列。这是通过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')
#墨尔本数据有一些缺失值(某些房屋没有记录某些变量。)
#我们将学习在后面的教程中处理缺失值。
#您的爱荷华州数据在您使用的列中没有缺失值。
#所以我们现在采取最简单的选择,从我们的数据中删除房屋。
#暂时不要担心这个问题,尽管代码是:
melbourne_data = melbourne_data.dropna(axis=0)

有很多方法可以选择数据的子集。后面关于pandas的课程更深入地介绍了这些内容,但我们现在将重点关注两种方法。

通过点符号来提取

您可以使用点符号来提取变量。,它大致类似于只有一列数据的DataFrame。

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

y = melbourne_data.Price

通过选择"特征"(features)来提取

输入到我们模型中的列(比如说:价格、位置...)被称为“特征”。在我们的例子中,那些将是用于确定房价的特征。有时

目前,我们将构建一个只有少数功能的模型。稍后您将看到如何迭代和比较使用不同功能构建的模型。

我们通过在括号内提供列名列表来选择多个功能。该列表中的每个项目都应该是一个字符串(带引号)。

这是一个例子:

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

我们有特征后就可以把特征对应的数据提取出来了

X = melbourne_data[melbourne_features]

让我们来看一下我们的 X 里的信息吧!

X.describe()
72483-t2p1zzhn2w.png
# 查看数据头5行的信息
X.head()
29986-dms705n15g.png

使用以上两种方法检查(check)数据是一种很有必要的手段,在以后当你深入学习后就会体会到这种方法的重要性

建立你的模型

您将使用scikit-learn库来创建模型。编程序时,此库编写为sklearn,您将在示例代码中看到。 Scikit-learn是机器学习中最常用的库,用于对通常存储在DataFrame中的数据类型进行建模。
建模的步骤为:

  1. 定义:它将是什么类型的模型?决策树?其他一些型号?还指定了模型类型的一些其他参数。
  2. 适合:从提供的数据中捕获模式。这是建模的核心。
  3. 预测:听起来是什么样的
  4. 评估:确定模型预测的准确程度。

下面是一个模型的例子:

from sklearn.tree import DecisionTreeRegressor

# Define model. Specify a number for random_state to ensure same results each run
melbourne_model = DecisionTreeRegressor(random_state=1)

# Fit model
melbourne_model.fit(X, y)

## 下面是输出:
DecisionTreeRegressor(criterion='mse', max_depth=None, max_features=None,
           max_leaf_nodes=None, min_impurity_decrease=0.0,
           min_impurity_split=None, min_samples_leaf=1,
           min_samples_split=2, min_weight_fraction_leaf=0.0,
           presort=False, random_state=1, splitter='best')

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

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

在实践中,你会想要预测市场上的新房,而不是我们已经有价格的房屋。但是在以下的例子中,我们将对训练数据的前几行进行预测,以了解预测函数的工作原理。

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.]

课后作业

用墨尔本的房价数据来建立一个你自己的模型


关键词:

数据:

上一篇下一篇

猜你喜欢

热点阅读