时间序列分类06:numpy unique() 方法实现将分类标签转化为数字编码(非one-hot)

在处理原始数据过程中,可以将标签列按照顺序对应的方式,保存为单个文件,方便处理。

使用 numpy unique() 方法,实现按找原序列的顺序将真实标签转换为数字编码。代码如下:

def trans_dummy_label(data):
    '''
    函数功能:
    实现将真实标签转换为0,1,2,3;便于绘图显示;
    ------------------------------------------
    参数说明:
    data:DataFrame格式数据
    '''
    y = pd.DataFrame(data[data.columns[-1]].values, columns=['label'])
    map_dict = {} # 键值对对应关系字典
    '''
    np.unique()方法说明:
    返回列表数据中的唯一元素列表;return_index=True参数保留元素顺序,按照第一出现的索引大小排序;
    np.sort(index)方法实现索引。
    '''
    _, index = np.unique(y['label'].values, return_index=True) # 返回标签唯一索引列表
    for key, value in enumerate(y['label'][np.sort(index)], start=0): # data.columns[-1]标签列
        map_dict[value] = key
    
    y['label'] = y.label.map(map_dict) # 映射
    
    return y, map_dict

调用:

trainy, map_dict_train = trans_dummy_label(trainX)

查看结果:
在这里插入图片描述
保存为txt文件:

trainy.to_csv('trainy_diffp.txt', index=False, header=False)

查看结果:
在这里插入图片描述


数据量比较大的时候,建议使用pandas中的unique()方法。

保存的映射字典,在预测的时候或者最终可视化输出结果的时候,可以使用pandas的map方法将数字标签映射为真实标签。

发布了167 篇原创文章 · 获赞 686 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_39653948/article/details/105516373