1. ホーム
  2. python

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

2022-01-28 13:52:56

質問

私は以下のことを行っています。 このチュートリアル この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:" が発生します。 スクリプトは古いバージョン用だと思うのですが、3.6バージョンに変換する方法がわかりません。

ですでにトライ。

X.reshape(1, -1)

解決方法は?

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

[0.58,0.76]

とともに

[[0.58,0.76]]

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

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

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