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
相关产品推荐
相关产品推荐

