gpt4 book ai didi

python - 将 CountVectorizer 中的稀疏矩阵添加到数据框中,并提供分类器的免费信息 - 保持稀疏格式

转载 作者:太空狗 更新时间:2023-10-30 00:43:03 26 4
gpt4 key购买 nike

我有以下问题。现在我正在构建一个分类器系统,它将使用文本和一些额外的免费信息作为输入。我将免费信息存储在 pandas DataFrame 中。我使用 CountVectorizer 转换文本并获得稀疏矩阵。现在,为了训练分类器,我需要将两个输入都放在同一个数据框中。问题是,当我将数据帧与 CountVectorizer 的输出合并时,我得到了一个密集矩阵,这意味着我很快就用完了内存。有什么方法可以避免它并在不获得密集矩阵的情况下将这 2 个输入正确合并到单个数据帧中吗?

示例代码:

import pandas as pd
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.feature_extraction.text import CountVectorizer
from sklearn import preprocessing
from sklearn.model_selection import train_test_split

#how many most popular words we consider
n_features = 5000

df = pd.DataFrame.from_csv('DataWithSentimentAndTopics.csv',index_col=None)

#vecotrizing text
tf_vectorizer = CountVectorizer(max_df=0.5, min_df=2,
max_features=n_features,
stop_words='english')

#getting the TF matrix
tf = tf_vectorizer.fit_transform(df['reviewText'])

df = pd.concat([df.drop(['reviewText', 'Summary'], axis=1), pd.DataFrame(tf.A)], axis=1)

#binning target variable into 4 bins.
df['helpful'] = pd.cut(df['helpful'],[-1,0,10,50,100000], labels = [0,1,2,3])


#creating X and Y variables
train = df.drop(['helpful'], axis=1)
Y = df['helpful']

#splitting into train and test
X_train, X_test, y_train, y_test = train_test_split(train, Y, test_size=0.1)


#creating GBR
gbc = GradientBoostingClassifier(max_depth = 7, n_estimators=1500, min_samples_leaf=10)

print('Training GBC')
print(datetime.datetime.now())
#fit classifier, look for best
gbc.fit(X_train, y_train)

如您所见,我将 CountVectorizer 设置为包含 5000 个单词。我的原始数据框中只有 50000 行,但我已经得到了一个包含 50000x5000 个单元格的矩阵,即 25 亿个单元。它已经需要大量内存。

最佳答案

您不需要使用数据框。

将数值特征从数据帧转换为 numpy 数组:

num_feats = df[[cols]].values

from scipy import sparse

training_data = sparse.hstack((count_vectorizer_features, num_feats))

然后您可以使用支持稀疏数据的 scikit-learn 算法。

对于GBM,可以使用支持稀疏的xgboost

关于python - 将 CountVectorizer 中的稀疏矩阵添加到数据框中,并提供分类器的免费信息 - 保持稀疏格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43577590/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com