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



假设我对每个要分类的样本有多个观察结果。此类问题的示例包括:

  • 一幅画的多个补丁,您正在尝试对风格进行分类
  • 信号
  • 的多个窗口,您尝试在其中对信号进行分类

答案组合成一个答案的最python方法是什么?

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

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

  1. 算术平均值,如果您的模型执行回归或概率分类。
  2. 模式(如果您的模型执行前向分类)。

当然,您可以使用任何其他汇总统计数据进行聚合。

以下代码通过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)

最新更新