【问题标题】:Do test data for machine learning need to have column names?机器学习的测试数据是否需要有列名?
【发布时间】:2016-04-21 18:05:42
【问题描述】:

假设我有如下训练数据:

Age:12   Height:150   Weight:100     Gender:M
Age:15   Height:145   Weight:80      Gender:F
Age:17   Height:147   Weight:110     Gender:F
Age:11   Height:144   Weight:130     Gender:M

在我训练我的数据并获得模型后,如果我需要通过一个测试观察进行预测,我是否需要发送列名称如下的数据?

Age: 13   Height:142  Weight :90  

在某些情况下,我看到有人在没有列名的数组中发送测试数据。我不确定算法是如何工作的。

注意:我使用的是 python scikit-learn,我的训练数据是一个数据帧。所以我不确定我的测试数据是否也应该是dataFrame格式

【问题讨论】:

    标签: machine-learning scikit-learn training-data test-data


    【解决方案1】:

    你在预测性别吗?

    如果是这样,那么是的。您的输入是包含以下列的记录:Age、Height 和 Weight。

    否则,您将预测缺少Gender 值的记录。如果您的模型不允许缺少字段/列,您可以获得KeyError。

    我不确定我的测试数据是否也应该是 dataFrame 格式

    简而言之:是的。

    通常你会这样做:

    # X is your input data, the format depends on how your model (pre)process the data.
    # It could be a numeric matrix, a list of dict's, a list of strings, etc.
    X_train, X_test, y_train, y_test = train_test_split(X, y)
    # Fit and validate.
    clf.fit(X_train, y_train)
    y_pred = clf.predict(X_test)
    

    因此,您的训练和测试数据格式相同,或者至少格式兼容(即:pandas 数据帧与 dict 中的 list 兼容)。

    【讨论】:

    • 谢谢 Rolando.. 考虑到我已经使用 train_test_split 或 K-fold CV 用足够的数据训练了模型并完成了评估。现在我只需要发送一个测试观察结果进行预测(比如我从前端工具传递数据),我需要找到一种方法将来自用户的输入数据作为数据帧放入相应的列名并将其传递给预测功能对吗??
    • @GopalK 如果没有看到您的代码,很难判断您是否严格需要传递数据帧。但是,是的,predict 的输入是一组观察值,格式与您传递给fit 的格式相同。
    猜你喜欢
    • 2019-08-24
    • 1970-01-01
    • 2017-11-25
    • 1970-01-01
    • 2020-02-21
    • 2017-06-07
    • 2019-07-03
    • 2021-02-17
    • 2012-04-26
    相关资源
    最近更新 更多