2

scikit-learnのアルゴリズムを使用して、入力の数に基づいて出力を予測しようとしています。「インデックスが多すぎます」というエラーが返されているようですが、理由がわかりません。

CSVファイルトレーニング:

 1.1    0.2 0.1 0   0.12    0.1
 1.4    0.2 0.1 0.1 0.14    0.1
 0.1    0.1 0.1 0   0.26    0.1
 24.5   0.1 0   0.1 0.14    0.1
 0.1    0.1 0.1 0   0.25    0.1

コード:

    fileCSVTraining = genfromtxt('TrainingData.csv', delimiter=',', dtype=None)

    #Define first 6 rows of data as the features
    t = fileCSVTraining[:, 6:]

    #Define which column to put prediction in
    r = fileCSVTraining[:, 0-6:]    
    #Create and train classifier 
    x, y = r, t
    clf = LinearSVC()
    clf = clf.fit(x, y)     
    #New data to predict
    X_new = [1.0, 2.1, 3.0, 2.4, 2.1]
    b = clf.predict(X_new)

エラー:

 t = fileCSVTraining[:, 6:]
 IndexError: too many indices 
4

4 に答える 4

4

コメントに基づいて、私はあなたが欲しいと思います:

fileCSVTraining = genfromtxt('TrainingData.csv')

次に、「最初の 6 行」を取得するには、

t = fileCSVTraining[:6, :]

(実際のデータ ファイルは、表示されているよりも長いと想定しています。例には 5 行しかありません。)

r取得するための配列インデックスの使用も間違っていると思われます。

于 2013-02-10T02:21:28.833 に答える
2

xおよび変数を印刷してくださいy。データが無効である理由がわかり、それに応じて修正される可能性があります。

最後の行についても:

X_new = [1.0, 2.1, 3.0, 2.4, 2.1]
b = clf.predict(X_new)

次のようにする必要があります。

X_new = [[1.0, 2.1, 3.0, 2.4, 2.1]]
b = clf.predict(X_new)

predict は(n_new_samples, n_features)、単一のサンプルではなく、サンプルのコレクション ( の 2D 配列) を想定しています。

于 2013-02-13T08:23:33.350 に答える
0

r と t を取得するための配列のインデックス付けが正しくありませんでした。使用:

  t = fileCSVTraining[:, 1-0:]  

予測列を残して、必要なトレーニング データを取得しました。

于 2013-03-28T08:40:07.100 に答える
0

また、dtype=float を指定することも重要です。"None" を指定すると、2 次元配列ではなく 1 次元配列を強制する配列に整数 (データに整数が含まれている場合) を含めることができるためです。示されているように、インデックスは 1 次元では機能しません。

于 2014-01-27T07:19:02.600 に答える