一个例子带你入门机器学习

目录

1.为建模选择数据

2.选择预测目标

3.选择“特征”

4.构建您的模型


(这篇文章将使用经典墨尔本房价数据集作为例子,引导机器学习的流程,数据集为melb_data.csv,请在csdn的下载区自行下载,运行代码时需要将数据集下载在同个目录下)


1.为建模选择数据

数据集有太多的变量,多到难以理解,甚至无法很好地打印出来。如何将这海量的数据削减为能够理解的内容?我们将首先凭借直觉选择几个变量。后续将介绍自动确定变量优先级的统计技术。要选择变量/列,我们需要查看数据集中所有列的列表。这可以通过DataFrame的columns属性来完成(下面代码的最后一行)。

import pandas as pd

melbourne_file_path = 'melbs_data.csv'
melbourne_data = pd.read_csv(melbourne_file_path) 
melbourne_data.columns
# 墨尔本的数据存在一些缺失值(一些房屋的某些变量未被记录。)
# 我们将在后续的教程中学习如何处理缺失值。
# 您的爱荷华州数据在您使用的列中没有缺失值。
# 因此,目前我们将采取最简单的选项,从我们的数据中删除房屋。
# 目前不用太担心这个,不过代码是:

# dropna 会删除缺失值(将 na 视为“不可用”)
melbourne_data = melbourne_data.dropna(axis=0)

有很多方法可以选择您数据的子集,目前我们将重点关注两种方法。

1.点标记法,我们用它来选择“预测目标”

2.使用列列表进行选择,我们用它来选择“特征”


2.选择预测目标

您可以使用点标记法提取一个变量。这个单列存储在一个Series中,大致类似于只有单列数据的 DataFrame。我们将使用点标记法选择我们想要预测的列,这被称为预测目标。按照惯例,预测目标被称为y。因此,我们在墨尔本数据中保存房价所需的代码是

y = melbourne_data.Price # 使用点标记法选择预测值
y

3.选择“特征”

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

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

我们通过在方括号内提供列名列表来选择多个特征。该列表中的每个项目都应该是一个字符串(带引号)。下面是一个示例:

melbourne_features = ['Rooms', 'Bathroom', 'Landsize', 'Lattitude', 'Longtitude'] # 使用列表选择特征

一般来说,这个用于训练的特征数据被称为 X。

X = melbourne_data[melbourne_features]

4.构建您的模型

您将使用 scikit-learn 库来创建您的模型。在编写代码时,这个库被写为 sklearn ,正如您在示例代码中看到的那样。对于通常存储在 DataFrames 中的数据类型进行建模,scikit-learn 无疑是最受欢迎的库。
构建和使用模型的步骤是:

1.定义:它将是哪种类型的模型?是决策树?还是其他类型的模型?同时也会指定模型类型的其他一些参数。

2.拟合:从提供的数据中捕获模式。这是建模的核心。

3.预测:正如其名

4.评估:确定模型预测的准确性。

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

from sklearn.tree import DecisionTreeRegressor

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

# 拟合模型
melbourne_model.fit(X, y)

许多机器学习模型在模型训练中允许一定的随机性。为 random_state 指定一个数字可确保您每次运行都能得到相同的结果。这被认为是一种良好的实践。您可以使用任何数字,而且模型质量不会因为您选择的确切值而有实质性的影响。

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

在实际应用中,您会希望为即将上市的新房而不是我们已经有价格的房屋进行预测。但我们将对训练数据的前几行进行预测,以了解预测函数的工作方式。

print("Making predictions for the following 5 houses:")
print(X.head())
print("The predictions are")
print(melbourne_model.predict(X.head()))

你可能感兴趣的:(一个例子带你入门机器学习)