single
Завдання: Класифікація нероздільних даних
Свайпніть щоб показати меню
Ви будете використовувати наступний набір даних з двома ознаками:
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())
Якщо виконати наведений нижче код і переглянути отриманий точковий графік, ви побачите, що набір даних не є лінійно роздільним:
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()
Використання крос-валідації для оцінки простої логістичної регресії на цих даних:
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}')
Як видно, звичайна логістична регресія не підходить для цього завдання. Використання поліноміальної регресії може допомогти покращити продуктивність моделі. Додатково, застосування GridSearchCV дозволяє знайти оптимальний параметр C для підвищення точності.
Конструктор:
GridSearchCV(estimator, param_grid, scoring, cv = 5)estimator— об'єкт моделі;param_grid— словник із параметрами для перебору;scoring— метрика для оцінки під час крос-валідації;
cv— кількість фолдів (за замовчуванням 5);
Методи:
fit(X, y)— навчання моделей на X, y;predict(X)— прогнозування класу для X;score(X, y)— повертає точність для набору X, y;
Атрибути:
best_estimator_— об'єкт моделі з найвищою оцінкою;best_score_— оцінка дляbest_estimator_.
У цьому завданні також використовується клас Pipeline. Його можна розглядати як послідовність кроків попередньої обробки. Метод .fit_transform() послідовно застосовує .fit_transform() до кожного кроку в конвеєрі.
Swipe to start coding
Вам надано набір даних, представлений як DataFrame у змінній df.
- Створіть конвеєр, який міститиме поліноміальні ознаки ступеня 2 для
X, виконає масштабування, і збережіть отриманий конвеєр у зміннійpipe. - Створіть словник
param_gridіз значеннями[0.01, 0.1, 1, 10, 100]для гіперпараметраC. - Ініціалізуйте та навчіть об'єкт
GridSearchCVі збережіть навчений об'єкт у зміннійgrid_cv.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат