반응형
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개의 특성
반응형
'프로그래밍 > AI 머신러닝,LLM' 카테고리의 다른 글
파이썬 머신러닝 train_test_split() (0) | 2025.03.29 |
---|---|
머신러닝 회귀(regression) 개념 (0) | 2025.03.29 |
머신러닝 기초, 모델, 데이터셋, 사이킷런 (1) | 2025.03.25 |
주피터 노트북 개념, 사용이유 (0) | 2025.03.23 |
파이썬 가상환경 사용이유, 사용법 (0) | 2025.03.18 |
댓글