[scikit-learn] sklearn : LinearRegression.fit ()을 호출 할 때 샘플 수가 일치하지 않는 배열을 찾았습니다.

단순한 선형 회귀를 시도했지만 다음과 같은 오류로 당황합니다.

regr = LinearRegression()
regr.fit(df2.iloc[1:1000, 5].values, df2.iloc[1:1000, 2].values)

다음을 생성합니다.

ValueError: Found arrays with inconsistent numbers of samples: [  1 999]

이러한 선택은 동일한 차원을 가져야하며 배열이 numpy 여야합니다. 그래서 무엇을 놓치고 있습니까?



답변

sklearn에 (행 번호, 열 번호)의 데이터 모양이 필요한 것 같습니다. 데이터 모양이 (행 번호,) 같은 (999, )경우 작동하지 않습니다. 사용하여 numpy.reshape(), 당신은에 배열의 형태로 변경해야 (999, 1)사용 예를,

data=data.reshape((999,1))

제 경우에는 그것과 함께 일했습니다.


답변

pandas 데이터 프레임 (이름 df2)을 사용중인 것 같습니다.

다음을 수행 할 수도 있습니다.

regr = LinearRegression()
regr.fit(df2.iloc[1:1000, 5].to_frame(), df2.iloc[1:1000, 2].to_frame())

참고 : pandas 시리즈를 numpy.ndarray로 변환하고 numpy.ndarray에 to_frame () 속성이 없기 때문에 “값”을 제거했습니다.


답변

Udacity 딥 러닝 기초 과정에서 확인 :

df = pd.read_csv('my.csv')
...
regr = LinearRegression()
regr.fit(df[['column x']], df[['column y']])


답변

regr.fit의 “X”인수는 행렬이어야하므로 다음이 작동합니다.

regr = LinearRegression()
regr.fit(df2.iloc[1:1000, [5]].values, df2.iloc[1:1000, 2].values)


답변

내 데이터를 np.array. 내 데이터를 np.matrix대신 변환 하고 전치 하여 문제를 해결했습니다 .

ValueError :
regr.fit(np.array(x_list), np.array(y_list))

옳은:
regr.fit(np.transpose(np.matrix(x_list)), np.transpose(np.matrix(y_list)))


답변

expects X(feature matrix)

다음과 같이 튜플에 기능을 넣으십시오.

기능 = [ 'TV', '라디오', '신문']
X = 데이터 [특징]


답변

비슷한 문제에 직면했습니다. 제 경우의 문제는 X의 행 수가 y의 행 수와 같지 않다는 것입니다.

즉, 기능 열의 항목 수는 내가 freature 열에서 일부 행을 삭제했기 때문에 대상 변수의 전체 수와 같지 않았습니다.