问题描述
我想在管道内使用 TransformedTargetRegressor 测试目标变量的不同转换的性能。然后将管道输入 GridSearchCV 以找到最佳模型。
这是我的管道的描述: numeric_pipe 是一个转换数字变量的管道。使用 map_lin_transformer 转换分类变量。完成此操作后,我使用“final_scaling”来缩放所有变量,然后再将它们传递给回归器。
Numeric_pipe = Pipeline([
('log',log_transformer),('scaling',MinMaxScaler())])
Preprocess_transformer = ColumnTransformer(transformers=[
('num',Numeric_pipe,make_column_selector(dtype_include="number")),('cat',map_lin_transformer,CatCols_selezione)])
Total_pipe = Pipeline([
('preprocess',Preprocess_transformer),('final_scaling',MinMaxScaler()),('regressore',SVR())])
model_target_tr = Pipeline([
('modello',TransformedTargetRegressor(
regressor=Total_pipe,func=np.log,inverse_func=np.exp,check_inverse=False))])
这是参数网格:
param_grid = [{
'modello__regressor__regressore': [LinearRegression()],'modello__regressor__regressore__fit_intercept': [True,False],'modello__regressor__preprocess__num__log': [None,log_transformer],'modello__regressor__preprocess__num__scaling': [MinMaxScaler(),StandardScaler()],'modello__regressor__preprocess__cat': [OneHotEncoder(sparse=False,drop='first'),map_lin_transformer],'modello__regressor__final_scaling': [MinMaxScaler(),'modello__func': [None,np.log],'modello__inverse_func': [None,np.log]}]
grid = RandomizedSearchCV(model_target_tr,param_grid,n_iter=100,cv=4,verbose = True,n_jobs=1,scoring='neg_mean_squared_error')
grid.fit(X_train,y_train)
我的问题如下: 当我传递到网格
'modello__func': [None],'modello__inverse_func': [None]}]
或
'modello__func': [np.log],'modello__inverse_func': [np.log]}]
代码运行没有任何问题,但是当我通过这个时:
'modello__func': [None,np.log]}]
代码给了我这个 ValueError 消息:
ValueError: Input contains NaN,infinity or a value too large for dtype('float64')
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)