Python 多类分类:一行中多列的SMOTE过采样
我有一个不平衡的数据集,包含在一个名为city_country的数据框中,该数据框由5列组成:Python 多类分类:一行中多列的SMOTE过采样,python,text-classification,oversampling,Python,Text Classification,Oversampling,我有一个不平衡的数据集,包含在一个名为city_country的数据框中,该数据框由5列组成: 推特内容=预处理 事件类型(例如,tweet涉及地震=‘地震’、台风=‘台风’等)=事件类型 发送推文的纬度=lat 发送推文的经度=long 事件标签(例如,tweet与地震=1、台风=2等相关)=事件id 在名为city\u country的数据框架中,类(事件id)是不平衡的。在测试不同文本分类器的预测能力之前,为了从tweet(预处理)的内容预测事件id,我想对少数类进行过采样 重要的是,当我
有没有一种方法可以让我简单地将我的数据框拆分为训练集和测试集,然后对少数类的所有5列进行过采样,这样输出的数据框就更大了,包含了所有5列?然后我可以用它来预测事件id,并希望执行与vlookup等价的操作,这样我就可以加入推特了ive lat和long值。在IMBREARN中进行SMOTE。过采样可以接受稀疏向量作为输入。您可以进行过采样,然后拆分为测试/训练集 如果我对你的问题理解正确,以下几点对我来说很有用 尝试以下方法:
from sklearn.feature_extraction.text import Tfidfvectorizer
from imblearn.over_sampling import SMOTE
strings = city_country.preprocessed
def create_vec(strings):
tf = TfidfVectorizer(analyzer = 'char_wb',ngram_range=(2,3))
tf.fit(strings)
X = tf.transform(strings)
return X
vecs = create_vec(strings)
y = city_country.event_id
sm = SMOTE(random_state=42)
X_res, y_res = sm.fit_resample(X, y)
然后可以根据输出进行拆分
from sklearn.feature_extraction.text import Tfidfvectorizer
from imblearn.over_sampling import SMOTE
strings = city_country.preprocessed
def create_vec(strings):
tf = TfidfVectorizer(analyzer = 'char_wb',ngram_range=(2,3))
tf.fit(strings)
X = tf.transform(strings)
return X
vecs = create_vec(strings)
y = city_country.event_id
sm = SMOTE(random_state=42)
X_res, y_res = sm.fit_resample(X, y)