2017-01-01 9 views
-3

フィーチャセットという名前の変数があります。印刷されるとき、値は次のようになります。IndexError:配列の範囲外のインデックスをリストします

>>> featuresets[:2] 

[({'contains2(left)': True, 'contains2(this)': True, 'contains2(now)': True, 'contains2(with)': True, 'contains1(now)': False, 'contains2(name)': True, 'contains2(gay)': True, 'contains2(im)': True}, 'Statement'), ({'contains2(p)': True, 'contains1(:)': False, 'contains2(:)': True}, 'Emotion')] 

ラベル(クラス変数)をPythonの配列にフィルタリングする必要があります。

ここで私は

referenceSets=[] 
testSets=[] 

for i, (features, label) in enumerate(featuresets): 
    referenceSets[i].append(label) 
    predicted = classifier.classify(features) 
    testSets[i].append(label) 

を書かれているが、私はエラーを取得していたコードは、

Traceback (most recent call last): 
    File "<pyshell#37>", line 2, in <module> 
    referenceSets[i].append(label) 
IndexError: list index out of range 

は、誰かがここに私の問題が何であるかを言及してくださいすることができます。

答えて

1

referenceSetsは、最初の行の空のリストに初期化されます。 referenceSets[i]にアクセスしようとすると、iの場合、そのインデックスはリストに存在しません。

iの役割は何か、またこれで達成しようとしていることは不明です。おそらくreferenceSetsをリストのリストに初期化することを意味しますか?これにより、あなたのコードが現在行っているように、referenceSetsiというインデックスを付けることができます。

referenceSets = [[] for _ in xrange(len(featuresets))] 
2

問題はreferenceSetsが空のリストであることです。あなたがループに入ったときにIndexErrorを取得し、リスト内の要素がないので、だから、最初の文はreferenceSets[i]i=0付き)ですが、:

>>> referenceSets = [] 
>>> referenceSets[0] 
IndexError: list index out of range 
関連する問題