AttributeError: This 'Pipeline' has no attribute 'fit_resample还是这样
时间: 2025-07-08 19:44:40 浏览: 8
---
### ❗问题再次确认
你仍然遇到以下错误:
```
AttributeError: This 'Pipeline' has no attribute 'fit_resample'
```
说明:**你使用的 `Pipeline` 实际上是 `sklearn.pipeline.Pipeline`,而不是 `imblearn.pipeline.Pipeline`。**
即使你写了:
```python
from imblearn.pipeline import Pipeline as ImbPipeline
```
但如果在运行时依然报错,说明你的代码中存在**模块导入冲突或覆盖**。
---
## ✅ 诊断 + 彻底解决方法
我们来一步步排查并彻底解决这个问题。
---
### 🔍 步骤一:检查是否真的使用了 `imblearn.pipeline.Pipeline`
请你在定义 pipeline 前插入如下调试语句:
```python
import imblearn
print(imblearn.__version__)
```
如果你看到类似:
```
AttributeError: module 'imblearn' has no attribute '__version__'
```
说明你没有正确安装 `imbalanced-learn`!
---
### 🛠️ 解决方案 A:确保安装了 `imbalanced-learn`
打开终端(命令行),执行:
```bash
pip install -U imbalanced-learn
```
然后重启 Python 内核(Jupyter Notebook 中点击 Kernel > Restart)或重新启动脚本。
---
### 🧪 解决方案 B:强制验证导入的是 `imblearn` 的 Pipeline
加入如下测试代码:
```python
from imblearn.pipeline import Pipeline as ImbPipeline
print(ImbPipeline.__module__) # 应该输出:imblearn.pipeline
```
如果输出是:
```
sklearn.pipeline
```
那说明你的环境有严重冲突,建议:
```bash
pip uninstall imblearn
pip install imbalanced-learn
```
⚠️ 注意:`pip install imblearn` 是旧版本,不推荐使用;应始终使用:
```bash
pip install imbalanced-learn
```
---
### ✅ 解决方案 C:完整无冲突示例代码(复制粘贴即可运行)
```python
# 强制检查 imblearn 是否可用
import imblearn
from imblearn.pipeline import Pipeline as ImbPipeline
print(f"Using imblearn version: {imblearn.__version__}")
print(f"ImbPipeline type: {ImbPipeline.__module__}")
import pandas as pd
from imblearn.over_sampling import BorderlineSMOTE
from imblearn.under_sampling import RandomUnderSampler
from sklearn.preprocessing import StandardScaler
from sklearn.feature_selection import SelectKBest, f_classif
# 1. 读取数据
train_df = pd.read_excel(r"C:\Users\86158\Desktop\训练集.xlsx")
test_df = pd.read_excel(r"C:\Users\86158\Desktop\测试集.xlsx")
X_train = train_df.drop(columns=['target'])
y_train = train_df['target']
X_test = test_df.drop(columns=['target'])
y_test = test_df['target']
# 2. 特征选择
selector = SelectKBest(score_func=f_classif, k=10)
X_train_selected = selector.fit_transform(X_train, y_train)
X_test_selected = selector.transform(X_test)
# 3. 构建 ImbPipeline
pipeline = ImbPipeline([
('smote', BorderlineSMOTE(random_state=42)),
('under', RandomUnderSampler(random_state=42)),
('scaler', StandardScaler())
])
# ✅ 执行 fit_resample
X_resampled, y_resampled = pipeline.fit_resample(X_train_selected, y_train)
print("✅ fit_resample 成功完成!")
```
---
### ✅ 如果这段代码可以运行,则说明一切正常!
---
###
阅读全文
相关推荐


















