首页 > 解决方案 > 使用 LabelEncoder() 编码数据

问题描述

我将以下数据集作为 csv 文件。

数据集 ecoli.csv:

seq_name,mcg,gvh,lip,chg,aac,alm1,alm2,class
AAT_ECOLI,0.49,0.29,0.48,0.50,0.56,0.24,0.35,cp
ACEA_ECOLI,0.07,0.40,0.48,0.50,0.54,0.35,0.44,cp
(more entries...)
ACKA_ECOLI,0.59,0.49,0.48,0.50,0.52,0.45,0.36,cp
ADI_ECOLI,0.23,0.32,0.48,0.50,0.55,0.25,0.35,cp

我对这个数据集的目的是应用一些分类算法。为了处理 ecoli.csv 文件,我尝试更改类列并在删除 seq_name 列时将其作为第一个放入。然后我正在打印一个测试来搜索空值。之后我在 sns 库的帮助下进行绘图。

错误前的代码:

column_drop = 'seq_name'
dataframe = pd.read_csv('ecoli.txt', header='infer')
dataframe.drop(column_drop, axis=1, inplace=True)  # Dropping columns that I don't need
print(dataframe.isnull().sum())

plt.figure(figsize=(10,8))
sns.heatmap(dataframe.corr(), annot=True)
plt.show()

在编码之前以及我面临的错误之前,我根据类对数据集的值进行分组。最后,我尝试使用 LabelEncoder 对数据集进行编码,但出现错误:

错误代码:

result = dataframe.groupby(by=("class")).sum().reset_index()
print(result)

le = preprocessing.LabelEncoder()
dataframe.result = le.fit_transform(dataframe.result)
print(result)

错误:

AttributeError: 'DataFrame' object has no attribute 'result'

更新result填充了以下索引

  class    mcg    gvh    lip   chg    aac   alm1   alm2
0    cp  51.99  58.59  68.64  71.5  64.99  44.71  56.52
1    im  36.84  38.24  37.48  38.5  41.28  58.33  56.24
2   imL   1.45   0.94   2.00   1.5   0.91   1.29   1.14
3   imS   1.48   1.02   0.96   1.0   1.07   1.28   1.14
4   imU  25.41  16.06  17.32  17.5  19.56  26.04  26.18
5    om  13.45  14.20  10.12  10.0  14.78   9.25   6.11
6   omL   3.49   2.56   5.00   2.5   2.71   2.82   1.11
7    pp  33.91  36.39  24.96  26.0  22.71  24.34  19.47

期望的输出: 在此处输入图像描述

有什么想法吗?

标签: pythonpandasdataframeclassificationdata-analysis

解决方案


推荐阅读