【问题标题】:how to add a column and save in a text file sparse matrix?如何添加列并保存在文本文件稀疏矩阵中?
【发布时间】:2016-03-09 01:35:29
【问题描述】:

TfidfVectorizer 在输出时返回稀疏矩阵,可以很容易地将其转换为 SparseDataFrame(不是常规的)。但我不知道如何向其中添加列并保存在 csv 文件中。

import pandas as pd
import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer

def get_features(data, train=False):
    tfv = TfidfVectorizer()
    if train:
        features = tfv.fit_transform(data["text"])
    else:
        features = tfv.transform(data["text"])

    features_pd = pd.SparseDataFrame([ pd.SparseSeries(features[i].toarray().ravel())
                                 for i in np.arange(features.shape[0]) ], columns = tfv.get_feature_names() )
# the next 2 lines in replacement of the previous result in empty (commas only) output  
#    features_pd = pd.DataFrame([ pd.Series(features[i].toarray().ravel())
#                                 for i in np.arange(features.shape[0]) ], columns = tfv.get_feature_names() )
# the next line results in TypeError: ufunc 'isnan' not supported for the input types ...   
   # features_pd['_class_'] = pd.SparseSeries(data["class"])

    print "F:",features_pd.iloc[[0]]
    return features_pd

if __name__ == '__main__':

    train = pd.read_csv('train.csv', header=None, names = ["class", "text"]).fillna("")
    features = get_features(train, train=True)
    features.to_csv('out.csv', index=False)

【问题讨论】:

    标签: python pandas scikit-learn


    【解决方案1】:

    可以将稀疏矩阵转换为数组,然后可以使用常规数据框执行所有操作 要进行的更改的核心:features.toarray()

    features_pd = pd.DataFrame(data=features.toarray(),
                               columns = tfv.get_feature_names() )
    
    features_pd['_class_'] = pd.Series(data["class"], index = features_pd.index)
    

    【讨论】:

      猜你喜欢
      • 2012-09-05
      • 2017-12-16
      • 2018-08-07
      • 1970-01-01
      • 1970-01-01
      • 2017-06-15
      • 2014-08-25
      • 2021-11-18
      • 1970-01-01
      相关资源
      最近更新 更多