python - 如何在Python中迭代列表列表时标记编码

标签 python dataframe machine-learning

这就是我所做的,但它不会改变列表(数据集)列表中的内容,尽管能够打印出带有为其编码的数字的标签。

dataset = [[32.3,33.5,34.2,35.3,35.3,35.7,"Light1on"],
         [52.3,52.5,53.2,54.8,55.3,55.3,"Light2on"],
         [100.3,110.2,112.3,132.5,142.3,153.5,"Fan1on"],
         [153.5,142.3,132.5,112.3,110.2,0,"Fan1off"],
         [33.2,34.5,34.6,35.3,35.3,35.8,"Light1on"],
         [33.2,35.2,35.4,36.0,36.2,42.3,"Light3on"]]

plabel = []
#dataset.to_csv('table.csv', index = None, header=True)
for row in dataset:
    print(row[6],'3')
    label = row[6]
    plabel.append(label)
    le = preprocessing.LabelEncoder()
    le.fit(plabel)
    label = le.transform(plabel)
    print(label)

    for column in row:
        print(column)

我希望它能够进行标签编码,这样我就可以将其用于我的 K 最近邻模型。

结果:

dataset = [[32.3,33.5,34.2,35.3,35.3,35.7,"Light1on"],
         [52.3,52.5,53.2,54.8,55.3,55.3,"Light2on"],
         [100.3,110.2,112.3,132.5,142.3,153.5,"Fan1on"],
         [153.5,142.3,132.5,112.3,110.2,0,"Fan1off"],
         [33.2,34.5,34.6,35.3,35.3,35.8,"Light1on"],
         [33.2,35.2,35.4,36.0,36.2,42.3,"Light3on"]]

期望的结果:

dataset = [[32.3,33.5,34.2,35.3,35.3,35.7,0],
         [52.3,52.5,53.2,54.8,55.3,55.3,1],
         [100.3,110.2,112.3,132.5,142.3,153.5,2],
         [153.5,142.3,132.5,112.3,110.2,0,3],
         [33.2,34.5,34.6,35.3,35.3,35.8,0],
         [33.2,35.2,35.4,36.0,36.2,42.3,4]]

最佳答案

您可以使用列表理解

# get all sixth elements
plabel = [x[6] for x in dataset]
le.fit(plabel)
plabel = le.transform(plabel)
# replace sixth elements from each list inside 'dataset' with encoded label
dataset_encoded = [[plabel[i] if indx==6 else elem for indx, elem in enumerate(x)] for i,x in enumerate(dataset)]
>>> dataset_encoded

[[32.3, 33.5, 34.2, 35.3, 35.3, 35.7, 2],
 [52.3, 52.5, 53.2, 54.8, 55.3, 55.3, 3],
 [100.3, 110.2, 112.3, 132.5, 142.3, 153.5, 1],
 [153.5, 142.3, 132.5, 112.3, 110.2, 0, 0],
 [33.2, 34.5, 34.6, 35.3, 35.3, 35.8, 2],
 [33.2, 35.2, 35.4, 36.0, 36.2, 42.3, 4]]

关于python - 如何在Python中迭代列表列表时标记编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59351829/

相关文章:

python - 如何修复("ValueError: You are trying to load a weight file containing 16 layers into a model with 0 layers")

python - Pandas 使用单元格值作为字典键返回字典值

python - Pandas 数据框左合并而不重新索引

python - 如何使用 scipy.spatial.distance.cosine 计算加权相似度?

python - 在特定行Python之后添加一些内容

pandas - 按日期迭代 Pandas 数据框的正确方法

python - 使用多维特征(输入维度误差)使用 scikit-learn KNN 进行分类

python - 是否可以创建一个 Python 列表并伪造它?

Python xlrd 异常 : Unknown cell type 'n+'

python - 获取按列年份分组的索引值集