如何为泰坦尼克号数据集创建反向传播算法

我想为泰坦尼克号数据集(Kaggle竞赛)创建反向传播算法。

这很容易做到,但我有一个问题。反向传播算法是关于数字的。但泰坦尼克号数据集中有字符串类型。例如,

Kaggle的泰坦尼克号

我们有“Sex”列(男性或女性),还有“Embarked”列(S、C或Q)。我不会使用“Name”和“Ticket”列。我不知道如何处理“Sex”和“Embarked”列。如何将这些数据用于反向传播算法?

我的解决方案想法我想可以用数字int=1表示男性,用数字int=2表示女性。同样,我可以用数字1表示S,2表示C,3表示Q。

你觉得我的想法怎么样?我如何为泰坦尼克号数据集创建反向传播算法?(也许我的想法不是很好)。


回答:

我的解决方案想法我想可以用数字int=1表示男性,用数字int=2表示女性。同样,我可以用数字1表示S,2表示C,3表示Q。

几乎是正确的。对于只有两个值的特征,使用0和1编码是可以的。然而,如果你有超过两个可能值的分类特征,你永远不应该将它们编码为单一数字。这种编码只能用于有序特征,意思是,尽管它们“不是数字”,但它们是有顺序的。例如,如果你有“小、中、大”,你可以将它们编码为1、2、3,但如果你的值完全无法排序,你应该使用独热编码,这意味着具有K个可能值的东西在你的表示中变成K位,你只需在一个给定位置放置1(导致(红色、蓝色、绿色)被编码为[1 0 0]、[0 1 0]、[0 0 1])。

如果你不遵循这条规则会发生什么?假设你的特征是一个名字,你有四个可能性“James、Mark、Eve、Kate”,你将它们编码为1、2、3、4。那么,如果你的模型学到James和Eve得分高,而Kate得分低,它会(或者至少有相当大的概率会)推断Mark的得分也高,因为从模型的角度来看,没有名字,只有任意特征,有人值为1是好的,值为3是好的,值为4是坏的,所以假设“2”也是好的,这是一个合理的推理。请注意,这只是编码的结果,如果你只是以不同的顺序排列名字 – 你会得到不同的结果。使用独热编码就不会发生这种情况。

这通常是在机器学习中所做的,如果你想使用仅在R^d空间上定义的方法。当然,如果你对特征了解更多,有时可以想出更好的编码方式,例如颜色可以分解为它们的RGB表示,因此你可以直接编码红色、橙色和黄色之间的相似性。一般来说 – 独热编码是最安全的方法,任何其他方法都会引入一些假设,这些假设可能会误导你的模型(如果它们是错误的)。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注