我一直在研究this example of stacking。在这种情况下,每组K形折叠产生一列数据,并且对于每个分类器重复这一过程。即:混合的矩阵是:
dataset_blend_train = np.zeros((X.shape[0], len(clfs)))
dataset_blend_test = np.zeros((X_submission.shape[0], len(clfs)))
我需要从多类问题中堆叠预测(每个样本编译15个不同的类)。这将为每个clf产生一个n * 15矩阵。
这些矩阵是否应该水平连接?或者在应用逻辑回归之前,是否应该以其他方式组合?谢谢。
答案 0 :(得分:5)
您可以通过两种方式使代码适应多类问题:
dataset_blend_train = np.zeros((X.shape[0], len(clfs)*numOfClasses))
dataset_blend_test = np.zeros((X_submission.shape[0], len(clfs)*numOfClasses))
predict_proba
而不是predict
。 我已经成功使用了两者,但效果更好可能取决于数据集。
答案 1 :(得分:0)
在循环浏览每个分类器时,还存在扩展功能的问题。我使用以下内容:
db_train = np.zeros((X_train.shape[0], np.unique(y).shape[0]))
db_test = clf.predict_proba(X_test)
...
try:
dataset_blend_train
except NameError:
dataset_blend_train = db_train
else:
dataset_blend_train = np.hstack((dataset_blend_train, db_train))
try:
dataset_blend_test
except NameError:
dataset_blend_test = db_test
else:
dataset_blend_test = np.hstack((dataset_blend_test, db_test))