Pemasangan kurva dengan python (dengan contoh)


Seringkali Anda mungkin ingin menyesuaikan kurva ke kumpulan data dengan Python.

Contoh langkah demi langkah berikut menjelaskan cara menyesuaikan kurva ke data dengan Python menggunakan fungsi numpy.polyfit() dan cara menentukan kurva mana yang paling sesuai dengan data.

Langkah 1: Buat dan visualisasikan data

Mari kita mulai dengan membuat kumpulan data palsu, lalu membuat plot sebar untuk memvisualisasikan datanya:

 import pandas as pd
import matplotlib. pyplot as plt

#createDataFrame
df = pd. DataFrame ({' x ': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
                   ' y ': [3, 14, 23, 25, 23, 15, 9, 5, 9, 13, 17, 24, 32, 36, 46]})

#create scatterplot of x vs. y
plt. scatter (df. x , df. y ) 

Langkah 2: Sesuaikan Beberapa Kurva

Mari kita masukkan beberapa model regresi polinomial ke data dan visualisasikan kurva setiap model dalam plot yang sama:

 import numpy as np

#fit polynomial models up to degree 5
model1 = np. poly1d (np. polyfit (df. x , df. y , 1))
model2 = np. poly1d (np. polyfit (df. x , df. y , 2))
model3 = np. poly1d (np. polyfit (df. x , df. y , 3))
model4 = np. poly1d (np. polyfit (df. x , df. y , 4))
model5 = np. poly1d (np. polyfit (df. x , df. y , 5))

#create scatterplot
polyline = np. linspace (1, 15, 50)
plt. scatter (df. x , df. y )

#add fitted polynomial lines to scatterplot 
plt. plot (polyline, model1(polyline), color=' green ')
plt. plot (polyline, model2(polyline), color=' red ')
plt. plot (polyline, model3(polyline), color=' purple ')
plt. plot (polyline, model4(polyline), color=' blue ')
plt. plot (polyline, model5(polyline), color=' orange ')
plt. show ()

Untuk menentukan kurva mana yang paling sesuai dengan data, kita dapat melihat R kuadrat yang disesuaikan dari setiap model.

Nilai ini menunjukkan persentase variasi variabel respon yang dapat dijelaskan oleh variabel prediktor dalam model, disesuaikan dengan jumlah variabel prediktor.

 #define function to calculate adjusted r-squared
def adjR(x, y, degree):
    results = {}
    coeffs = np. polyfit (x, y, degree)
    p = np. poly1d (coeffs)
    yhat = p(x)
    ybar = np. sum (y)/len(y)
    ssreg = np. sum ((yhat-ybar)**2)
    sstot = np. sum ((y - ybar)**2)
    results[' r_squared '] = 1- (((1-(ssreg/sstot))*(len(y)-1))/(len(y)-degree-1))

    return results

#calculated adjusted R-squared of each model
adjR(df. x , df. y , 1)
adjR(df. x , df. y , 2)
adjR(df. x , df. y , 3)
adjR(df. x , df. y , 4)
adjR(df. x , df. y , 5)

{'r_squared': 0.3144819}
{'r_squared': 0.5186706}
{'r_squared': 0.7842864}
{'r_squared': 0.9590276}
{'r_squared': 0.9549709}

Dari hasil tersebut terlihat bahwa model dengan Adjusted R-squared tertinggi adalah polinomial derajat keempat yang memiliki Adjusted R-squared sebesar 0,959 .

Langkah 3: Visualisasikan kurva terakhir

Terakhir, kita dapat membuat plot sebar dengan kurva model polinomial derajat keempat:

 #fit fourth-degree polynomial
model4 = np. poly1d (np. polyfit (df. x , df. y , 4))

#define scatterplot
polyline = np. linspace (1, 15, 50)
plt. scatter (df. x , df. y )

#add fitted polynomial curve to scatterplot
plt. plot (polyline, model4(polyline), ' -- ', color=' red ')
plt. show ()

Kita juga bisa mendapatkan persamaan untuk garis ini menggunakan fungsi print() :

 print (model4)

          4 3 2
-0.01924x + 0.7081x - 8.365x + 35.82x - 26.52

Persamaan kurvanya adalah sebagai berikut:

kamu = -0,01924x 4 + 0,7081x 3 – 8,365x 2 + 35,82x – 26,52

Persamaan ini dapat kita gunakan untuk memprediksi nilai variabel respon berdasarkan variabel prediktor dalam model. Misalnya jika x = 4 maka kita prediksi y = 23,32 :

y = -0,0192(4) 4 + 0,7081(4) 3 – 8,365(4) 2 + 35,82(4) – 26,52 = 23,32

Sumber daya tambahan

Pengantar Regresi Polinomial
Cara melakukan regresi polinomial dengan Python

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *