アンサンブルは不要ですが、アンサンブルのベストプラクティスを模倣することはできます。予測を集計するには、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)
はpd.Series'は、これらのきちんとした方法を持っていた '知りませんでした。私は同じようなものを書いていましたが、かなり醜いものになっていました(例えば、 'model.predict(x.reshape(-1、features))。reshape(samples、observations、-1).mean(axis = 1)')。ありがとう。 – ldavid