python的学习02之数据处理

  1、选择建模数据

      我们的数据集有太多的变量,很难处理,我们需要将这些海量的数据减少到我们能理解的程度。

      我们肯定要选择变量的一列来进行分析,故我们需要查看数据集中所有列的列表名,这是通过数据框架的Columns属性完成的。

    以之前的墨尔本房价为例

import pandas as pd

# 将文件路径保存到变量以便于访问
melbourne_file_path = '../input/melbourne-housing-snapshot/melb_data.csv'
#读取数据并将数据存储在名为墨尔本数据的数据框中
melbourne_data = pd.read_csv(melbourne_file_path)
print(melbourne_data.columns)

    输出结果为:

    2、选择数据子集的两种方法

        1)、点表示法,用于选择预测目标。

        2)、用列列表选择,我们用它来选择功能(特性)

      选择预测目标:

           我们可以用点标记法拉出一个变量。把这个单列存储在一个系列中,这个系列大体上就像一个只有单列数据的数据框架。

         我们将使用点表示法来选择要预测的列,这称为预测目标。根据惯例,预测目标称为Y

y =   melbourne_data.Price

      选择功能(特性):

          输入到我们的模型中的列(稍后用于预测)称为“功能”。在我们的例子中,这些列将是用于确定房价的列。

          有时,您将使用除目标之外的所有列作为功能。其他时候,你会因为功能更少而过得更好。

          现在,我们将构建一个只有几个特性的模型,稍后你将看到如何使用迭代和比较使用不同特性构建的模型。

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

melbourne_features = ['Rooms', 'Bathroom', 'Landsize', 'Lattitude', 'Longtitude']
X = melbourne_data[melbourne_features]
print(X.describe())
print(X.head())

        输出结果为:

            

            

     构建模型:

        我们将使用scikit-learn库创建模型,编写代码时,这个库编写为sklearn,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指定一个数字可以确保每次运行得到相同的结果。这被认为是一种很好的做法。

     我们使用任何数字,而模型的质量并不完全取决于我们所选择的值。

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

     在实践中,你会想要预测即将上市的新房子,而不是我们已经有价格的房子。但我们将对训练数据的前几行进行预测。

     以了解predict函数是如何工作的:  

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

     输出结果为:

        

    模型验证:

        

原文地址:https://www.cnblogs.com/fb1704011013/p/11148122.html