美文网首页
[sklearn]One-Hot转换

[sklearn]One-Hot转换

作者: Silver_42ac | 来源:发表于2021-03-08 10:59 被阅读0次

    在机器学习中,对于分类变量要进行

    from sklearn.preprocessing import OneHotEncoder
    
    def df2onehot_narray(input_matrix):
        in_df = input_matrix
        var_2 = {}
        var_1 = {}
        var_0 = {}
        #Label_values= [0,1,2] #t_df.columns
        
        #columns_len = len(list(t_df.columns))#list(t_df.columns)  #columns 列的名字;可以换 range(columns_len)
        for col in list(t_df.columns):
            var_0[col] = 0
            var_1[col] = 1
            var_2[col] = 2
        var_0_df = pd.DataFrame(var_0,index=["var_0"])
        var_1_df = pd.DataFrame(var_1,index=["var_1"])
        var_2_df = pd.DataFrame(var_2,index=["var_2"])
        in_df = in_df .append(var_0_df)
        in_df = in_df .append(var_1_df)
        in_df = in_df .append(var_2_df)
    
        values = np.unique(in_df .values)#values#输出为多维的 (numpy array ,narray) #从df中获得所有唯一的标签(值)
        # values 内部可以重复,但是必须是1维度的(1D);np.unique()可以做到转为1维度
        # integer encode
        label_encoder = LabelEncoder() #导入类对象(类似导入针对特定数据的流程,包含多步骤函数和获得属性变量,就是常说的类class 写法)
        integer_encoded = label_encoder.fit_transform(values)
        onehot_encoder = OneHotEncoder(sparse=False) 
        #初始化OneHotEncoder实例时,默认sparse参数为True,编码后返回的是一个稀疏矩阵的对象,如果要使用一般要调用toarray()方法转化成array对象。若将sparse参数设置为False,则直接生成array对象,可直接使用
        
        # binary encode
        integer_encoded = integer_encoded.reshape(len(values),1)
        onehot_np_array = onehot_encoder.fit_transform(in_df)
        return onehot_np_array[0:-3]  #返回值去掉最后3个自己添加的内容,这三个样品 特征,是为了保证所有样品特征都有这三个标签,方便转换;以及和训练集合的对应
    

    参考:
    l利用sklearn进行One-Hot转换
    sklearn中OneHotEncoder使用注意事项——sparse参数
    Pandas:DataFrame数据的更改、插入新增的列和行
    np.unique( )的用法

    相关文章

      网友评论

          本文标题:[sklearn]One-Hot转换

          本文链接:https://www.haomeiwen.com/subject/vyxpqltx.html