Polynomiregression Rakentaminen
Tiedoston lataaminen
Tässä luvussa käytämme tiedostoa nimeltä poly.csv
, jonka lataamme 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 hajontakaavio, jotta voidaan ymmärtää ominaisuuden ja kohteen välinen suhde:
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, se 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)
-menetelmä odottaa, että X on joko kaksiulotteinen taulukko tai pandas DataFrame.
Jos X on yksidimensioinen numpy-taulukko, reshape(-1,1)
-menetelmä muuntaa sen kaksiulotteiseksi taulukoksi, jossa on samat arvot:
X = X.reshape(-1,1)
Jos X on DataFrame:n sarake, voit käyttää X = df[['col1']]
saadaksesi DataFrame:n pandas Seriesin sijaan, joka ei sovellu fit_transform()
-menetelmälle:
X = df['Feature'] # X is a pandas Series
X = df[['Feature']] # X is a pandas DataFrame
Rakentaaksemme X̃ polynomiregressiolle asteelle n
, käytämme 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()
-menetelmää.
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ä yksidimensioinen taulukko pisteistä välillä -0.1 ja 1.5. Näitä tarvitaan visualisointia varten. Koska kyseessä on yksidimensioinen taulukko, siihen tulee soveltaa reshape(-1,1)
-metodia ennen 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 piirre-arvot ovat pienempiä kuin 0 tai suurempia kuin 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
Can you explain what the X̃ matrix represents in polynomial regression?
How does the PolynomialFeatures class work in practice?
What happens if I increase the degree n in the polynomial regression?
Awesome!
Completion rate improved to 5.26
Polynomiregression Rakentaminen
Pyyhkäise näyttääksesi valikon
Tiedoston lataaminen
Tässä luvussa käytämme tiedostoa nimeltä poly.csv
, jonka lataamme 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 hajontakaavio, jotta voidaan ymmärtää ominaisuuden ja kohteen välinen suhde:
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, se 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)
-menetelmä odottaa, että X on joko kaksiulotteinen taulukko tai pandas DataFrame.
Jos X on yksidimensioinen numpy-taulukko, reshape(-1,1)
-menetelmä muuntaa sen kaksiulotteiseksi taulukoksi, jossa on samat arvot:
X = X.reshape(-1,1)
Jos X on DataFrame:n sarake, voit käyttää X = df[['col1']]
saadaksesi DataFrame:n pandas Seriesin sijaan, joka ei sovellu fit_transform()
-menetelmälle:
X = df['Feature'] # X is a pandas Series
X = df[['Feature']] # X is a pandas DataFrame
Rakentaaksemme X̃ polynomiregressiolle asteelle n
, käytämme 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()
-menetelmää.
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ä yksidimensioinen taulukko pisteistä välillä -0.1 ja 1.5. Näitä tarvitaan visualisointia varten. Koska kyseessä on yksidimensioinen taulukko, siihen tulee soveltaa reshape(-1,1)
-metodia ennen 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 piirre-arvot ovat pienempiä kuin 0 tai suurempia kuin 1.4. Tämä on seuraavan luvun aihe.
Kiitos palautteestasi!