调整TF-IDF /逻辑回归情感分析的功能数量

时间:2020-07-14 15:29:55

标签: python scikit-learn nlp

我正在对Twitter数据集进行情感分析项目。我使用TF-IDF特征提取和逻辑回归模型进行分类。到目前为止,我已经使用以下方法训练了模型:

def get_tfidf_features(train_fit, ngrams=(1,1)):
    vector = TfidfVectorizer(ngrams, sublinear_tf=True)
    vector.fit(train_fit)
    return vector

X = tf_vector.transform(traintest['text'])

y = traintest['sentiment']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.01, random_state = 42)

LR_model = LogisticRegression(solver='lbfgs')
LR_model.fit(X_train, y_train)
y_predict_lr = LR_model.predict(X_test)

此逻辑回归模型在约150万条推文的数据集上进行了训练。我尝试使用df_april上的情绪分析模型,大约有170万条推文。第一次尝试时,我提取的功能如下:

tfidf = TfidfVectorizer(ngram_range = unigrams, max_features = None, sublinear_tf = True)
X_april = tfidf.fit_transform(df_april['text'].values.astype('U'))

我的第一个想法是只在X_april上调用预测,但这给了我一个错误:

y_predict_april = LR_model.predict(X_april)

ValueError: X has 208976 features per sample; expecting 271794

这对我来说很有意义:这些特征向量的形状不同:

X.shape
(1578614, 271794)

X_april.shape
(1705758, 208976)

所以我知道我需要以某种方式调整功能数量以在XX_april之间进行匹配,以调用X_april上的预测。我这样做的尝试是:

x = pd.DataFrame.sparse.from_spmatrix(X)
x_april = pd.DataFrame.sparse.from_spmatrix(X_april)

not_existing_cols = [c for c in x.columns.tolist() if c not in x_april]
x_april = x_april.reindex(x_april.columns.tolist() + not_existing_cols, axis=1)
x_april = x_april[x.columns.tolist()]

我正在使用Jupyter笔记本,每次尝试时,此代码都会导致内核死机。如何调整功能,以便调用逻辑回归模型?

0 个答案:

没有答案