Як побудувати лінійну регресію в Python або R-stuido
Що таке лінійна регресія?
Це спосіб побудувати модель системи з реального світу в світ статистики. У нашому прикладі в системі ми хочемо відобразити взаємозв'язок між заробітною платою і досвідом. Формула Salary = b0 + b1 X experience це і є модель. Де b0 це стартова точка за браком досвіду - 30 тисяч умовних одиниць. B1 X experience коефіцієнт на досвід, який допомагає відповісти на питання на скільки збільшиться заробітна плата при збільшенні досвіду на 1 рік.
Плюс регресії в машинному навчанні - интерпретируемость. Ви можете легко інетрпретіровать дані, що допоможе вам відповісти на питання які фактори і як впливають на заробітну плату. У нашому випадку фактор тільки один.
Як працює лінійна регресія?
На малюнку ви бачите Y це расчтеное значення моделі (червоний колір) і Y з кришечкою (зелений колір) - фактичне значення. У задачі лінійної регресії ми підбираємо таку модель, щоб сума квадратів різниці була мінімальною.
Будуємо лінійну регресію в Python.
Це робочий код, його можна сміливо копіювати і підставляти потрібні вам значення замість тестоих даних.
Завантажити файл з набором даних можна за посиланням> com/open?id=0Bx1AibZ4BcSAMFNSOGVTemdBeWc> https://drive.google.com/open?id=0Bx1AibZ4BcSAMFNSOGVTemdBeWc
Отже ми отримали результати тренувальної вибірки. Кожна точка це наше значення заробітної плати при певному рівні досвіду. Сінія линяючи - наша модель. Лінія регресії.
Резульата тестової вибірки. Як порахувати точність моделі? У найпростішому варіанті, порівняти наскільки далеко червоні точки знаходяться від синьої лінії - чим далі, тим вище розкид помилки.
# Завантажуємо дані dataset = read.csv ( ": / папка з файлом / Salary_Data.csv", header = T) # Розділимо дані на тренувальну і тестову вибірку # Слід встановити пакет> install.packages ( 'caTools') library (caTools) set.seed (123) split = sample.split (dataset $ Salary, SplitRatio = 2/3) training_set = subset (dataset, split == TRUE) test_set = subset (dataset, split == FALSE) # Навчання простої лінійної регресії regressor = lm (formula = Salary ~ YearsExperience, data = training_set) # Щоб отримати інформацію по моделі введіть summary (regressor) # Застосовуємо отриману модель для прогнозу на тестових даних y_pred = predict (regressor, newdata = test_set) # Візуалізація результатів прогнозу на тренувальних даних даних # in stall.packages ( "gggplo2") library (ggplot2) ## Warning: package 'ggplot2' was built under R version 3.4.2 ggplot () + geom_point (aes (x = training_set $ YearsExperience, y = training_set $ Salary), # визуализируем тренувальний набір даних colour = 'red') + geom_line (aes (x = training_set $ YearsExperience, y = predict (regressor, newdata = training_set)), colour = 'blue') + ggtitle ( 'Прогноз заробітної плати (Тренувальні дані) ') + xlab ( "Досвід роботи") + ylab ( "Заробітна плата") # Візуалізація результатів прогнозу на тестових даних ggplot () + geom_point (aes (x = test_set $ YearsExperience, y = test_set $ Salary), # визуализируем тренувальний набір даних colour = 'red') + geom_line (aes (x = training_set $ YearsExperience, y = predict (regressor, newdata = training_set)), # не змінюємо формулу лінійної регресії. дані залишаємо від тестової вибірки, інакше наша формула буде вже на тестових даних. colour = 'blue') + ggtitle ( 'Прогноз заробітної плати (Тестові дані ) ') + xlab ( "Досвід роботи") + ylab ( "Заробітна плата") # Feature Scaling # training_set = scale (training_set) # test_set = scale (test_set)висновок
Ідеально якщо ви навчилися
- завантажувати дані
- Будувати лінійну регресію з одним факторо
- Вивели графік в R або Python
- В R змогли вивести summary для моделі
Як працює лінійна регресія?
Як працює лінійна регресія?
Com/open?
Як порахувати точність моделі?