训练后能否重命名sklearn模型特征?升级后可行验证
如何重命名sklearn随机森林回归模型的输入特征?
我训练了sklearn.ensemble.RandomForestRegressor模型,想要重命名模型的输入特征,尝试执行model.feature_names_in_ = 新特征名时触发了AttributeError: can't set attribute错误,想知道是不是没法实现这个操作?
解决方案
在旧版本scikit-learn中,feature_names_in_是只读属性,无法直接赋值修改;但升级到较新版本后,该属性已支持直接修改。以下是验证代码及结果:
from sklearn.ensemble import RandomForestRegressor from sklearn.datasets import make_regression import pandas as pd # 生成回归数据集 X, y = make_regression(n_features=4, n_informative=2, random_state=0, shuffle=False) # 初始化模型 regr = RandomForestRegressor(max_depth=2, random_state=0) # 将特征转为DataFrame并设置初始列名 X = pd.DataFrame(X) X.columns = ["a", "b", "c", "d"] # 训练模型 regr.fit(X, y) # 查看初始特征名 regr.feature_names_in_
输出:
array(["a", "b", "c", "d"], dtype=object)
修改特征名并验证:
regr.feature_names_in_ = ["aaa", "bbb", "ccc", "ddd"] regr.feature_names_in_
输出:
['aaa', 'bbb', 'ccc', 'ddd']
内容的提问来源于stack exchange,提问作者An Ignorant Wanderer
相关产品推荐
相关产品推荐

