2017-12-06 13 views
0
import numpy as np 
import matplotlib.pyplot as plt 
import pandas as pd 

dataset = pd.read_csv('Position_Salaries.csv') 
X = dataset.iloc[:, 1:2].values 
y = dataset.iloc[:, 2].values 

from sklearn.preprocessing import StandardScaler 
sc_X = StandardScaler() 
sc_y = StandardScaler() 
X = sc_X.fit_transform(X) 
y = sc_y.fit_transform(y) 

그래, 문제가 있습니다. X와 y는 모두 단일 기능이며 하나의 열이 있습니다. 당신이 볼 수 있듯이 X는 매트릭스입니다. 및 Y는 벡터 X = dataset.iloc이다 :, 1 : 2] Y = dataset.iloc를 .values ​​[2 :, 이제StandardScalar Fit_Transform에서 오류 발생

을 .values ​​I가 y = sc_y.fit_transform(y) 실행시 저는 오류 그것은 그 1D 배열입니다. 그리고 내가 y = dataset.iloc[:, 2:3].values을 2D 배열로 변경하면. 그러나 그것의 종속 변수 이후 1D 배열로 유지하고 그것을 그대로 유지하고 싶습니다. 또한 나는 비슷한 데이터를 재조정해야만했던 초기의 다른 예제들을 풀었고 이런 종류의 에러를주지 않았다. 왜 그것이 지금 나에게주는 지 모르겠다. 또한 코딩하는 동안 비디오를보고 있고 비디오에서 모든 것이 동일하지만 그는 어떤 오류도 내지 않습니다.

답변

-1

당신은 2 차원 배열에서 1 차원 배열을 얻을 수 flatten를 사용할 수 있습니다 StandardScaler가 기능하지 레이블 또는 대상 데이터에서 작동하기위한 것입니다

y.flatten() 
1

. 따라서 2-d 데이터에서만 작동합니다. 문서 여기를 참조하십시오

무엇 당신이 할 수있는

, scale function을 사용합니다. StandardScaler는이 함수에 대한 래퍼 일뿐입니다.

from sklearn.preprocessing import scale 
y = scale(y) 

아니면 StandarScaler을 사용하려는 경우, 당신은 당신의 y이 같은 2 차원 배열을 바꿀 필요가 :이 코드 조각이 작동하는 이유

import numpy as np 
y = np.array(y).reshape(-1,1) 
y = sc_y.fit_transform(y) 
0
from sklearn.preprocessing import StandardScaler 
sc_X = StandardScaler() 
X = sc_X.fit_transform(X) 

sc_y = StandardScaler() 
y = np.array(y).reshape(-1,1) 
y = sc_y.fit_transform(y) 
y = y.flatten() 
+0

마음이 설명? – DarkCygnus