Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Das Modell Bewerten | Polynomiale Regression
Lineare Regression mit Python

book
Das Modell Bewerten

In dieser Herausforderung erhalten Sie den altbekannten Housing-Datensatz, diesmal jedoch nur mit dem Merkmal 'age'.

import pandas as pd

df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/houses_poly.csv')
print(df.head())
1234
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/houses_poly.csv') print(df.head())
copy

Lassen Sie uns ein Streudiagramm dieser Daten erstellen.

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/houses_poly.csv')
X = df['age']
y = df['price']
plt.scatter(X, y, alpha=0.4)
plt.show()
12345678
import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/houses_poly.csv') X = df['age'] y = df['price'] plt.scatter(X, y, alpha=0.4) plt.show()
copy

Eine Gerade an diese Daten anzupassen, ist möglicherweise keine gute Wahl. Der Preis steigt sowohl für brandneue als auch für sehr alte Häuser. Eine Parabel anzupassen, scheint die bessere Wahl zu sein. Und genau das werden Sie in dieser Herausforderung tun.

Aber bevor Sie beginnen, erinnern Sie sich an die PolynomialFeatures-Klasse.

Die Methode fit_transform(X) erfordert, dass X ein 2-D-Array (oder ein DataFrame) ist.
Verwenden Sie X = df[['column_name']], um Ihr X für fit_transform() geeignet zu machen.
Und wenn Sie ein 1-D-Array haben, verwenden Sie .reshape(-1, 1), um ein 2-D-Array mit denselben Inhalten zu erstellen.

Die Aufgabe besteht darin, eine Polynomialregression zweiten Grades mit PolynomialFeatures und OLS zu erstellen.

Aufgabe

Swipe to start coding

  1. Weisen Sie die Variable X einem DataFrame zu, das die Spalte 'age' enthält.
  2. Erstellen Sie eine X_tilde-Matrix mit der Klasse PolynomialFeatures.
  3. Erstellen und trainieren Sie ein Polynomialregressionsmodell.
  4. Formen Sie X_new in ein 2-D-Array um.
  5. Verarbeiten Sie X_new auf die gleiche Weise wie X.
  6. Drucken Sie die Parameter des Modells aus.

Lösung

import pandas as pd
import numpy as np
import statsmodels.api as sm
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures

df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/houses_poly.csv')
# Assign the variables
X = df[['age']]
y = df['price']
n = 2 # A degree of Polynomial Regression
# Preprocess X
X_tilde = PolynomialFeatures(n).fit_transform(X)
# Build and train the model
model = sm.OLS(y, X_tilde).fit()
# Create and preprocess X_new
X_new = np.linspace(0, 125, 200).reshape(-1, 1)
X_new_tilde = PolynomialFeatures(n).fit_transform(X_new)
# Predict the target for X_new
y_pred = model.predict(X_new_tilde)
# Visualize the result
plt.scatter(X, y, alpha=0.4)
plt.plot(X_new, y_pred, color='orange')
plt.show()
# Print the model's parameters
print(model.params)

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 5
import pandas as pd
import numpy as np
import statsmodels.api as sm
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures

df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/houses_poly.csv')
# Assign the variables
X = df[['___']]
y = df['price']
n = 2 # A degree of Polynomial Regression
# Preprocess X
X_tilde = PolynomialFeatures(n).___(X)
# Build and train the model
model = sm.OLS(y, ___).fit()
# Create and preprocess X_new
X_new = np.linspace(0, 125, 200).___(-1, 1)
X_new_tilde = ___(n).fit_transform(___)
# Predict the target for X_new
y_pred = model.predict(X_new_tilde)
# Visualize the result
plt.scatter(X, y, alpha=0.4)
plt.plot(X_new, y_pred, color='orange')
plt.show()
# Print the model's parameters
print(model.___)
toggle bottom row
some-alt