如何将可变长度的字符串转换为向量?

我在研究分类算法,并且获得了一些具有某种模式的不同字符串代码。

|:-----------|------------:|:------------:|| Column 1   | Column 2    | Column 3     ||:-----------|------------:|:------------:|| MN009      | JIK9PO      | LEFTu        || MN010      | JIK9POS     | LEFTu        || MN011      | JIK9POKI    | LEFTu        || MN012      | KIJU        | LEFTu        || MN013      | RANDOM      | LEFTu        || MN014      | FT          | LEFTu        ||:-----------|------------:|:------------:|

对于第1列和第3列,特征集可以是长度为5的向量。

但我不知道如何创建一个特征集来同时容纳第2列的数据。

考虑因素:

  1. 创建一个与最长字符串长度相同的特征向量,对于较短的字符串添加一些填充物。
  2. 将字符串截断到固定长度,例如这里的5,并忽略多余的字符。

希望我的问题已经表达清楚。谢谢 🙂


回答:

有两种解决方案:

  1. 你提到的方法;预定义一个长度,对于长度不足的序列进行零填充。这个长度可以设置为:

    • 当前存在的样本中最长的那个(更大的特征空间 ⇒ 时间/内存复杂度的影响),
    • 或者设置为一个较短的长度(信息损失 ⇒ 预测能力的损失)。信息损失来自于忽略超过该长度的序列,或者截断它们并使用其缩减版本。

      在这两种情况下,你可能应该量化你的选择的影响(即,我通过丢弃/截断数据丢失了多少信息,或者与使用较短长度相比,我的问题空间增大了多少)。

  2. 动态图,本质上是可变形状的网络,可以处理不同大小的序列。这种能力由PyTorch提供,并且(相对)容易实现(相关的Stack Overflow问题)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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