100 個のトレーニング ファイルを読み取り、sklean を使用してそれらをベクトル化しようとしています。これらのファイルの内容は、システム コールを表す単語です。ベクトル化したら、ベクトルを印刷したいと思います。私の最初の試みは次のとおりです。
import re
import os
import sys
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
import numpy as np
import numpy.linalg as LA
trainingdataDir = 'C:\data\Training data'
def readfile():
for file in os.listdir(trainingdataDir):
trainingfiles = os.path.join(trainingdataDir, file)
if os.path.isfile(trainingfiles):
data = open(trainingfiles, "rb").read()
return data
train_set = [readfile()]
vectorizer = CountVectorizer()
transformer = TfidfTransformer()
trainVectorizerArray = vectorizer.fit_transform(train_set).toarray()
print 'Fit Vectorizer to train set', trainVectorizerArray
ただし、これは最後のファイルのベクトルのみを返します。print 関数は for ループに配置する必要があると結論付けました。したがって、2回目の試み:
def readfile():
for file in os.listdir(trainingdataDir):
trainingfiles = os.path.join(trainingdataDir, file)
if os.path.isfile(trainingfiles):
data = open(trainingfiles, "rb").read()
trainVectorizerArray = vectorizer.fit_transform(data).toarray()
print 'Fit Vectorizer to train set', trainVectorizerArray
ただし、これは何も返しません。これについて私を助けてもらえますか?ベクトルが印刷されているのを確認できないのはなぜですか?