1. ホーム
  2. スクリプト・コラム
  3. パイソン

[解決済み】Pythonスクリプトで「Expected 2D array, got 1D array instead: 」というエラーが発生?

2022-01-10 06:59:27

質問

私は以下のようなML予測を実装しています。 このチュートリアル ということで,以下のようなコードになります.

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import style

style.use("ggplot")
from sklearn import svm

x = [1, 5, 1.5, 8, 1, 9]
y = [2, 8, 1.8, 8, 0.6, 11]

plt.scatter(x,y)
plt.show()

X = np.array([[1,2],
             [5,8],
             [1.5,1.8],
             [8,8],
             [1,0.6],
             [9,11]])

y = [0,1,0,1,0,1]
X.reshape(1, -1)

clf = svm.SVC(kernel='linear', C = 1.0)
clf.fit(X,y)

print(clf.predict([0.58,0.76]))

私はそれを実行します(Python 3.6)、しかし、私はエラーが発生します。

"Expected 2D array, got 1D array instead:" I think the script is for older versions, but I don't know how to convert it to the 3.6 version.

ですでにトライ。

X.reshape(1, -1)

解決方法は?

を提供することになっています。 predict メソッドに、同じ 2 次元配列で、処理したい値をひとつ (あるいはそれ以上) 指定します。要するに、以下のように置き換えるだけです。

[0.58,0.76]

とともに

[[0.58,0.76]]

そして、うまくいくはずです。

EDIT: この回答が評判になったので、MLについてもう少し説明を加えようと思います。簡単に言うと predict 学習データと同じ次元のデータに対して ( X )であった。

問題の例では、コンピュータに大量の行を与えて X (それぞれ2つの値を持つ)そして、正しい回答を y . このような場合 predict を使用する場合、プログラムは同じものを期待します。 の行になります。たとえ1つの行(2つの値)に対してこの処理を行うとしても、その行は別の配列の一部でなければなりません。