반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- Python
- Kotlin
- matplotlib
- gas
- Redshift
- Mac
- google apps script
- string
- list
- Java
- numpy
- PostgreSQL
- PySpark
- 파이썬
- dataframe
- math
- Apache
- Google Spreadsheet
- Tkinter
- SQL
- Excel
- Google Excel
- array
- django
- GIT
- hive
- PANDAS
- c#
- Github
Archives
- Today
- Total
달나라 노트
Python numpy : polyfit() — 점들의 패턴에 가장 잘 맞는 다항식 계수를 추정하는 메서드 본문
Python/Python numpy
Python numpy : polyfit() — 점들의 패턴에 가장 잘 맞는 다항식 계수를 추정하는 메서드
CosmosProject 2026. 5. 14. 19:58728x90
반응형
NumPy polyfit() — 점들의 패턴에 가장 잘 맞는 다항식 계수를 추정하는 메서드
여러 (x, y) 좌표 쌍을 받아서, 그 점들을 가장 잘 설명하는 다항식의 계수를 반환합니다.
기본 문법
numpy.polyfit(x, y, deg)
| 파라미터 | 설명 |
|---|---|
x |
x 좌표값들의 array |
y |
y 좌표값들의 array |
deg |
다항식의 차수 |
| 반환값 | 계수 array. 높은 차수부터 순서대로 반환 |
deg에 따라 추정하는 다항식의 형태가 달라집니다.
deg=1 → y = ax + b (직선)
deg=2 → y = ax² + bx + c (포물선)
deg=3 → y = ax³ + bx² + cx + d (S자 곡선)
deg=4 → y = ax⁴ + bx³ + cx² + dx + e
"가장 잘 맞는"이 뭔 뜻인가 — 최소제곱법
점들이 완벽하게 하나의 선 위에 있는 경우는 거의 없습니다. 대신 각 점과 추정한 곡선 사이의 오차(거리)의 제곱 합이 최소가 되는 계수를 찾습니다. 이걸 최소제곱법(Least Squares)이라 합니다.
실제 y값과 추정 y값의 차이 → 오차
오차² 의 합이 가장 작아지는 계수를 선택
예시 1 — 1차 (직선 피팅)
import numpy as np
x = np.array([1, 2, 3, 4, 5])
y = np.array([2.1, 3.9, 6.2, 7.8, 10.1])
# 대략 y = 2x 패턴
coeffs = np.polyfit(x, y, deg=1)
# array([2.02, 0.02])
# ↑ ↑
# a b → y = 2.02x + 0.02
deg=1이면 y = ax + b 형태. 반환값은 [a, b].
예시 2 — 2차 (곡선 피팅)
import numpy as np
x = np.array([1, 2, 3, 4, 5])
y = np.array([1.1, 3.9, 9.2, 15.8, 25.1])
# 대략 y = x² 패턴
coeffs = np.polyfit(x, y, deg=2)
# array([0.99, 0.01, 0.05])
# ↑ ↑ ↑
# a b c → y = 0.99x² + 0.01x + 0.05
deg=2이면 y = ax² + bx + c 형태. 반환값은 [a, b, c].
계수로 예측값 구하기 — np.polyval()
polyfit()이 계수를 구해줬다면, np.polyval()로 새로운 x에 대한 y를 예측할 수 있습니다.
coeffs = np.polyfit(x, y, deg=1)
# x=6일 때 예측값
np.polyval(coeffs, 6)
# 12.14
# 여러 x에 대해 한 번에
np.polyval(coeffs, [6, 7, 8])
# [12.14, 14.16, 16.18]
차수(deg) 선택 주의
deg가 너무 낮으면 → 패턴을 못 잡음 (underfitting)
deg가 너무 높으면 → 노이즈까지 외워버림 (overfitting)
# 점이 5개인데 deg=4로 하면
# 모든 점을 정확히 지나는 곡선이 나오지만
# 실제 패턴과는 거리가 멀어질 수 있음
일반적으로 데이터의 실제 관계를 고려해서
deg=1(선형) 또는 deg=2(2차)를 먼저 시도합니다.
728x90
반응형
'Python > Python numpy' 카테고리의 다른 글
| Python numpy : minimum() / maximum() — 두 array를 element-wise로 비교해 작은/큰 값을 선택하는 메서드 (0) | 2026.05.14 |
|---|---|
| Python numpy : where() — 조건에 따라 두 값 중 하나를 선택하는 메서드 (0) | 2026.05.14 |
| Python numpy : select (여러 조건을 한 번에 처리하는 메서드) (0) | 2026.05.14 |
| Python numpy : argmax, argmin (최대값의 index, 최소값의 index) (0) | 2025.11.08 |
| Python numpy : power (거듭제곱) (0) | 2024.03.29 |
Comments
