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

How to use gradient descent on data that has string values?

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

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

link 是付费专区,但它的标题提到了单词 'categorical',所以我假设 'numerical' 是指整数标签,而不是解析表示的字符串一个数字到它的等效浮点数。

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

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

真的就是这么简单。如果你真的希望这是一个单一的'variable',你可以将它收集到一个结构中:

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

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

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

字符串数据有两种可能

  1. 只要一两个词,test的值不会改变(即对于一列,它会采用文本的固定值),那么你可以使用Labels。那会解决你的问题。
  2. 如果你有可以取任意值的列并且长度也不固定,你可以先做TF-IDF,然后基于它训练你的模型。