我想通过堆叠具有原始特征的元特征来预测结果。
我已经使用mlxtend进行堆栈,并且尝试将原始功能与元功能一起使用,但是该库无法正常工作。
class Output(object):
def close(self):
self.window = QtWidgets.QMainWindow()
MainWindow.close()
def setupUiOutput(self, MainWindow):
super().__init__()
MainWindow.setObjectName("MainWindow")
MainWindow.resize(811, 541)
MainWindow.setMinimumSize(QtCore.QSize(811, 541))
MainWindow.setMaximumSize(QtCore.QSize(811, 541))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Output()
ui.setupUiOutput(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
,并且发生错误为
from lightgbm import LGBMRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.datasets import load_boston
from mlxtend.regressor import StackingRegressor
from sklearn.base import BaseEstimator, TransformerMixin
from sklearn.pipeline import make_pipeline
from sklearn.model_selection import cross_validate
boston= load_boston()
y = boston['target']
X = boston['data']
class extAll(BaseEstimator, TransformerMixin):
def __init__(self):
pass
def fit(self, X, y=None):
return self
def transform(self, X):
return self
def predict(self, X):
return self
RF = RandomForestRegressor()
LGBM = LGBMRegressor()
pipe = make_pipeline(extAll())
stack1 = StackingRegressor(regressors=[RF,LGBM,pipe], meta_regressor=LGBM, verbose=1)
scores = cross_validate(stack1, X, y, cv=10)
我认为这是由具有多维数据的原始数据引起的。
我想知道更好的方法或工具。
我该怎么办?
答案 0 :(得分:0)
代码在预测部分有一些错误。 应该是正确的
class extAll(BaseEstimator, TransformerMixin,RegressorMixin):
def __init__(self):
pass
def fit(self, X, y=None):
return self
def transform(self, X):
return self
def predict(self, X):
return X
当我们开发scikit-learn类型方法时,需要RegressorMixin或ClassifierMixin进行预测。这段代码行之有效。