gpt4 book ai didi

python - 向量化 Pandas 列

转载 作者:太空宇宙 更新时间:2023-11-04 04:23:26 26 4
gpt4 key购买 nike

我正在处理一个包含文本描述列的 Pandas 数据框。此列需要转换为可与支持向量机一起使用的内容,特别是 sklearn SVC。所以我想获取每个描述并将其替换为数字数据,为此我使用了 TfidfVectorizer。

vectorizer = TfidfVectorizer()
df['description'] = vectorizer.fit_transform(df['description'])

这导致记录如下所示:

0         (0, 12)\t0.30879049244590173\n  (0, 333)\t0....

返回的内容很接近,但仍不能用于 SVM。我怀疑我误解了 sklearn 如何处理 Pandas

最佳答案

两件事:

  1. vectorizer.fit_transform() 的输出是一个二维数组。在 DataFrame 的单列中存储二维数组并不好,会导致问题。

  2. vectorizer.fit_transform() 的输出是一个稀疏 二维数组,以节省内存。由于词汇量很大,而且大多数文档只包含整个词汇表中的一些单词,因此实际输出数组包含大量零值元素。稀疏矩阵是处理这些问题的一种方式。

    pandas 通常不能很好地处理稀疏数组。它认为这是一个单一的对象。所以当你这样做时:

    df['description'] = vectorizer.fit_transform(df['description'])

    会将单个对象(我们的稀疏矩阵)广播到指定列的每个位置(行)。所以这是不正确的。

如果您可以使用稀疏矩阵,那么您应该像@AI_Learning 提到的那样进行进一步处理。

如果您绝对需要将 tf-idf 值存储到 DataFrame 中以用于显示或保存目的,正确的方法是创建一个新的 DataFrame:

sparse_out = vectorizer.fit_transform(df['description'])
tfidf_df = pd.DataFrame(data = sparse_out.toarray(),
columns = vectorizer.get_feature_names())

tfidf_df.head()

关于python - 向量化 Pandas 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53996794/

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