본문 바로가기
프로그래밍/AI 머신러닝,LLM

파이썬 머신러닝 사이킷런에서 reshape() 사용이유

by -현's- 2025. 4. 2.
반응형
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

# 샘플 데이터 (공부 시간: X, 시험 점수: y)
X = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]).reshape(-1, 1)
y = np.array([50, 55, 65, 70, 72, 78, 85, 87, 95])

# 선형 회귀 모델 학습
model = LinearRegression()
model.fit(X, y)

# 예측
X_test = np.array([10]).reshape(-1, 1)
y_pred = model.predict(X_test)
print(f"공부 10시간 했을 때 예상 점수: {y_pred[0]:.2f}")

# 그래프 그리기
plt.scatter(X, y, color='blue', label="data")
plt.plot(X, model.predict(X), color='red', linewidth=2, label="line")
plt.xlabel("study time")
plt.ylabel("score")
plt.legend()
plt.show()
반응형

●reshare 역할과 사용이유

'X = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]).reshape(-1, 1)'에서 reshape(-1, 1)의 역할은 입력 데이터의 형태를 모델이 요구하는 형태로 변환하는 것입니다.

reshape(-1, 1)는 X의 배열을 2D 배열로 변환합니다.

-1은 행의 수를 자동으로 계산하라는 의미입니다.

1은 각 행에 하나의 열(특징)을 넣겠다는 의미입니다.

따라서 X는 원래 1D 배열 [1, 2, 3, 4, 5, 6, 7, 8, 9]였는데, reshape(-1, 1)을 사용하여 X의 shape이 (9, 1)인 2D 배열로 바뀝니다.

이렇게 변경하는 이유는 사이킷런에서 요구하는 형태로, 각 샘플마다 하나의 특성(열)을 가진 2D 배열이 필요하기 때문입니다.

사이킷런에서는 특징 행렬(X)을 2D 배열 형식으로 입력해야 합니다. 즉, X는 각 행이 샘플을 나타내고, 각 열이 특징을 나타내는 2D 배열이어야 합니다.

ex)reshape(-1,1)

X = [1, 2, 3] (1D 배열)  →  X = [[1], [2], [3]] (2D 배열)

ex)사이킷런 X

X = np.array([[1], [2], [3], [4], [5]]) -> 5개의 샘플, 1개의 특성

X = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]]) -> 5개의 샘플, 2개의 특성

 

 

 

 

반응형

댓글