본문 바로가기
데이터분석과 AI/데이터분석과 AI 문법(Python)

로그와 지수 함수 - np.log(), np.exp()

by 우공80 2023. 7. 15.
728x90

np.log np.exp

회사에서 상품별 매출 추이를 분석할 일이 생겼습니다. 향후 매출 추이를 그려보고,

가입자가 감소하는 상품은 퇴출시키던지, 다시 활성화시키던지 판단을 하려고 합니다.

이때 단항의 선형 회귀선을 사용하니, 가입자가 증가 추세에 있는 상품은 너무 과하게 증가하고,

가입자가 감소 추세에 있으면 0 이하로 떨어져 버리는 문제가 있습니다. 

 

그래서 지수함수를 회귀식에 사용하려고 하고, 지수함수 회귀를 위해 로그와 지수함수에 대해 먼저 정리하고 갑니다.

 

1. 자연상수 'e'에 대한 지수함수 - np.exp()

지수는 반복되는 곱셈을 나타냅니다. 예를 들어 n의 거듭제곱으로 된 a(a^n으로 표시됨)는 a를 n번 곱하는 것을 의미합니다. np.exp()는 여기서 밑수인 a가 자연 상수 'e'(약 2.71828)이고, 이에 대해 입력값 n제곱을 한 것을 의미합니다.

예를 들어 np.exp(10) == math.e**10을 의미합니다.

import numpy as np
import math
np.exp(10),math.e**10

 

아래에서 간단히 np.exp()로 그래프를 그려봅니다.

import numpy as np
import matplotlib.pyplot as plt

# Generate x values from -5 to 5
x = np.linspace(-5, 5, 100)

# Calculate the exponential values of x
y1 = np.exp(x) +10 #양의 무한대로 발산하는 증가
y2 = -np.exp(x) -10 #음의 무한대로 발산하는 감소
y3 = np.exp(-x) +5 #0에 수렴하며 감소

# Plotting the exponential function
plt.plot(x, y1, color='blue')
plt.plot(x, y2, color='red')
plt.plot(x, y3, color='green')
plt.xlabel('x')
plt.ylabel('exp(x)')
plt.title('Exponential Function: y = exp(x)')
plt.grid(True)
plt.show()

Output: 

지수함수 그래프

np.exp(x)는 입력값 x가 어떤 수가 들어오더라도 0보다 작아지지 않습니다. 

 

2. 자연상수 'e'에 대한 로그 함수 - np.log()

로그는 지수의 역 연산입니다. 특정 값을 얻기 위해 주어진 밑을 올리는 데 필요한 지수를 나타냅니다.

특정 밑수 b에 대한 숫자 x의 로그(log_b(x)로 표시됨)는 x를 얻기 위해 b를 올려야 하는 거듭제곱을 나타냅니다.

즉 y=b^x 일 때, x=log_b(y)이고, x와 y를 바꿔주면 로그 함수 y=log_b(x)가 됩니다. 

 

np.log()는 주어진 x에 대한 자연로그를 계산합니다. 이는 밑수 b가 자연상수 'e'일 때 입력값 x를 얻기 위해 'e'를 올리는데 필요한 지수값을 계산합니다.

 

아래에서 간단히 np.log()로 그래프를 그려봅니다.

# Generate x values from 0.1 to 5 (avoiding zero)
x = np.linspace(0.1, 5, 100)

# Calculate the natural logarithm of x
y1 = np.log(x) #증가 추세
y2 = -np.log(x) #감소 추세

# Plotting the natural logarithm function
plt.plot(x, y1, color='blue')
plt.plot(x, y2, color='red')

plt.xlabel('x')
plt.ylabel('log(x)')
plt.title('Natural Logarithm Function: y = log(x)')
plt.grid(True)
plt.show()

Output: 

np.log()

로그는 지수함수의 역함수이므로 입력값 x는 음수가 될 수 없으므로 지수함수처럼 음수 입력값의 그래프는 없습니다.

 

3. np.exp()와 np.log()의 대칭 관계 그래프 

y=log_e(x)는 y=e^x의 역함수이므로 그래프를 그리면, y=x에 대하여 대칭입니다. 

import numpy as np
import matplotlib.pyplot as plt

# Generate x values from -5 to 5
x1 = np.linspace(-3, 3, 10)
x2 = np.linspace(-3, 20, 100)


# Calculate y values for exp(x) and log(x)
y_exp = np.exp(x1)
x1_1 = np.log(y_exp)

# Plotting exp(x) and log(x) on the same graph
plt.plot(x1, y_exp, color='blue', label='exp(x)')
plt.plot(y_exp, x1_1, color='green', label='log(x)')
plt.plot(x2, x2, color='green', label='y=x', linestyle='--')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Relationship between exp(x) and log(x)')
plt.legend()
plt.grid(True)
plt.show()

 Output:

이렇게 그래프에서 y=x에 대해 대칭인 것을 확인했습니다. 그래프를 그릴 때는 x와 y값을 반대로 해주어야 대칭으로 나타나게 됩니다. 

728x90

댓글