美文网首页机器学习
如何保证训练数据和测试数据具有相同的one-hot encodi

如何保证训练数据和测试数据具有相同的one-hot encodi

作者: 泡泡_e661 | 来源:发表于2018-11-14 03:47 被阅读0次

在机器学习中,如果数据包含Categorical类型的数据,我们知道一种有效的处理方法就是使用One-Hot Encoding。Pandas提供get_dummies方法可以快速将categorical的数据转化为one-hot encoding的形式。

同时Scikit-learn library对于数据中包含列的顺序是敏感的,如果训练数据和测试数据包含的列的顺序是不同的,如下面的两个图所示。

 训练数据one-hot encoding之后:

测试数据one-hot encoding之后:

此时使用训练数据训练好的模型,预测或者分类测试数据,这将是没有意义的。

所以出现了新的问题,如果训练数据和测试数据是两个分开的文档,例如train.csv 和test.csv文档。如何在one-hot encoding之后,使训练数据和测试数据具有相同的列顺序?

另一个问题是,如果训练数据和测试数据的某一个categorcal列的值不一样时,如何保证one-hot encoding之后,训练数据和测试数据具有相同的列? 例如:在训练数据中名为 "Car" 的列的值有“Honda, Toyota, Ford" 但是在测试数据中名为 "Car" 的列的值有”Honda, Toyota, Ford, BMW“

我们可以使用align command解决上述的两个问题。从而保证测试数据和训练数据具有相同的编码行为(encoding manner)

举个列子说明align如何使用:

首先从csv文档中读取训练数据和测试数据

train_df = pd.read_csv("train.csv")

test_df = pd.read_csv("test.csv")

然后使用get_dummies方法将训练数据和测试数据转化为one-hot encoding的形式

one_hot_train = pd.get_dummies(train_df)

one_hot_test = pd.get_dummies(test_df )

最后使用align方法处理训练和测试数据

train, test=one_hot_train .align(one_hot_test ,join='left',axis=1)

其中join='left' 和SQL中的left join实现形同的功能,意思是如果训练数据和测试数据中的列的个数不同时,只保留所有在训练数据中的列。当然也可以用join='inner',意思是保留同时存在于训练数据和测试数据中的列。

如果喜欢,就给个赞👍吧! 谢谢!!!

相关文章

  • 如何保证训练数据和测试数据具有相同的one-hot encodi

    在机器学习中,如果数据包含Categorical类型的数据,我们知道一种有效的处理方法就是使用One-Hot En...

  • Day and Night Image data Standar

    import resource 训练/测试数据 可视化数据 预处理数据 输入 输入数据应该相同尺寸,相同形式。这里...

  • Batch Normalization

    机器学习领域有个很重要的假设:IID独立同分布假设,就是假设训练数据和测试数据是满足相同分布的,这是通过训练数据获...

  • 线性回归

    数据集分为训练数据和测试数据,训练数据用来训练模型参数,测试数据用来检验该模型的准确程度。 损失函数预测值与真实值...

  • 神经网络的训练

    数据驱动 提取特征量 训练数据和测试数据 使用训练数据进行学习,寻找最优的参数 使用测试数据评价模型的实际能力 仅...

  • 随机划分数据集(matlab)

    将训练数据按一定比例划分成训练数据和测试数据。

  • 2.封装kNN算法之数据分割

    训练数据集与测试数据集 当我们拿到一组数据之后,通常我们需要把数据分割成两部分,即训练数据集和测试数据集。训练数据...

  • 深度学习Batch Normalization作用与原理

    机器学习领域有个重要假设:IID独立同分布假设 假设训练数据和测试数据是满足相同分布 独立同分布假设是通过训练集得...

  • Batch Normlization

    一、引言 机器学习领域有个很重要的假设:IID 独立同分布假设,就是假设训练数据和测试数据是满足相同分布的,这是通...

  • 训练和测试数据的观察

    训练和测试数据集的分布 在开始竞赛之前,我们要检查测试数据集的分布与训练数据集的分布,如果可能的话,看看它们之间有...

网友评论

    本文标题:如何保证训练数据和测试数据具有相同的one-hot encodi

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