私は、テキスト文書の数をループしようと記録によって設定された機能を作成しています:テキスト sklearn.svm.libsvm.fit()クラシファイアにリストタイプの機能を含めるにはどうすればよいですか?
- 各キーフレーズの(その中の単語数)
- 各キーフレーズの頻度
extraxting機能のコードスニペット:
#Take list of Keywords
keyword_list = [line.split(':')[1].lower().strip() for line in keywords.splitlines() if ':' in line ]
#Position
position_list = [ [m.start()/float(len(document)) for m in re.finditer(re.escape(kw),document,flags=re.IGNORECASE)] for kw in keyword_list]
#Part of Speech
pos_list = []
for key in keyword_list:
pos_list.append([pos for w,pos in nltk.pos_tag(nltk.word_tokenize(key))])
#Length of each keyword
len_list = [ len(k.split(' ')) for k in keyword_list]
#Text Frequency
freq_list = [ len(pos)/float(len(document)) for pos in position_list]
target.extend(keyword_list)
for i in range(0,len(keyword_list)):
data.append([position_list[i],pos_list[i],len_list[i],freq_list[i]])
- ターゲット:キーワードのリストが
- データ:機能のリスト
I分類器を介してこれを通過した:
from sklearn.cross_validation import train_test_split
X_train,X_test,y_train,y_test = train_test_split(data,target,test_size=0.25,random_state = 42)
import numpy as np
X_train = np.array(X_train)
y_train = np.array(y_train)
from sklearn import svm
cls = svm.SVC(gamma=0.001,C=100) # Parameter values Matter!
cls.fit(X_train,y_train)
predictions = cls.predict(X_test)
しかし、私はエラーを取得:だから
Traceback (most recent call last):
File "supervised_3.py", line 113, in <module>
cls.fit(X_train,y_train)
File "/Library/Python/2.7/site-packages/sklearn/svm/base.py", line 150, in fit
X = check_array(X, accept_sparse='csr', dtype=np.float64, order='C')
File "/Library/Python/2.7/site-packages/sklearn/utils/validation.py", line 373, in check_array
array = np.array(array, dtype=dtype, order=order, copy=copy)
ValueError: setting an array element with a sequence
を、私は
data.append([len_list[i],freq_list[i]])
に data.append([position_list[i],pos_list[i],len_list[i],freq_list[i]])
を変更することにより、すべてのリスト項目を削除しました
それは働いた。
しかし、私はこれらの2がリストされているので、それが働いていなかったと思っposition_list
とpos_list
を含める必要があります。だから、私はそれらを配列に変換しようとしました:
data.append([np.array(position_list[i]),np.array(pos_list[i]),len_list[i],freq_list[i]])
私はまだ同じエラーが発生します。
あなたがdata
に、4つの要素、すなわち、position_list[i]
、pos_list[i]
、len_list[i]
、freq_list[i]
のリストを追加しようとしている特徴抽出コードのループの最後で
thanks tonechas!私は仕事をするプログラムを持っている:) –