目录
(这篇文章将使用经典墨尔本房价数据集作为例子,引导机器学习的流程,数据集为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()))
17万+

被折叠的 条评论
为什么被折叠?



