Передискретизация для классификации текста в python? - PullRequest
0 голосов
/ 30 мая 2020

У меня есть фрейм текстовых данных, который я хочу классифицировать. Но сначала мне нужно сделать передискретизацию. Ниже приведены примеры данных:

df=[['I am going to class today','I am going to class today','I am going to class today','I am going to class today','I am going to class today','I am going to class today','I am going to class today','I am going to class today','I am going to class today','I am going to class today','I am not going to class today','I am not going to class today','I am not going to class today','I am not going to class today'],['Positive','Positive','Positive','Positive','Positive','Positive','Positive','Positive','Positive','Positive','Negative','Negative','Negative','Negative']]
df=pd.DataFrame(df)
df=df.transpose()
df.columns=['Features','Class']
df
          Features                       Class
0   I am going to class today       Positive
1   I am going to class today       Positive
2   I am going to class today       Positive
3   I am going to class today       Positive
4   I am going to class today       Positive
5   I am going to class today       Positive
6   I am going to class today       Positive
7   I am going to class today       Positive
8   I am going to class today       Positive
9   I am going to class today       Positive
10  I am not going to class today   Negative
11  I am not going to class today   Negative
12  I am not going to class today   Negative
13  I am not going to class today   Negative

oversample = RandomOverSampler(sampling_strategy='minority')
# fit and apply the transform
X_over, y_over = oversample.fit_resample(df['Features'], df['Class'])
# summarize class distribution
print(Counter(y_over))

Но это не работает и дает мне ValueError: Expected 2D array, got 1D array instead:. Как я могу передискретизировать эти данные?

1 Ответ

0 голосов
/ 30 мая 2020

Я нашел проблему. Мне нужно было изменить форму моих данных.

X_over, y_over = oversample.fit_resample(df['Features'].values.reshape(-1,1), df['Class'])

Теперь это работает.

Counter({'Positive': 10, 'Negative': 10})
...