Polynomisen Regressiomallin Rakentaminen
Tiedoston lataaminen
Ladataan poly.csv ja tarkastellaan sitä:
1234import pandas as pd file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/poly.csv' df = pd.read_csv(file_link) print(df.head())
Seuraavaksi visualisoidaan riippuvuus:
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
Suora viiva ei sovi hyvin, joten polynomiregressio on sopivampi.
X̃-matriisin rakentaminen
X̃ voidaan luoda lisäämällä neliöidyt piirteet manuaalisesti:
df['Feature_squared'] = df['Feature'] ** 2
Korkeamman asteen tapauksissa PolynomialFeatures on helpompi. Se vaatii kaksiulotteisen rakenteen:
from sklearn.preprocessing import PolynomialFeatures
X = df[['Feature']]
poly = PolynomialFeatures(n)
X_tilde = poly.fit_transform(X)
Lisää myös vakion sarakkeen, joten sm.add_constant() ei ole tarpeen.
Jos X on yksidimensioinen, muunna se:
X = X.reshape(-1, 1)
Polynomiregression rakentaminen
import statsmodels.api as sm
y = df['Target']
X = df[['Feature']]
X_tilde = PolynomialFeatures(n).fit_transform(X)
model = sm.OLS(y, X_tilde).fit()
Ennustaminen vaatii uuden datan muuntamisen samalla tavalla:
X_new_tilde = PolynomialFeatures(n).fit_transform(X_new)
y_pred = model.predict(X_new_tilde)
Kattava esimerkki
123456789101112131415161718import pandas as pd, numpy as np, matplotlib.pyplot as plt import statsmodels.api as sm from sklearn.preprocessing import PolynomialFeatures df = pd.read_csv(file_link) n = 2 X = df[['Feature']] y = df['Target'] X_tilde = PolynomialFeatures(n).fit_transform(X) model = sm.OLS(y, X_tilde).fit() X_new = np.linspace(-0.1, 1.5, 80).reshape(-1,1) X_new_tilde = PolynomialFeatures(n).fit_transform(X_new) y_pred = model.predict(X_new_tilde) plt.scatter(X, y) plt.plot(X_new, y_pred) plt.show()
Kokeile eri n arvoja nähdäksesi, miten käyrä muuttuu ja miten ennusteet käyttäytyvät alkuperäisen ominaisuusalueen ulkopuolella—tämä johdattaa seuraavaan lukuun.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 5.26
Polynomisen Regressiomallin Rakentaminen
Pyyhkäise näyttääksesi valikon
Tiedoston lataaminen
Ladataan poly.csv ja tarkastellaan sitä:
1234import pandas as pd file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/poly.csv' df = pd.read_csv(file_link) print(df.head())
Seuraavaksi visualisoidaan riippuvuus:
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
Suora viiva ei sovi hyvin, joten polynomiregressio on sopivampi.
X̃-matriisin rakentaminen
X̃ voidaan luoda lisäämällä neliöidyt piirteet manuaalisesti:
df['Feature_squared'] = df['Feature'] ** 2
Korkeamman asteen tapauksissa PolynomialFeatures on helpompi. Se vaatii kaksiulotteisen rakenteen:
from sklearn.preprocessing import PolynomialFeatures
X = df[['Feature']]
poly = PolynomialFeatures(n)
X_tilde = poly.fit_transform(X)
Lisää myös vakion sarakkeen, joten sm.add_constant() ei ole tarpeen.
Jos X on yksidimensioinen, muunna se:
X = X.reshape(-1, 1)
Polynomiregression rakentaminen
import statsmodels.api as sm
y = df['Target']
X = df[['Feature']]
X_tilde = PolynomialFeatures(n).fit_transform(X)
model = sm.OLS(y, X_tilde).fit()
Ennustaminen vaatii uuden datan muuntamisen samalla tavalla:
X_new_tilde = PolynomialFeatures(n).fit_transform(X_new)
y_pred = model.predict(X_new_tilde)
Kattava esimerkki
123456789101112131415161718import pandas as pd, numpy as np, matplotlib.pyplot as plt import statsmodels.api as sm from sklearn.preprocessing import PolynomialFeatures df = pd.read_csv(file_link) n = 2 X = df[['Feature']] y = df['Target'] X_tilde = PolynomialFeatures(n).fit_transform(X) model = sm.OLS(y, X_tilde).fit() X_new = np.linspace(-0.1, 1.5, 80).reshape(-1,1) X_new_tilde = PolynomialFeatures(n).fit_transform(X_new) y_pred = model.predict(X_new_tilde) plt.scatter(X, y) plt.plot(X_new, y_pred) plt.show()
Kokeile eri n arvoja nähdäksesi, miten käyrä muuttuu ja miten ennusteet käyttäytyvät alkuperäisen ominaisuusalueen ulkopuolella—tämä johdattaa seuraavaan lukuun.
Kiitos palautteestasi!