Herausforderung: Klassifizierung Untrennbarer Daten
Sie werden den folgenden Datensatz mit zwei Merkmalen verwenden:
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())
Wenn Sie den folgenden Code ausführen und das resultierende Streudiagramm betrachten, werden Sie feststellen, dass der Datensatz nicht linear trennbar ist:
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()
Verwendung von Cross-Validation zur Bewertung einer einfachen logistischen Regression auf diesen Daten:
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}')
Wie Sie sehen, ist die reguläre logistische Regression für diese Aufgabe nicht geeignet. Die Verwendung von polynomialer Regression kann die Modellleistung verbessern. Zusätzlich ermöglicht der Einsatz von GridSearchCV, den optimalen C-Parameter für eine höhere Genauigkeit zu finden.
Diese Aufgabe verwendet außerdem die Klasse Pipeline. Sie kann als Abfolge von Vorverarbeitungsschritten betrachtet werden. Die Methode .fit_transform() wendet .fit_transform() nacheinander auf jeden Schritt in der Pipeline an.
Swipe to start coding
Ihnen wird ein Datensatz zur Verfügung gestellt, der als DataFrame in der Variablen df beschrieben ist.
- Erstellen Sie eine Pipeline, die die polynomialen Merkmale zweiten Grades von
Xenthält und skaliert wird. Speichern Sie die resultierende Pipeline in der Variablenpipe. - Erstellen Sie ein
param_grid-Dictionary mit den Werten[0.01, 0.1, 1, 10, 100]für den HyperparameterC. - Initialisieren und trainieren Sie ein
GridSearchCV-Objekt und speichern Sie das trainierte Objekt in der Variablengrid_cv.
Lösung
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Can you explain how to use polynomial regression with this dataset?
How does GridSearchCV help in finding the optimal C parameter?
What is the purpose of using a Pipeline in this context?
Awesome!
Completion rate improved to 4.17
Herausforderung: Klassifizierung Untrennbarer Daten
Swipe um das Menü anzuzeigen
Sie werden den folgenden Datensatz mit zwei Merkmalen verwenden:
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())
Wenn Sie den folgenden Code ausführen und das resultierende Streudiagramm betrachten, werden Sie feststellen, dass der Datensatz nicht linear trennbar ist:
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()
Verwendung von Cross-Validation zur Bewertung einer einfachen logistischen Regression auf diesen Daten:
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}')
Wie Sie sehen, ist die reguläre logistische Regression für diese Aufgabe nicht geeignet. Die Verwendung von polynomialer Regression kann die Modellleistung verbessern. Zusätzlich ermöglicht der Einsatz von GridSearchCV, den optimalen C-Parameter für eine höhere Genauigkeit zu finden.
Diese Aufgabe verwendet außerdem die Klasse Pipeline. Sie kann als Abfolge von Vorverarbeitungsschritten betrachtet werden. Die Methode .fit_transform() wendet .fit_transform() nacheinander auf jeden Schritt in der Pipeline an.
Swipe to start coding
Ihnen wird ein Datensatz zur Verfügung gestellt, der als DataFrame in der Variablen df beschrieben ist.
- Erstellen Sie eine Pipeline, die die polynomialen Merkmale zweiten Grades von
Xenthält und skaliert wird. Speichern Sie die resultierende Pipeline in der Variablenpipe. - Erstellen Sie ein
param_grid-Dictionary mit den Werten[0.01, 0.1, 1, 10, 100]für den HyperparameterC. - Initialisieren und trainieren Sie ein
GridSearchCV-Objekt und speichern Sie das trainierte Objekt in der Variablengrid_cv.
Lösung
Danke für Ihr Feedback!
single