Uitdaging: Classificatie van Onscheidbare Gegevens
Je gebruikt de volgende dataset met twee kenmerken:
1234import 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())
Als je onderstaande code uitvoert en het resulterende spreidingsdiagram bekijkt, zie je dat de dataset niet lineair scheidbaar is:
123456import 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()
Gebruik cross-validatie om een eenvoudige logistische regressie op deze gegevens te evalueren:
123456789101112131415161718import 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}')
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 debest_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.
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
Xbevat, schaal deze en sla de resulterende pipeline op in de variabelepipe. - Maak een
param_grid-woordenboek met waarden[0.01, 0.1, 1, 10, 100]voor deC-hyperparameter. - Initialiseer en train een
GridSearchCV-object en sla het getrainde object op in de variabelegrid_cv.
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Geweldig!
Completion tarief verbeterd naar 3.33
Uitdaging: Classificatie van Onscheidbare Gegevens
Veeg om het menu te tonen
Je gebruikt de volgende dataset met twee kenmerken:
1234import 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())
Als je onderstaande code uitvoert en het resulterende spreidingsdiagram bekijkt, zie je dat de dataset niet lineair scheidbaar is:
123456import 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()
Gebruik cross-validatie om een eenvoudige logistische regressie op deze gegevens te evalueren:
123456789101112131415161718import 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}')
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 debest_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.
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
Xbevat, schaal deze en sla de resulterende pipeline op in de variabelepipe. - Maak een
param_grid-woordenboek met waarden[0.01, 0.1, 1, 10, 100]voor deC-hyperparameter. - Initialiseer en train een
GridSearchCV-object en sla het getrainde object op in de variabelegrid_cv.
Oplossing
Bedankt voor je feedback!
single