美文网首页
Kaggle 教程3 -- 你的第一个机器学习模型

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

作者: TwinIsland | 来源:发表于2019-02-22 23:20 被阅读0次

    翻译自 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的课程更深入地介绍了这些内容,但我们现在将重点关注两种方法。

    • 点符号(Dot notation),我们用它来选择“预测目标”
    • 通过列表的列属性来选择,我们用它来选择数据的特征(feature)

    通过点符号来提取

    您可以使用点符号来提取变量。,它大致类似于只有一列数据的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.]
    

    课后作业

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


    关键词:

    • sklearn
    • 构建模型

    数据:

    相关文章

      网友评论

          本文标题:Kaggle 教程3 -- 你的第一个机器学习模型

          本文链接:https://www.haomeiwen.com/subject/xwzyyqtx.html