如何修改这个报错:AttributeError: 'PolynomialFeatures' object has no attribute 'get_feature_names'
时间: 2023-03-05 17:51:24 浏览: 806
这个报错意味着在你的代码中,你尝试使用 `PolynomialFeatures` 的 `get_feature_names()` 方法,但该对象似乎并没有这个方法。
为了解决这个问题,有以下几个可能的解决方案:
1. 确保你的 `sklearn` 库版本是最新的。`get_feature_names()` 方法在一些旧版本的 `sklearn` 中可能不存在。你可以通过 `pip install -U scikit-learn` 命令来升级 `sklearn` 库。
2. 如果你的 `sklearn` 库已经是最新版本,那么可能是你的代码有误。请检查你的代码是否正确地实例化了 `PolynomialFeatures` 类,并且是否正确地使用了 `fit_transform()` 方法。另外,也请确保你的输入数据格式正确,因为 `get_feature_names()` 方法需要的是 `PolynomialFeatures` 所处理的特征名称列表,而不是原始数据。
3. 如果以上两个解决方案都不行,那么你可以尝试自己实现一个函数来生成特征名称列表。这个函数可以使用 `PolynomialFeatures` 所生成的特征矩阵的形状和 `get_feature_names()` 方法的实现方式作为参考。下面是一个示例函数:
```
def generate_feature_names(poly, input_features):
poly_n = poly.n_output_features_
input_n = len(input_features)
feature_names = []
for i in range(poly_n):
if i < input_n:
feature_names.append(input_features[i])
else:
name = ''
powers = poly.powers_[i]
for j in range(len(powers)):
if powers[j] > 0:
if name:
name += '*'
name += input_features[j]
if powers[j] > 1:
name += '^' + str(powers[j])
feature_names.append(name)
return feature_names
```
这个函数需要传入一个已经实例化的 `PolynomialFeatures` 对象和一个输入特征名称列表。它会返回一个特征名称列表,其中每个元素对应 `PolynomialFeatures` 所生成的一个特征。
阅读全文