【问题标题】:how to predict binary outcome with categorical and continuous features using scikit-learn?如何使用 scikit-learn 预测具有分类和连续特征的二进制结果?
【发布时间】:2016-12-04 08:05:26
【问题描述】:

我需要为分类问题选择模型和机器学习算法的建议。

我正在尝试预测一个主题的二元结果。我的数据集中有 500,000 条记录和 20 个连续和分类特征。每个主题有 10--20 条记录。数据标有其结果。

到目前为止,我正在考虑基于备忘单here 的逻辑回归模型和内核近似。

在 R 或 Python 中实现此功能时,我不确定从哪里开始。

谢谢!

【问题讨论】:

  • scikit-learn.org/stable/documentation.html 我不知道还能告诉你什么
  • 解决机器学习问题几乎总是需要迭代。首先查看您的数据并将其可视化,以便您对其特征有一些直觉。在此之后,使用交叉验证构建一个快速而肮脏的模型。这将为您提供一个基本的基线。您可能应该尝试使用逻辑回归(检查 R 平方)或决策树来了解哪些特征最具预测性,以从高级别的意义上了解哪些变量最重要,哪些是多余的。这将帮助您避免多重共线性。祝你好运。
  • 我不是在询问模型的参数应该是什么,也不是在询问有关如何验证/校准机器学习算法的建议,也不是指向文档一组算法的特定软件实现。我正在询问模型类和针对我所呈现的数据结构的适当算法,如果它很简单,则需要合适的包来执行此操作。到目前为止,感谢您的 cmets 和回答。

标签: python r machine-learning


【解决方案1】:

在任何数据挖掘项目中,选择算法和优化参数都是一项艰巨的任务。因为它必须针对您的数据和问题进行定制。尝试不同的算法,如 SVM、随机森林、Logistic 回归、KNN 和......并为它们中的每一个测试交叉验证,然后比较它们。 您可以使用GridSearch in sickit learn 尝试不同的参数并优化每个算法的参数。也可以试试this project 用遗传算法测试一系列参数

【讨论】:

    【解决方案2】:

    特点

    如果您的分类特征没有太多可能的不同值,您可能需要查看sklearn.preprocessing.OneHotEncoder

    型号选择

    “最佳”模型的选择主要取决于可用训练数据的数量以及您期望获得的决策边界的简单程度。

    您可以尝试将维度降低到 2 或 3 维。然后你可以可视化你的数据,看看是否有一个很好的决策边界。

    拥有 500,000 个训练示例,您可以考虑使用神经网络。我可以为初学者推荐Keras,为了解神经网络工作原理的人推荐TensorFlow

    你应该也知道有Ensemble methods

    你已经找到了in the sklearn tutorial 上的一个很好的备忘单:


    (来源:scikit-learn.org

    试一试,比较不同的结果。如果没有更多信息,就无法为您提供更好的建议。

    【讨论】:

      猜你喜欢
      • 2015-01-12
      • 2018-09-25
      • 2017-09-19
      • 2021-03-26
      • 2021-08-30
      • 2018-09-07
      • 2014-02-17
      • 2017-12-22
      • 2017-08-04
      相关资源
      最近更新 更多