Data Science

머신러닝 코드에서 X는 대문자 y는 소문자로 쓰는 이유

워로디스 2026. 8. 19. 22:02

1. 결론

머신러닝에서 X는 여러 feature를 가진 입력 행렬이기 때문에 대문자로, y는 각 샘플의 정답을 나타내는 벡터이기 때문에 소문자로 쓰는 것이 일반적인 관습입니다.

Python 자체에서 X는 대문자, y는 소문자로 써야 한다는 규칙은 없습니다.

이 표기법은 주로 수학, 통계학, 머신러닝에서 사용해 온 관습에서 비롯되었습니다.

머신러닝 코드에서는 일반적으로 다음과 같이 사용합니다.

X = df[["age", "income", "height"]]
y = df["target"]
  • X: 모델에 입력되는 특성(feature) 데이터
  • y: 모델이 예측하려는 정답 또는 타깃(target)

2. 왜 X는 대문자인가?

수학에서는 일반적으로 행렬(matrix)을 대문자로 표현하는 경우가 많습니다.

머신러닝에서 X는 보통 여러 개의 행과 열로 이루어진 2차원 데이터, 즉 행렬입니다.

예를 들어 다음과 같은 데이터가 있다고 가정합니다.

sample age income
1 20 3000
2 30 5000
3 40 7000

이를 단순히 표현하면 다음과 같습니다.

X = [
    [20, 3000],
    [30, 5000],
    [40, 7000]
]

X는 여러 샘플과 여러 feature를 가진 행렬 형태의 입력 데이터입니다.

그래서 관습적으로 대문자 X를 사용합니다.

3. 왜 y는 소문자인가?

수학에서는 일반적으로 벡터(vector)를 소문자로 표현하는 경우가 많습니다.

머신러닝에서 y는 각 샘플에 대응하는 하나의 정답값을 가지므로 보통 1차원 벡터입니다.

예를 들어:

y = [0, 1, 1]

각 값은 X의 각 행에 대응하는 정답입니다.

X                    y
------------------------
[20, 3000]   ->      0
[30, 5000]   ->      1
[40, 7000]   ->      1

따라서 타깃 데이터는 관습적으로 소문자 y로 표현합니다.

4. X.shapey.shape

머신러닝에서는 shape을 보면 Xy의 차이를 쉽게 이해할 수 있습니다.

X.shape
# (1000, 20)

y.shape
# (1000,)

각각 다음을 의미합니다.

X.shape == (1000, 20)

1000개 샘플 × 20개 feature

즉 데이터가 1000개 있고, 각 데이터마다 입력 변수(feature)가 20개 있다는 뜻입니다.

y.shape == (1000,)

1000개 샘플에 대응하는 정답 1000개

즉 각 샘플마다 하나의 정답이 있다는 뜻입니다.

정리하면 다음과 같습니다.

X : 입력 데이터 행렬
    1000개 샘플 × 20개 feature

y : 정답 벡터
    1000개의 정답

5. 머신러닝 코드에서의 실제 사용 예

from sklearn.model_selection import train_test_split

X = df[["age", "income", "height"]]
y = df["purchased"]

X_train, X_test, y_train, y_test = train_test_split(
    X,
    y,
    test_size=0.2
)

각 변수의 의미는 다음과 같습니다.

  • X_train: 학습용 입력 데이터
  • X_test: 테스트용 입력 데이터
  • y_train: 학습용 정답 데이터
  • y_test: 테스트용 정답 데이터

이 표기법이 널리 사용되기 때문에 머신러닝 코드를 읽을 때 Xy만 봐도 데이터의 역할을 빠르게 파악할 수 있습니다.

6. 반드시 이렇게 써야 하는 것은 아니다

X, y 표기법은 Python 문법이 아니라 관습입니다.

따라서 다음과 같이 작성해도 아무 문제가 없습니다.

input_data = ...
target = ...

또는

features = ...
labels = ...

심지어 다음처럼 써도 Python 문법상 문제는 없습니다.

x = ...
Y = ...

다만 머신러닝에서는 X, y라는 표기법이 매우 널리 사용되므로 이 관습을 따르면 코드를 읽기 쉬워집니다.

7. Y를 대문자로 쓰는 경우

항상 타깃을 소문자 y로 쓰는 것은 아닙니다.

하나의 샘플에서 예측해야 하는 값이 여러 개라면 출력 데이터도 행렬이 될 수 있습니다.

예를 들어:

Y.shape
# (1000, 3)

이것은 다음과 같은 의미입니다.

1000개 샘플 × 3개 출력값

즉 각 샘플마다 3개의 값을 예측하는 경우입니다.

이처럼 출력 데이터도 행렬이라면 수학적 표기 관습에 따라 대문자 Y를 사용하기도 합니다.

8. 요약

기호 의미 일반적인 형태 표기 이유
X 입력 feature 2차원 행렬 행렬을 대문자로 쓰는 관습
y 정답 또는 target 1차원 벡터 벡터를 소문자로 쓰는 관습
Y 여러 개의 target 2차원 행렬 출력도 행렬인 경우
반응형