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