【问题标题】:Any method to do auto-multiclass?有什么方法可以做自动多类吗?
【发布时间】:2022-01-15 15:44:28
【问题描述】:

收集random label的目的是看2-3个cluster的区别,后面会做机器学习(random forest)。

所以问题是,我想将 label0 和 label1 连接到一个组,将 label2 和 label3 连接到另一个组。

然后,随机改变标签的顺序,比如 label0 和 label2,label1 和 label3,……等等。 我不知道如何自动完成。

预期的结果是这样的

有什么解决办法吗?谢谢

【问题讨论】:

    标签: python random


    【解决方案1】:

    我想我已经解决了你的问题:

    import pandas as pd
    import random
    
    data = {
        'col1': [0, 1, 2, 3, 4, 5, 6, 7],
        'col2': [7, 6, 5, 4, 3, 2, 1, 0],
        'label': ['0', '0', '1', '1', '2', '2', '3', '3']
    }
    df = pd.DataFrame(data=data)
    labels = list(df['label'].unique())
    
    num_iterations = 10
    for i in range(10):
        random.shuffle(labels)
        dfs = []
        for j in range(1, len(labels), 2):
            series = df[(df['label'] == labels[j-1]) | (df['label'] == labels[j])][['col1', 'col2']].agg('sum')
            new_label = labels[j-1] + ' ' + labels[j]
            new_df = series.to_frame().T.assign(label=new_label)
            dfs.append(new_df)
        shuffeled_df = pd.concat(dfs)
    

    所以我首先列出标签并对其进行洗牌。然后成对选择标签并计算总和。这对所有标签对(在本次迭代中)进行。 最后将创建一个新的组合 DataFrame。

    【讨论】:

    • 嗨!感谢您的帮助,我想它几乎就在那里。首先,我希望单独计算不是总和的值。 (我在下面进行了编辑以使预期的答案更清楚,并且我更改了您给出的示例。)其次,我想如果不是总和,这个过程可能会更容易。(很高兴听到!)
    • 也许只是重写series= 行(不确定)
    • 大家好,感谢您的代码,我只是稍微修改了您的代码。!首先,我删除.agg('sum')。然后,我起飞to_frame().T。它已经完成了!非常感谢!!!
    猜你喜欢
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    相关资源
    最近更新 更多