Regresja liniowa w Pythonie

  • 0 Odpowiedzi
  • 902 Wyświetleń
*

takio

  • Nowy użytkownik
  • *
  • 4
    • Zobacz profil
Regresja liniowa w Pythonie
« dnia: Listopad 18, 2017, 12:56:03 pm »
Cześć,
postanowiłem wrzucić przykład najprostszego zastosowania regresji liniowej w Pythonie. Chyba jest to najprostszy algorytm uczenia maszynowego i najłatwiej go zrozumieć i zobaczyć o co chodzi i na czym to polega :) Zastosuje go do jednej cechy i tylko jedną cechę będę przewidywał, wtedy najłatwiej będzie zrozumieć co się dzieję. Kod jest dosyć standardowy, bo w bibliotece scikit-learn jest utrzymywana cały czas(dla każdej metody) ta sama konwencja tzn. fit i predict.

Na początek łapcie trochę kodu:

import pandas as pd
from sklearn.cross_validation import train_test_split
from sklearn.linear_model  import LinearRegression

t = pd.read_csv('dane.csv', index_col=0)

feature_train, feature_test, pred_train, pred_test = train_test_split(t['feature'], t['pred'], test_size=0.2, random_state=42)

feature_train = pd.DataFrame(data=fearure_train)
feature_test = pd.DataFrame(data=feature_test)

regresja = LinearRegression()
regresja.fit(feature_train,pred_train)

predykcja_na_treningowym = regresja.predict(feature_train)
predykcja_na_testowym = regresja.predict(feature_test)

Trzy pierwsze linijki dość oczywiste - importuje pandasa, i funkcje "from sklearn".
Dalej pobieram dane z csv'ki, zakładam, że są tam dwie kolumny, jedna cecha na podstawie której będziemy przewidywać, a druga przewidywana.
Następnie rozdzielam zbiór na dane treningowe i testowe - w proporcjach 8:2.
To co robię dalej to po prostu z wektora tworzę DataFrame z pandasa, robię to dlatego, że cecha jest po prostu jedna, a powinienem dać DataFrame do algorytmu.
Następnie definiuje, że zmienna regresja jest wynikiem działania funkcji LinearRegression i w następnym wierszu trenuję, tj. dopasowuje model do danych.
Ostatnim krokiem jest po prostu predykcja na zbiorze testowym i treningowym.

Tak w skrócie działa najprostszy algorytm regresji liniowej w Pythonie. Nie ma tu nic specjalnie skomplikowanego. Żeby zrozumieć co zrobił model - wystarczy obie cechy umieścić sobie na osiach na płaszczyźnie i zaznaczyć punktami każdy wiersz, a następnie narysować prostą, która najlepiej dopasowuje się do tych punktów.

Z powyższymi danymi można też iść dalej, obliczając błąd predykcji, zobaczyć czy algorytm się nie przeuczył, tak jak już wspomniałem można dane umieścić na płaszczyźnie, aby lepiej to zobrazować. Tym jednak nie chciałem zajmować się w tym poście. :)
« Ostatnia zmiana: Listopad 18, 2017, 01:06:50 pm wysłana przez takio »