You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用sklearn乳腺癌数据集分析时报AttributeError: columns错误如何解决

问题原因

报错由代码第11行cols = WBC_dataset.columns.drop('Condition')触发:

  • scikit-learn的load_breast_cancer()返回的是Bunch类对象,仅包含data(特征矩阵)、target(标签数组)、feature_names(特征名列表)、DESCR(数据集说明)等内置属性,不存在columns属性,你错误地将Pandas DataFrame的属性用法用到了sklearn原始数据集对象上。
  • 额外说明:代码中对特征列做pd.to_numeric转换属于冗余操作,该内置数据集的所有特征本身就是数值类型,无需额外转换。

修正后完整代码

import numpy as np
import seaborn as sns; sns.set(style="ticks", color_codes=True)
import sklearn.datasets
import pandas as pd
from sklearn.datasets import load_breast_cancer
WBC_dataset = load_breast_cancer()

WBC_df = pd.DataFrame(
data= np.c_[WBC_dataset['data'],WBC_dataset['target']],
columns= np.append(WBC_dataset['feature_names'], ['Condition']))
# 修正:从构造好的DataFrame中取列名,直接用WBC_dataset['feature_names']也可实现相同效果
cols = WBC_df.columns.drop('Condition')
WBC_df[cols] = WBC_df[cols].apply(pd.to_numeric)
g = sns.pairplot(WBC_df, hue='Condition')

如果要简化冗余逻辑,也可以直接用以下写法:

import numpy as np
import seaborn as sns; sns.set(style="ticks", color_codes=True)
import pandas as pd
from sklearn.datasets import load_breast_cancer

WBC_dataset = load_breast_cancer()
WBC_df = pd.DataFrame(
    data= np.c_[WBC_dataset['data'], WBC_dataset['target']],
    columns= np.append(WBC_dataset['feature_names'], ['Condition'])
)
g = sns.pairplot(WBC_df, hue='Condition')

内容的提问来源于stack exchange,提问作者hw21

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 06:18:01