根据最后两列分离数据集
Separate dataset according last two column
我正在尝试根据最后两列分隔我的数据集。
在第 3 列中,数据频率为 1、2、3、4。我想将第 3 列中每个值的数据分别为 0 和 1。例如:
第 3 列中的 1 和第 4 列中的 0 和 1
{0: [[1, 20, 1, 0],[5, 20, 1, 0]]
1: [[8, 21, 1, 1]]}
第 3 列中的 2 和第 4 列中的 0 和 1
{0: [[2, 21, 2, 0],[3, 22, 2, 0],
1: []}
第 3 列中的 3 和第 4 列中的 0 和 1
{0: [[6, 23, 3, 0]]
1: [[4, 23, 3, 1]]}
第 3 列中的 4 和第 4 列中的 0 和 1
{0: [[8, 22, 4, 0]]
1: [[7, 24, 4, 1]]}
这是我的 Jupyter 代码
def separate_by_class(dataset):
separated = {}
for j in range(4+1):
for i in range(len(dataset)):
row = dataset[i]
if row[-1]==j:
if row[-1] not in separated:
separated[row[-1]] = []
separated[row[-1]].append(row)
return separated
dataset = [[1, 20, 1, 0],
[2, 21, 2, 0],
[3, 22, 2, 0],
[4, 23, 3, 1],
[5, 20, 1, 0],
[6, 23, 3, 0],
[7, 24, 4, 1],
[8, 22, 4, 0],
[9, 21, 1, 1]
]
separated =separate_by_class(dataset)
separated
感谢您的帮助。
您没有提到所需的输出格式是什么,但据我了解,您希望将它们分成 dictnoaries。您可以尝试以下方法
def separate_by_class(dataset):
separated = {}
for ar in dataset:
if ar[2] not in separated:
separated[ar[2]] = {}
if ar[3] not in separated[ar[2]]:
separated[ar[2]][ar[3]] = []
separated[ar[2]][ar[3]].append(ar)
return separated
separate_by_class(dataset)
您的数据集的函数输出为
{
1: {0: [[1, 20, 1, 0], [5, 20, 1, 0]], 1: [[9, 21, 1, 1]]},
2: {0: [[2, 21, 2, 0], [3, 22, 2, 0]]},
3: {0: [[6, 23, 3, 0]], 1: [[4, 23, 3, 1]]},
4: {0: [[8, 22, 4, 0]], 1: [[7, 24, 4, 1]]}
}
我正在尝试根据最后两列分隔我的数据集。 在第 3 列中,数据频率为 1、2、3、4。我想将第 3 列中每个值的数据分别为 0 和 1。例如:
第 3 列中的 1 和第 4 列中的 0 和 1 {0: [[1, 20, 1, 0],[5, 20, 1, 0]] 1: [[8, 21, 1, 1]]}
第 3 列中的 2 和第 4 列中的 0 和 1 {0: [[2, 21, 2, 0],[3, 22, 2, 0], 1: []}
第 3 列中的 3 和第 4 列中的 0 和 1 {0: [[6, 23, 3, 0]] 1: [[4, 23, 3, 1]]}
第 3 列中的 4 和第 4 列中的 0 和 1 {0: [[8, 22, 4, 0]] 1: [[7, 24, 4, 1]]}
这是我的 Jupyter 代码
def separate_by_class(dataset):
separated = {}
for j in range(4+1):
for i in range(len(dataset)):
row = dataset[i]
if row[-1]==j:
if row[-1] not in separated:
separated[row[-1]] = []
separated[row[-1]].append(row)
return separated
dataset = [[1, 20, 1, 0],
[2, 21, 2, 0],
[3, 22, 2, 0],
[4, 23, 3, 1],
[5, 20, 1, 0],
[6, 23, 3, 0],
[7, 24, 4, 1],
[8, 22, 4, 0],
[9, 21, 1, 1]
]
separated =separate_by_class(dataset)
separated
感谢您的帮助。
您没有提到所需的输出格式是什么,但据我了解,您希望将它们分成 dictnoaries。您可以尝试以下方法
def separate_by_class(dataset):
separated = {}
for ar in dataset:
if ar[2] not in separated:
separated[ar[2]] = {}
if ar[3] not in separated[ar[2]]:
separated[ar[2]][ar[3]] = []
separated[ar[2]][ar[3]].append(ar)
return separated
separate_by_class(dataset)
您的数据集的函数输出为
{
1: {0: [[1, 20, 1, 0], [5, 20, 1, 0]], 1: [[9, 21, 1, 1]]},
2: {0: [[2, 21, 2, 0], [3, 22, 2, 0]]},
3: {0: [[6, 23, 3, 0]], 1: [[4, 23, 3, 1]]},
4: {0: [[8, 22, 4, 0]], 1: [[7, 24, 4, 1]]}
}