如何对具有字符串值的数据使用梯度下降?

问题描述

我想解决预测房价问题 (https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data)

如何在 Octave 中将字符串数据转换为数值数据?

解决方法

该链接是收费的,但它的标题提到了“分类”这个词,所以我假设“数字”是指整数标签,而不是将表示数字的字符串解析为它的等效浮点数。

考虑到这一点,下面是一种典型的表示方式。

Indices = [ 1,2,3,1,1 ];
Labels  = { 'class1','class2','class3' };

其实就是这么简单。如果你真的希望这是一个单一的“变量”,你可以将它收集到一个结构中:

MyCategoricalVariable = struct( 'indices',Indices,'labels',Labels );

显然,这首先取决于数据是如何提供给您的。如果给定的是字符串而不是标签,则可以将其转换为索引/标签对,如下所示:

Data = { 'a','b','c','a','b' };
Labels = unique( Data );
[~,Indices] = ismember( Data,Labels )
,

字符串数据有两种可能

  1. 只需一两个词,test 的值不会改变(即对于一列,它将采用文本的固定值),然后您可以使用标签。这将解决您的问题。
  2. 如果您有可以取任何值且长度不固定的列,您可以先进行 TF-IDF 并基于它来训练您的模型。