如何修复Python中的“OverSampling”错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何修复Python中的“OverSampling”错误相关的知识,希望对你有一定的参考价值。

我正在尝试构建一个多类别的多标签模型,根据情节对电影类型进行分类。有24种不同的电影类型,这是按流派的电影数量:

    genre   number_of_movies

    Drama       3965
    Comedy      3046
    Thriller    2024
    Romance     1892
    Crime       1447
    Action      1303
    Adventure   1024
    Horror      954
    Mystery     759
    Sci-Fi      723
    Fantasy     707
    Family      682
    Documentary 419
    Biography   373
    War         348
    Music       341
    History     273
    Musical     271
    Sport       261
    Animation   260
    Western     237
    Film-Noir   168
    Short       92
    News        7

我正在使用CountVectorizer()创建功能,如下所述:

vect = CountVectorizer(max_features=4412, stop_words='english', ngram_range=(1, 3), binary=True)
X = vect.fit_transform(df['plot'])
X.shape

输出:

(7895, 4412)

和MultiLabelBinarizer()用于创建y_genres:

le = MultiLabelBinarizer()
y_genres = le.fit_transform(dataTraining['genres'])
y_genres.shape

输出:

(7895, 24)

目标是使用来自imblearn.over_sampling的RandomOverSampler和SMOTE重新采样除大多数类之外的所有类。不过,使用时:

  • RandomOverSampler:它删除了2个类,从24到22。
ros = RandomOverSampler(random_state=42)
    X_resampled, Y_resampled = ros.fit_sample(X, y_genres)

Y_resampled.shape

输出:

(52690, 22)
  • SMOTE:显示以下错误
sm = SMOTE(random_state=42)
    X_resampled, Y_resampled = sm.fit_sample(X, y_genres)

错误:

Expected n_neighbors <= n_samples,  but n_samples = 2, n_neighbors = 6

我该怎么做才能解决之前描述的2个问题?

答案

sm.fit_resample可能是救援。

以上是关于如何修复Python中的“OverSampling”错误的主要内容,如果未能解决你的问题,请参考以下文章

欠采样(undersampling)和过采样(oversampling)的作用

如何修复python2.7中的“AttributeError:'module'对象没有属性'storage'”错误

如何在 Windows 10 上修复 Python 3 中的 notify2 'dbus' 错误

如何在 Ubuntu 上修复 Dataframe Python 中的 Traceback 问题

(Python)如何修复数据框列值中的数值表示错误

如何修复 Python(Django Rest 框架模板)中的 UnicodeDecodeError?