2016-12-27 12 views
0

こんにちは、私は次のように見えますlist_clusterと呼ばれるリストを持っている:tfidfマトリックスに次の機能を追加する方法は?

list_cluster=["hello,this","this is a test","the car is red",...] 

私は次のようにモデルを生成するためにTfidfVectorizerを使用しています:

from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer 
with open('vectorizerTFIDF.pickle', 'rb') as infile: 
    tdf = pickle.load(infile) 
tfidf2 = tdf.transform(list_cluster) 

その後、私はこれに新しい機能を追加したいと思います

dates=['010000000000', '001000000000', '001000000000', '000000000001', '001000000000', '000000000010',...] 

このリストはlist_clusterのと同じな長さを持っており、日付が12の位置を有する表し:行列と呼ばtfidf2次のように、私はリストを持っています例えばsおよび1年の対応する月でされている場所では、

「0100億」は、第1の特徴としてそれを使用するために2月、

を表し、私が試した:

import numpy as np 
dates=np.array(listMonth) 
dates=np.transpose(dates) 

numpyの配列を取得し、その後、私が試した私のベクトルと行列を連結するために、第1のマトリックスtfidf2

print("shape tfidf2: "+str(tfidf2.shape),"shape dates: "+str(dates.shape)) 

でそれを連結するために、それを転置する:

tfidf2=np.hstack((tfidf2,dates[:,None])) 

しかし、これが出力されます:

shape tfidf2: (11159, 1927) shape dates: (11159,) 
Traceback (most recent call last): 
    File "Main.py", line 230, in <module> 
    tfidf2=np.hstack((tfidf2,dates[:,None])) 
    File "/usr/local/lib/python3.5/dist-packages/numpy/core/shape_base.py", line 278, in hstack 
    return _nx.concatenate(arrs, 0) 
ValueError: all the input arrays must have same number of dimensions 

形状が良いようだが、私は失敗しているかわからないです、私は私のtfidf2行列にこの機能を連結するためのサポートをお願いしたいと思います、ありがとう

+0

「dtypes」とは何ですか? 'dates'が1dの場合、' transpose'は何もしません。しかし、 '[:、None]'は適切な2dの形を与えるべきです。 – hpaulj

+0

@hpaulj、サポートありがとう、はい日付は1dです、どのように1,11159の行列に変換してから私の行列に連結するのですか? – neo33

+0

'(11159,1)'は 'hstack'(軸= 1で連結)の正しい形です。だから私は 'dtypes'について、配列に関する問題が何か(エラーの内容にかかわらず)あるかどうかを調べることを求めています。 – hpaulj

答えて

1

すべての文字列をsklearnの数値に変換する必要があります。これを行う1つの方法は、sklearnの前処理モジュールでLabelBinarizerクラスを使用することです。これにより元の列の一意の値ごとに新しいバイナリ列が作成されます。

日付がtfidf2と同じ行数の場合、これはうまくいくと思います。

# create tfidf2 
tfidf2 = tdf.transform(list_cluster) 

#create dates 
dates=['010000000000', '001000000000', '001000000000', '000000000001', '001000000000', '000000000010',...] 

# binarize dates 
lb = LabelBinarizer() 
b_dates = lb.fit_transform(dates) 

new_tfidf = np.concatenate((tfidf2, b_dates), axis=1) 
+0

感謝します。 – neo33

関連する問題