首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >训练数据与测试数据之间的OneHotEncoding映射问题

训练数据与测试数据之间的OneHotEncoding映射问题
EN

Stack Overflow用户
提问于 2017-04-03 03:32:15
回答 1查看 1.2K关注 0票数 1

我用sklearn方法转换了训练和测试数据集。然而,组织形式的结果有不同的类型。因此,它不可能应用于其他算法,如逻辑回归。

如何根据训练数据集的形状重塑测试数据?

最好的雷格丁,克里斯

代码语言:javascript
复制
import pandas as pd
import numpy as np
from sklearn.preprocessing import OneHotEncoder, LabelEncoder 

def data_transformation(data, dummy):  
    le = LabelEncoder()

    # Encoding the columns with multiple categorical levels
    for col1 in dummy:
        le.fit(data[col1])
        data[col1] = le.transform(data[col1])

    dummy_data = np.array(data[dummy])
    enc = OneHotEncoder()
    enc.fit(dummy_data)

    dummy_data = enc.transform(dummy_data).toarray() 

if __name__ == '__main__': 
    data = pd.read_csv('train.data', delimiter=',') 
    data_test = pd.read_csv('test.data', delimiter=',')

    dummy_columns = ['Column1', 'Column2'] 
    data = data_transformation(data, dummy_columns)
    data_test = data_transformation(data_test, dummy_columns)

# result 
# data shape : (200000, 71 ) 
# data_test shape : ( 15000, 32) 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-03 06:02:01

太感谢你了,维维克!由于你的帮助,我已经解决了这个问题。

代码语言:javascript
复制
def data_transformation2(data, data_test, dummy):
    le = LabelEncoder()

    # Encoding the columns with multiple categorical levels
    for col in dummy:
        le.fit(data[col])
        data[col] = le.transform(data[col])

    for col in dummy:
        le.fit(data_test[col])
        data_test[col] = le.transform(data_test[col])

    enc = OneHotEncoder()
    dummy_data = np.array(data[dummy])
    dummy_data_test = np.array(data_test[dummy])

    enc.fit(dummy_data)

    dummy_data = enc.transform(dummy_data).toarray()
    dummy_data_test = enc.transform(dummy_data_test).toarray()

    print(dummy_data.shape)
    print(dummy_data_test.shape)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43176112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档