【问题标题】:How to load categorical attributes in scikit-learn?如何在 scikit-learn 中加载分类属性?
【发布时间】:2013-03-19 15:25:20
【问题描述】:

我想在 scikit-learn 中创建一个贝叶斯模型来预测电影的票房开局。

我从 scikit learn 开始,我发现了很多关于如何加载 CSV 和其他表格数据的示例,但我还没有找到关于如何加载具有值集合的属性的示例,例如:

Movie 1: Actors: [Actor 1, Actor 2, Actor 3...], etc.

谁能给我一个提示?

【问题讨论】:

    标签: numpy scipy scikit-learn


    【解决方案1】:

    DictVectorizer 是处理尚未编码为 Numpy 数组的分类数据的首选方式。对于每个样本,您可以构建一堆看起来像

    [{'Tom Hanks': True, 'Halle Berry': True},
     {'Tom Hanks': True, 'Kevin Bacon': True}]
    

    等等。键必须是字符串;这些值可以是字符串(使用 one-of-k 编码扩展)、布尔值或数字。 DictVectorizer 然后将这些 dicts 转换为可以馈送到学习算法的矩阵。该矩阵将在整个输入集中每个演员(或其他电影特征)有一列。字典/样本中没有出现的特征的隐含值为零。

    【讨论】:

    • 这种表示的一个问题是它的维度非常高。根据学习算法,使用例如降低这些特征的维数可能会有所帮助。主成分分析。
    • @Dougal:根据我的经验,简单的特征选择(使用 L1 惩罚 SVM 或 SelectKBest(chi2))比 PCA 更容易处理。结果也更容易解释,因为特征保留了它们的名称,并且DictVectorizer 在其restrict 方法中支持特征选择。
    • 同意 - 但是,由于我希望在各种电影中的演员中有很多协方差结构,因此 PCA 类型的方法可能会提供更多信息。两个都值得尝试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 2013-01-29
    • 2018-05-15
    • 2016-05-22
    • 1970-01-01
    • 2015-03-27
    • 2020-02-14
    相关资源
    最近更新 更多