Python 스크립트 "Expected 2D array, got 1D array" 오류:?
저는 이 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:" 오류가 발생합니다. 스크립트가 이전 버전용인 것 같은데 3.6 버전으로 변환하는 방법을 모르겠습니다.
이미 사용해 보십시오.
X.reshape(1, -1)
당신은 단지 그것을 제공하기로 되어 있습니다.predict
동일한 2D 배열을 사용하지만 하나 이상의 값을 처리할 수 있습니다.간단히 말해서, 당신은 그냥 대체할 수 있습니다.
[0.58,0.76]
와 함께
[[0.58,0.76]]
효과가 있을 겁니다.
EDIT:이ML에 더 했습니다. ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜ짧은 버전: 우리는 오직 사용할 수 있습니다.predict
(육교데이동데차이터의원일한와터(▁that데터▁on▁data이교▁(ality▁data▁is)X
)는 있었습니다.
문제의 예에서, 우리는 컴퓨터에 다음과 같은 행들을 제공합니다.X
(으로) 을 (2개의 값으로)에 y
하고 싶을 때.predict
새로운 값을 사용하여 우리 프로그램은 동일한 행 집합을 기대합니다.한 행(두 개의 값)에만 적용하려는 경우에도 해당 행은 다른 어레이의 일부여야 합니다.
에 대한 할 때 합니다.[0.58,0.76]
전화하기 전에 다시 모양을 만들어 문제 해결predict()
:
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]
clf = svm.SVC(kernel='linear', C = 1.0)
clf.fit(X,y)
test = np.array([0.58, 0.76])
print test # Produces: [ 0.58 0.76]
print test.shape # Produces: (2,) meaning 2 rows, 1 col
test = test.reshape(1, -1)
print test # Produces: [[ 0.58 0.76]]
print test.shape # Produces (1, 2) meaning 1 row, 2 cols
print(clf.predict(test)) # Produces [0], as expected
저는 아래의 접근법을 사용합니다.
reg = linear_model.LinearRegression()
reg.fit(df[['year']],df.income)
reg.predict([[2136]])
예측하려는 인스턴스의 데이터 유형이 다음과 같다는 점을 제외하고는 동일한 가지 문제에 직면했습니다.panda.Series
물건.
저는 단지 하나의 입력 사례를 예측하기만 하면 되었습니다.저는 그것을 제 데이터 조각에서 가져왔습니다.
df = pd.DataFrame(list(BiogasPlant.objects.all()))
test = df.iloc[-1:] # sliced it here
에 1-D 배열로 변환해야 reshape
그것.
test2d = test.values.reshape(1,-1)
서류를 보면,values
시리즈를 numpy 배열로 변환합니다.
저도 같은 문제에 직면했습니다.배열을 배열로 만들기만 하면 되며, 첫 번째 괄호가 배열을 초기화하고 두 번째 괄호가 배열을 해당 배열의 요소로 만들 때 2D 배열의 단일 요소로 만들기 위해 이중 대괄호를 배치해야 합니다.
따라서 마지막 문장을 다음과 같이 바꿉니다.
print(clf.predict(np.array[[0.58,0.76]]))
두 개의 대괄호 사이에 인수를 삽입하기만 하면 됩니다.
regressor.predict([[values]])
그것은 나에게 효과가 있었습니다.
요. . 시도해 보세요.reg.predict([[3300]])
.
이전에는 API에서 스칼라 값을 허용했지만 이제는 2D 어레이를 제공해야 합니다.
하나의 기능으로 내 데이터 프레임 목록이 시리즈로 변환됩니다.저는 그것을 다시 데이터 프레임 목록으로 변환해야 했고 그것은 작동했습니다.
if type(X) is Series:
X = X.to_frame()
두 개의 대괄호 또는 그 반대로 당신의 numpy 객체를 둘러싸면 됩니다.
예:
처음에 당신의x = [8,9,12,7,5]
로 변경합니다.x = [ [8,9,12,7,5] ]
.
그러면 치수 문제가 해결될 것입니다.
다음과 같이 할 수 있습니다.
np.array(x)[:, 없음]
int64 Type에서 DataFrame에 대한 독립 변수 및 종속 변수의 X 및 Y 매트릭스로, 1D 배열에서 2D 배열로 변환됩니다.i.e X=pd.pd가 python에서 판다 클래스의 pd인 DataFrame(X) 및 Y=pd.dataFrame(Y). 따라서 기능을 차례로 스케일링하면 오류가 발생하지 않습니다!
언급URL : https://stackoverflow.com/questions/45554008/error-in-python-script-expected-2d-array-got-1d-array-instead
'programing' 카테고리의 다른 글
로그인 시 ssh-agent 시작 (0) | 2023.05.25 |
---|---|
mongodb에서 고유 객체 ID를 생성하는 방법 (0) | 2023.05.25 |
NPOI 워크북 이후 MemoryStream이 닫혀 있는 것 같습니다.글? (0) | 2023.05.25 |
가상 환경에서 Spyder를 실행하는 방법은 무엇입니까? (0) | 2023.05.20 |
오류: EACCES: 권한이 거부되었습니다. '/usr/local/lib/node_modules'에 액세스하십시오. (0) | 2023.05.20 |