Polynomisen Regressiomallin Rakentaminen
Tiedoston lataaminen
Tässä luvussa käytetään tiedostoa nimeltä poly.csv
, jonka lataamme ensin ja tarkastelemme sen sisältöä:
123456import 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(5))
Tässä on yksi ominaisuus ja kohde. Seuraavaksi rakennetaan hajontakuvio, jotta voidaan ymmärtää ominaisuuden ja kohteen välistä suhdetta:
123456789import pandas as pd import matplotlib.pyplot as plt 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) X = df['Feature'] y = df['Target'] plt.scatter(X,y) plt.show()
On vaikea kuvitella, että suora viiva sopisi tähän dataan hyvin, joten polynomiregressio on huomattavasti parempi valinta.
X̃-matriisin rakentaminen
Käytämme jälleen OLS
-luokkaa. Meidän täytyy kuitenkin luoda X̃-matriisi. Tämä tehdään manuaalisesti lisäämällä DataFrameen korotettu 'Feature'
-sarake seuraavasti:
df['Feature_squared'] = df['Feature'] ** 2
Jos haluamme rakentaa korkeamman asteen polynomiregression, tämä vaatii useiden tällaisten sarakkeiden lisäämistä. Onneksi Scikit-Learn tarjoaa helpomman tavan tehdä tämä käyttämällä PolynomialFeatures
-luokkaa.
fit_transform(X)
-metodi odottaa, että X on joko kaksiulotteinen taulukko tai pandas DataFrame.
Jos X on yksidimensioinen numpy-taulukko, reshape(-1,1)
-metodi muuntaa sen kaksiulotteiseksi taulukoksi, jossa on samat arvot:
X = X.reshape(-1,1)
Jos X on DataFramen sarake, voit käyttää X = df[['col1']]
saadaksesi DataFramen pandas Seriesin sijaan, joka ei sovellu fit_transform()
-metodille:
X = df['Feature'] # X is a pandas Series
X = df[['Feature']] # X is a pandas DataFrame
Rakentaaksesi X̃ polynomiregressiolle asteella n
, käytetään seuraavaa:
from sklearn.preprocessing import PolynomialFeatures # Import the class
poly = PolynomialFeatures(n) # Initialize a PolynomialFeatures object
X_tilde = poly.fit_transform(X)
PolynomialFeatures
-luokka lisää myös sarakkeen, jossa on pelkkiä ykkösiä, joten sinun ei tarvitse käyttää sm.add_constant()
-funktiota.
Polynomiaalisen regressiomallin rakentaminen ja ennusteiden tekeminen
Kun tiedämme, miten saadaan X̃, olemme valmiita rakentamaan polynomiaalisen regressiomallin samalla tavalla kuin aiemmat mallit:
y = df['Target']
# Prepare X_tilde
X = df[['Feature']]
X_tilde = PolynomialFeatures(n).fit_transform(X)
# Initialize the OLS object and train it
regression_model = sm.OLS(y, X_tilde).fit()
Uusien arvojen ennustamista varten myös X_new
tulee muuntaa käyttäen PolynomialFeatures
-luokkaa.
X_new_tilde = PolynomialFeatures(n).fit_transform(X_new)
y_pred = regression_model.predict(X_new_tilde)
Seuraava suoritettava esimerkki näyttää koko prosessin polynomiaalisen regressiomallin rakentamisesta. X_new
on tässä 1-ulotteinen taulukko pisteistä välillä -0.1 ja 1.5. Näitä tarvitaan visualisointia varten. Koska kyseessä on 1-ulotteinen taulukko, tulee käyttää reshape(-1,1)
-metodia ennen sen käyttöä PolynomialFeatures-luokassa.
12345678910111213141516171819import pandas as pd import numpy as np import matplotlib.pyplot as plt import statsmodels.api as sm from sklearn.preprocessing import PolynomialFeatures # Import PolynomialFeatures class 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) n = 2 # A degree of the polynomial regression X = df[['Feature']] # Assign X as a DataFrame y = df['Target'] # Assign y X_tilde = PolynomialFeatures(n).fit_transform(X) # Get X_tilde regression_model = sm.OLS(y, X_tilde).fit() # Initialize and train the model X_new = np.linspace(-0.1, 1.5, 80).reshape(-1,1) # 2-d array of new feature values X_new_tilde = PolynomialFeatures(n).fit_transform(X_new) # Transform X_new for predict() method y_pred = regression_model.predict(X_new_tilde) plt.scatter(X, y) # Build a scatterplot plt.plot(X_new, y_pred) # Build a Polynomial Regression graph plt.show()
Voit vapaasti kokeilla eri n
-arvoja kahdeksannella rivillä. Näet, miten kuvaaja muuttuu polynomiregression asteen mukaan. Jos kiinnität huomiota, saatat huomata, kuinka erilaisia ennusteet ovat, kun piirteen arvo on alle 0 tai yli 1.4. Tämä on seuraavan luvun aihe.
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
Tässä luvussa käytetään tiedostoa nimeltä poly.csv
, jonka lataamme ensin ja tarkastelemme sen sisältöä:
123456import 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(5))
Tässä on yksi ominaisuus ja kohde. Seuraavaksi rakennetaan hajontakuvio, jotta voidaan ymmärtää ominaisuuden ja kohteen välistä suhdetta:
123456789import pandas as pd import matplotlib.pyplot as plt 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) X = df['Feature'] y = df['Target'] plt.scatter(X,y) plt.show()
On vaikea kuvitella, että suora viiva sopisi tähän dataan hyvin, joten polynomiregressio on huomattavasti parempi valinta.
X̃-matriisin rakentaminen
Käytämme jälleen OLS
-luokkaa. Meidän täytyy kuitenkin luoda X̃-matriisi. Tämä tehdään manuaalisesti lisäämällä DataFrameen korotettu 'Feature'
-sarake seuraavasti:
df['Feature_squared'] = df['Feature'] ** 2
Jos haluamme rakentaa korkeamman asteen polynomiregression, tämä vaatii useiden tällaisten sarakkeiden lisäämistä. Onneksi Scikit-Learn tarjoaa helpomman tavan tehdä tämä käyttämällä PolynomialFeatures
-luokkaa.
fit_transform(X)
-metodi odottaa, että X on joko kaksiulotteinen taulukko tai pandas DataFrame.
Jos X on yksidimensioinen numpy-taulukko, reshape(-1,1)
-metodi muuntaa sen kaksiulotteiseksi taulukoksi, jossa on samat arvot:
X = X.reshape(-1,1)
Jos X on DataFramen sarake, voit käyttää X = df[['col1']]
saadaksesi DataFramen pandas Seriesin sijaan, joka ei sovellu fit_transform()
-metodille:
X = df['Feature'] # X is a pandas Series
X = df[['Feature']] # X is a pandas DataFrame
Rakentaaksesi X̃ polynomiregressiolle asteella n
, käytetään seuraavaa:
from sklearn.preprocessing import PolynomialFeatures # Import the class
poly = PolynomialFeatures(n) # Initialize a PolynomialFeatures object
X_tilde = poly.fit_transform(X)
PolynomialFeatures
-luokka lisää myös sarakkeen, jossa on pelkkiä ykkösiä, joten sinun ei tarvitse käyttää sm.add_constant()
-funktiota.
Polynomiaalisen regressiomallin rakentaminen ja ennusteiden tekeminen
Kun tiedämme, miten saadaan X̃, olemme valmiita rakentamaan polynomiaalisen regressiomallin samalla tavalla kuin aiemmat mallit:
y = df['Target']
# Prepare X_tilde
X = df[['Feature']]
X_tilde = PolynomialFeatures(n).fit_transform(X)
# Initialize the OLS object and train it
regression_model = sm.OLS(y, X_tilde).fit()
Uusien arvojen ennustamista varten myös X_new
tulee muuntaa käyttäen PolynomialFeatures
-luokkaa.
X_new_tilde = PolynomialFeatures(n).fit_transform(X_new)
y_pred = regression_model.predict(X_new_tilde)
Seuraava suoritettava esimerkki näyttää koko prosessin polynomiaalisen regressiomallin rakentamisesta. X_new
on tässä 1-ulotteinen taulukko pisteistä välillä -0.1 ja 1.5. Näitä tarvitaan visualisointia varten. Koska kyseessä on 1-ulotteinen taulukko, tulee käyttää reshape(-1,1)
-metodia ennen sen käyttöä PolynomialFeatures-luokassa.
12345678910111213141516171819import pandas as pd import numpy as np import matplotlib.pyplot as plt import statsmodels.api as sm from sklearn.preprocessing import PolynomialFeatures # Import PolynomialFeatures class 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) n = 2 # A degree of the polynomial regression X = df[['Feature']] # Assign X as a DataFrame y = df['Target'] # Assign y X_tilde = PolynomialFeatures(n).fit_transform(X) # Get X_tilde regression_model = sm.OLS(y, X_tilde).fit() # Initialize and train the model X_new = np.linspace(-0.1, 1.5, 80).reshape(-1,1) # 2-d array of new feature values X_new_tilde = PolynomialFeatures(n).fit_transform(X_new) # Transform X_new for predict() method y_pred = regression_model.predict(X_new_tilde) plt.scatter(X, y) # Build a scatterplot plt.plot(X_new, y_pred) # Build a Polynomial Regression graph plt.show()
Voit vapaasti kokeilla eri n
-arvoja kahdeksannella rivillä. Näet, miten kuvaaja muuttuu polynomiregression asteen mukaan. Jos kiinnität huomiota, saatat huomata, kuinka erilaisia ennusteet ovat, kun piirteen arvo on alle 0 tai yli 1.4. Tämä on seuraavan luvun aihe.
Kiitos palautteestasi!