<
  • Главная
Статьи

Як побудувати лінійну регресію в Python або R-stuido

  1. Що таке лінійна регресія?
  2. Як працює лінійна регресія?
  3. Будуємо лінійну регресію в Python.
  4. висновок

Що таке лінійна регресія?

Це спосіб побудувати модель системи з реального світу в світ статистики. У нашому прикладі в системі ми хочемо відобразити взаємозв'язок між заробітною платою і досвідом. Формула 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

# Завантажуємо бібліотеки import numpy as np # робота з векторами import matplotlib.pyplot as plt # малювати графіки import pandas as pd # для роботи з матрицями import os as os # для зміни директорії # Встановимо директорію для завантаження даних для моделі os.chdir ( ' C: / папка з файлом ') # завантажуємо дані dataset = pd.read_csv (' Salary_Data.csv ') # створюємо Y змінну = заробітні плати і Х перменная, в нашому випадку тільки # один набір = досвід # інакше Y називають залежною змінною а Х контролює X = dataset.iloc [:,: -1] .values ​​y = dataset.iloc [:, 1] .values ​​# Розділимо дані на тренувальну і тестову вибірку # random_state = дозволяє отримувати завжди однакове розбиття вибірки # X пишемо звеликою літери це вектор. from sklearn.cross_validation import train_test_split X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 1/3, random_state = 0) # Тренування лінійної регресії на тренувальному наборі даних from sklearn.linear_model import LinearRegression # Створюємо регресорів як метод, не вказуємо додаткові параметри regressor = LinearRegression () # Тренеруем модель на тренувальних даних. regressor.fit (X_train, y_train) # ваша перша модель машинного навчання! # Прогнозуємо результати тестової вибірки # Різниця між y_pred і y_test в тому, що y_pred це прогнозні значення # Тепер ми можемо порівняти їх з тестовими значеннями y_pred = regressor.predict (X_test) # Візуалізація результатів тестового набір даних plt.scatter (X_train, y_train, color = 'red') plt.plot (X_train, regressor.predict (X_train), color = 'blue') plt.title ( 'Заробітна плата vs Досвід (Тренувальні дані)') plt.xlabel ( 'Досвід в роках') plt.ylabel ( "Заробітна плата") # plt.show () # команда для відображення графіка в python. Прибрати коментар спочатку рядки, щоб побачити графік. # Plt.savefig ( 'graph.png', bbox_inches = 'tight') # технічний трюк # Візуалізація результатів тестового набір даних plt.scatter (X_test, y_test, color = 'red') # лінію регресії не змінюємо. Ми отримаємо тестові і оцінимо як лінія регресії # описує тестовий набір plt.plot (X_train, regressor.predict (X_train), color = 'blue') plt.title ( 'Заробітна плата vs Досвід (Тренувальні дані)') plt.xlabel ( 'Досвід в роках') plt.ylabel ( "Заробітна плата") plt.show

Отже ми отримали результати тренувальної вибірки. Кожна точка це наше значення заробітної плати при певному рівні досвіду. Сінія линяючи - наша модель. Лінія регресії.

Резульата тестової вибірки. Як порахувати точність моделі? У найпростішому варіанті, порівняти наскільки далеко червоні точки знаходяться від синьої лінії - чим далі, тим вище розкид помилки.

# Завантажуємо дані 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?
Як порахувати точність моделі?


Новости
  • Виртуальный хостинг

    Виртуальный хостинг. Возможности сервера распределяются в равной мере между всеми... 
    Читать полностью

  • Редизайн сайта

    Редизайн сайта – это полное либо частичное обновление дизайна существующего сайта.... 
    Читать полностью

  • Консалтинг, услуги контент-менеджера

    Сопровождение любых интернет ресурсов;- Знание HTML и CSS- Поиск и обновление контента;-... 
    Читать полностью

  • Трафик из соцсетей

    Сравнительно дешевый способ по сравнению с поисковым и контекстным видами раскрутки... 
    Читать полностью

  • Поисковая оптимизация

    Поисковая оптимизация (англ. search engine optimization, SEO) — поднятие позиций сайта в результатах... 
    Читать полностью