[LightGBM] [Warning] Unknown parameter categorical_column= Traceback (most recent call last):
时间: 2023-06-20 15:08:03 浏览: 172
这个警告信息是 LightGBM 模型中的一个参数错误导致的。categorical_column 不是 LightGBM 模型的参数,它是 CatBoost 模型中的参数。如果你想在 LightGBM 模型中使用类别特征,应该使用 categorical_feature 参数。例如,如果你有一个数据集,其中第一列是类别特征,可以这样指定:
```python
import lightgbm as lgb
train_data = lgb.Dataset(X_train, label=y_train, categorical_feature=[0])
```
这样 LightGBM 就会将第一列看作是类别特征,而不是数值特征。
相关问题
[LightGBM] [Warning] Unknown parameter categorical_column= Traceback (most recent call last): File "C:\Users\86188\PycharmProjects\pythonProject8\src\lgbb.py", line 106, in <module> y_pred = lgb_model.predict(X_test) File "C:\Python37\lib\site-packages\lightgbm\sklearn.py", line 545, in predict return self._le.inverse_transform(class_index) File "C:\Python37\lib\site-packages\sklearn\preprocessing\_label.py", line 161, in inverse_transform raise ValueError("y contains previously unseen labels: %s" % str(diff)) ValueError: y contains previously unseen labels: [83394] 进程已结束,退出代码1
这个错误提示是因为你在 LightGBM 模型中使用了一个未知的参数 `categorical_column=`。这个参数在最新的 LightGBM 版本中已经被移除了。如果你想要使用分类特征,可以使用 `categorical_feature` 参数来指定它们的列索引或名称。另外,错误信息中的 `ValueError` 提示说明你的测试数据集中包含了未出现在训练数据集中的标签。你需要检查一下你的训练集和测试集的标签分布是否一致,如果不一致的话就需要进行处理。
res=result; %% 划分训练集与测试集 P_train=res(1:30:21600,10)'; T_train=res(1:30:21600,11)'; M=size(P_train,2); P_test=res(21600:30:end,10)'; T_test=res(21600:30:end,11)'; N=size(P_test,2); %% 数据归一化 [P_train,ps_input]=mapminmax(P_train,0,1); P_test=mapminmax('apply',P_test,ps_input); t_train=categorical(T_train)'; t_test=categorical(T_test); %% 数据平铺 P_train=double(reshape(P_train,10,1,1,M)); P_test=double(reshape(P_test,10,1,1,N));错误使用 reshape 元素数不能更改。请使用 [] 作为大小输入之一,以自动计算该维度的适当大小。
这段代码中使用了错误的 reshape 函数。根据错误提示,元素数不能更改。正确的使用方法应该是将要改变的维度的大小设为 [],让 reshape 函数自动计算该维度的大小。修改后的代码如下:
```
res=result; %% 划分训练集与测试集
P_train=res(1:30:21600,10)';
T_train=res(1:30:21600,11)';
M=size(P_train,2);
P_test=res(21600:30:end,10)';
T_test=res(21600:30:end,11)';
N=size(P_test,2);
%% 数据归一化
[P_train,ps_input]=mapminmax(P_train,0,1);
P_test=mapminmax('apply',P_test,ps_input);
t_train=categorical(T_train)';
t_test=categorical(T_test);
%% 数据平铺
P_train=double(reshape(P_train,[],1,1,M));
P_test=double(reshape(P_test,[],1,1,N));
```
这样修改后,reshape 函数会自动计算要改变的维度的大小,从而避免出现错误。
阅读全文