Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Uitdaging: Classificatie van Onscheidbare Gegevens | Sectie
Practice
Projects
Quizzes & Challenges
Quizzen
Challenges
/
Essentiële Supervised Learning

bookUitdaging: Classificatie van Onscheidbare Gegevens

Je gebruikt de volgende dataset met twee kenmerken:

1234
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/circles.csv') print(df.head())
copy

Als je onderstaande code uitvoert en het resulterende spreidingsdiagram bekijkt, zie je dat de dataset niet lineair scheidbaar is:

123456
import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/circles.csv') plt.scatter(df['X1'], df['X2'], c=df['y']) plt.show()
copy

Gebruik cross-validatie om een eenvoudige logistische regressie op deze gegevens te evalueren:

123456789101112131415161718
import pandas as pd import matplotlib.pyplot as plt from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.model_selection import cross_val_score df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/circles.csv') X = df[['X1', 'X2']] y = df['y'] X = StandardScaler().fit_transform(X) lr = LogisticRegression().fit(X, y) y_pred = lr.predict(X) plt.scatter(df['X1'], df['X2'], c=y_pred) plt.show() print(f'Cross-validation accuracy: {cross_val_score(lr, X, y).mean():.2f}')
copy

Zoals je kunt zien, is reguliere Logistische Regressie niet geschikt voor deze taak. Het gebruik van polynomiale regressie kan de prestaties van het model verbeteren. Daarnaast maakt het toepassen van GridSearchCV het mogelijk om de optimale C-parameter te vinden voor een betere nauwkeurigheid.

Constructor:

  • GridSearchCV(estimator, param_grid, scoring, cv = 5)
  • estimator — het modelobject;
  • param_grid — woordenboek met parameterwaarden om te doorzoeken;
    • scoring — de metriek die wordt gebruikt voor de cross-validatiescore;
  • cv — het aantal folds (standaard 5);

Methoden:

  • fit(X, y) — traint de modellen met X, y;
  • predict(X) — voorspelt de klasse voor X;
  • score(X, y) — geeft de nauwkeurigheid voor de X, y-set terug;

Attributen:

  • best_estimator_ — object van het model met de hoogste score;
  • best_score_ — de score van de best_estimator_.

Deze taak maakt ook gebruik van de Pipeline-klasse. Dit kan worden gezien als een reeks van preprocessing-stappen. De .fit_transform()-methode past achtereenvolgens .fit_transform() toe op elke stap in de pipeline.

Taak

Swipe to start coding

Je krijgt een dataset aangeboden als een DataFrame in de variabele df.

  • Maak een pipeline die de polynomiale kenmerken van graad 2 van X bevat, schaal deze en sla de resulterende pipeline op in de variabele pipe.
  • Maak een param_grid-woordenboek met waarden [0.01, 0.1, 1, 10, 100] voor de C-hyperparameter.
  • Initialiseer en train een GridSearchCV-object en sla het getrainde object op in de variabele grid_cv.

Oplossing

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 26
single

single

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

close

bookUitdaging: Classificatie van Onscheidbare Gegevens

Veeg om het menu te tonen

Je gebruikt de volgende dataset met twee kenmerken:

1234
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/circles.csv') print(df.head())
copy

Als je onderstaande code uitvoert en het resulterende spreidingsdiagram bekijkt, zie je dat de dataset niet lineair scheidbaar is:

123456
import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/circles.csv') plt.scatter(df['X1'], df['X2'], c=df['y']) plt.show()
copy

Gebruik cross-validatie om een eenvoudige logistische regressie op deze gegevens te evalueren:

123456789101112131415161718
import pandas as pd import matplotlib.pyplot as plt from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.model_selection import cross_val_score df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/circles.csv') X = df[['X1', 'X2']] y = df['y'] X = StandardScaler().fit_transform(X) lr = LogisticRegression().fit(X, y) y_pred = lr.predict(X) plt.scatter(df['X1'], df['X2'], c=y_pred) plt.show() print(f'Cross-validation accuracy: {cross_val_score(lr, X, y).mean():.2f}')
copy

Zoals je kunt zien, is reguliere Logistische Regressie niet geschikt voor deze taak. Het gebruik van polynomiale regressie kan de prestaties van het model verbeteren. Daarnaast maakt het toepassen van GridSearchCV het mogelijk om de optimale C-parameter te vinden voor een betere nauwkeurigheid.

Constructor:

  • GridSearchCV(estimator, param_grid, scoring, cv = 5)
  • estimator — het modelobject;
  • param_grid — woordenboek met parameterwaarden om te doorzoeken;
    • scoring — de metriek die wordt gebruikt voor de cross-validatiescore;
  • cv — het aantal folds (standaard 5);

Methoden:

  • fit(X, y) — traint de modellen met X, y;
  • predict(X) — voorspelt de klasse voor X;
  • score(X, y) — geeft de nauwkeurigheid voor de X, y-set terug;

Attributen:

  • best_estimator_ — object van het model met de hoogste score;
  • best_score_ — de score van de best_estimator_.

Deze taak maakt ook gebruik van de Pipeline-klasse. Dit kan worden gezien als een reeks van preprocessing-stappen. De .fit_transform()-methode past achtereenvolgens .fit_transform() toe op elke stap in de pipeline.

Taak

Swipe to start coding

Je krijgt een dataset aangeboden als een DataFrame in de variabele df.

  • Maak een pipeline die de polynomiale kenmerken van graad 2 van X bevat, schaal deze en sla de resulterende pipeline op in de variabele pipe.
  • Maak een param_grid-woordenboek met waarden [0.01, 0.1, 1, 10, 100] voor de C-hyperparameter.
  • Initialiseer en train een GridSearchCV-object en sla het getrainde object op in de variabele grid_cv.

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 26
single

single

some-alt