Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Завдання: Класифікація нероздільних даних | Секція
Основи Контрольованого Навчання

bookЗавдання: Класифікація нероздільних даних

Ви будете використовувати наступний набір даних з двома ознаками:

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

Якщо виконати наведений нижче код і переглянути отриманий точковий графік, ви побачите, що набір даних не є лінійно роздільним:

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

Використання крос-валідації для оцінки простої логістичної регресії на цих даних:

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

Як видно, звичайна логістична регресія не підходить для цього завдання. Використання поліноміальної регресії може допомогти покращити продуктивність моделі. Додатково, застосування 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.

Рішення

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 26
single

single

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

close

bookЗавдання: Класифікація нероздільних даних

Свайпніть щоб показати меню

Ви будете використовувати наступний набір даних з двома ознаками:

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

Якщо виконати наведений нижче код і переглянути отриманий точковий графік, ви побачите, що набір даних не є лінійно роздільним:

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

Використання крос-валідації для оцінки простої логістичної регресії на цих даних:

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

Як видно, звичайна логістична регресія не підходить для цього завдання. Використання поліноміальної регресії може допомогти покращити продуктивність моделі. Додатково, застосування 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.

Рішення

Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 26
single

single

some-alt