Visualisieren Sie den Bereich der internen und externen Einfügungen mit Python

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 inter_and_extrapolation1.png Näherung zweiter Ordnung inter_and_extrapolation2.png Näherung dritter Ordnung inter_and_extrapolation3.png Annäherung 4. Ordnung inter_and_extrapolation4.png Annäherung 5. Ordnung inter_and_extrapolation5.png

Recommended Posts