结合scikit-learn中单个样本的多个观察的分类

时间:2017-10-31 17:49:12

标签: machine-learning scikit-learn

假设我对每个要分类的样本有多个观察结果。这样的问题的例子是:

  • 一幅画的多个片段,您正在尝试对样式进行分类
  • 信号的多个窗口,您尝试对信号进行分类

将答案合并为一个答案的最灵活方式是什么?

p.s。:我不想要合奏 - 将多个模型的答案结合起来作为单个样本的输入。我想将单个模型的答案与单个样本的多个观察结合起来。

1 个答案:

答案 0 :(得分:2)

你不想要合奏,但你可以模仿合奏的最佳实践。聚合预测有两种基本方法:

  1. 算术平均值,如果您的模型进行回归或概率分类。
  2. 模式,如果您的模型进行了严格的分类。
  3. 当然,您可以使用任何其他汇总统计信息进行汇总。

    以下代码使用pandas实现此想法:

    import numpy as np
    import pandas as pd
    import sklearn.tree
    object_ids = [1,1,1,2,2,2,3,3,3,3]
    x = np.arange(10).reshape(10,1)
    y = [0,0,0,1,0,1,1,0,1,1]
    # regression
    model = sklearn.tree.DecisionTreeRegressor().fit(x, y)
    prediction = pd.Series(model.predict(x)).groupby(object_ids).mean()
    # probabilistic_classification
    model = sklearn.tree.DecisionTreeClassifier().fit(x, y)
    prediction = pd.DataFrame(model.predict_proba(x)).groupby(object_ids).mean()
    # 'crisp' classification
    model = sklearn.tree.DecisionTreeClassifier().fit(x, y)
    def mode(x):
        return x.value_counts().index[0]
    prediction = pd.Series(model.predict(x)).groupby(object_ids).apply(mode)