【问题标题】:Upsampling tweets using SMOTE使用 SMOTE 对推文进行上采样
【发布时间】:2020-03-08 09:47:31
【问题描述】:

我有一个不平衡的推文数据集,标记为 -1、0、+1。 我想通过上采样来平衡数字。我收到以下错误:

tweet_train=tweet_train.reshape(-1, 1)
X_train_upsample, y_train_upsample = SMOTE(random_state=42).fit_sample(tweet_train, y_train)

不能将字符串转换为浮动:“ازاینبهبعدهمینهسلبریتیهاییکهایدیولوژیهای#جمهوری_اسلامیروتبلیغمیکننخارجازمرزایرانهمحقندارنآسایشداشتهباشنومجبوربود#باشهمچناناداوفاداریبهاونایدیولوژیرودربیارن هر جا یه دوربین منتظره که #ریاکاری شون رو ثبت کنه '

为什么它应该尝试将字符串变成浮点数?

附言。在重塑之前,tweet_train 和 y_train 是 shape=(n,)

的 numpy 数组

【问题讨论】:

    标签: scikit-learn oversampling smote


    【解决方案1】:

    您需要首先对数据进行矢量化处理:例如,您可以用一个与词汇表中的单词数相同大小的向量来表示一条推文。这些值是文档中单词(= 列)的出现次数。

    【讨论】:

    • 这可行,但我认为这不是最正确的方法。我可能会导致过度拟合
    • SMOTE 需要实数值向量作为输入来生成新实例。我将词袋方法仅作为矢量化的一个例子。还有其他几种向量化文本的方法,例如段落向量嵌入。但是你不能提供字符串,因为 SMOTE 不知道如何处理它们(从你得到的错误看来,tweet_train 包含字符串。)。
    • 我明白你的意思。但我是说我们的 BOW 表示在过度采样后会发生变化。如果我们先创建 BOW 然后过采样,它就不会那么准确。有解决办法吗?
    • 我从未尝试将 SMOTE 应用于文本数据。也许最好只复制少数类的推文而不生成合成推文。
    猜你喜欢
    • 2019-05-09
    • 1970-01-01
    • 2018-12-24
    • 2021-09-21
    • 1970-01-01
    • 2019-08-30
    • 2010-12-27
    • 2022-10-03
    • 1970-01-01
    相关资源
    最近更新 更多