Code zum Verständnis des Bereichs der internen und externen Einfügung.
Es ist notwendig, beim Überlernen vorsichtig zu sein, aber im Rahmen der Extrapolation Es muss gründlich geprüft werden, ob die erhaltene Näherungsformel anwendbar ist.
Auch wenn der Zweck der Annäherung eher "Analyse" als "Vorhersage" ist. Wenn Sie die Anzahl der Variablen oder die Reihenfolge mehr als erforderlich erhöhen, ist die Interpretation schwierig. Die Herausforderung besteht darin, wie einfach es ist oder wie einfach es angepasst werden kann.
Rot gestrichelter Teil </ font>: Extrapolationsbereich, Blauer durchgezogener Linienteil </ font>: Interpolationsbereich.
interpolation_and_extrapolation
import numpy as np
import matplotlib.pyplot as plt
x = np.array([2.0, 3.5, 4.0, 4.5, 5.0, 5.5])
y = np.array([3.0, 3.2, 3.9, 5.2, 8.4, 10.5])
xp = np.linspace(2, 5.5, 100)
xp1 = np.linspace(0, 2, 100)
xp2 = np.linspace(5.5, 8, 100)
for val in range(1, 6):
fx = np.poly1d(np.polyfit(x, y, val))
plt.rcParams["font.size"] = 20
fig, ax = plt.subplots(figsize=(15, 10))
ax.plot(xp, fx(xp), '-', color='blue')
ax.plot(xp1, fx(xp1), '-', color='red', linestyle='dashed')
ax.plot(xp2, fx(xp2), '-', color='red', linestyle='dashed')
ax.scatter(x, y, color='deepskyblue', s=32)
s = '$y =$'
for idx, deg in enumerate(reversed(range(0, val+1))):
if (fx.coef[idx] > 0) & (idx != 0):
s += '$ +$'
if deg > 1:
s += f' ${fx.coef[idx]:.2f} x^{deg}$'
if deg == 1:
s += f' ${fx.coef[idx]:.2f} x$'
if deg == 0:
s += f' ${fx.coef[idx]:.2f}$'
# ax.text(0.05, 0.8, s=s, size='x-large', transform=ax.transAxes)
ax.axhline([0], color='black')
ax.axvline([2], color='gray', linestyle='dotted')
ax.axvline([5.5], color='gray', linestyle='dotted')
ax.set_xlim(0, 8)
ax.set_ylim(-3, 14)
ax.set_title(s)
ax.set_ylabel('response variable')
ax.set_xlabel('explanatory variables')
fig.savefig(f'./data/img/inter_and_extrapolation{val}.png')
Annäherung erster Ordnung Näherung zweiter Ordnung Näherung dritter Ordnung Annäherung 4. Ordnung Annäherung 5. Ordnung
Recommended Posts