Wczytanie zmiennych:
# Importing the dataset
dataset = read.csv('50_Startups.csv')
Ponieważ jedna zmienna ma charakter zmiennej skategoryzowanej, wykonanie enkodowania tej zmiennej do wartości numerycznych:
# Encoding categorical data
dataset$State = factor(dataset$State,
levels = c('New York', 'California', 'Florida'),
labels = c(1, 2, 3))
Rozdzielenie zbioru na zbiór treningowy i testowy i nauczenie modelu:
# Splitting the dataset into the Training set and Test set
# install.packages('caTools')
library(caTools)
set.seed(123)
split = sample.split(dataset$Profit, SplitRatio = 0.8)
training_set = subset(dataset, split == TRUE)
test_set = subset(dataset, split == FALSE)
# Fitting Multiple Linear Regression to the Training set
regressor = lm(formula = Profit ~ .,
data = training_set)
Specyfikacja formuły Profit ~ . oznacza, że zmienna Profit jest zależna od wszystkich pozostałych zmiennych. Można byłoby to zapisać w trochę bardziej skomplikowany sposób: Profit ~ R.D.Spend + Administration + Marketing.Spend + State
W tym miejscu daje się poznać piękno języka R, bo po wywołaniu polecenia:
summary(regressor)
Dostaniemy statystyki dotyczące naszego modelu:
Residuals:
Min 1Q Median 3Q Max
-33128 -4865 5 6098 18065
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 4.965e+04 7.637e+03 6.501 1.94e-07 ***
R.D.Spend 7.986e-01 5.604e-02 14.251 6.70e-16 ***
Administration -2.942e-02 5.828e-02 -0.505 0.617
Marketing.Spend 3.268e-02 2.127e-02 1.537 0.134
State2 1.213e+02 3.751e+03 0.032 0.974
State3 2.376e+02 4.127e+03 0.058 0.954
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Z tej tabeli można zauważyć, że R świetnie poradził sobie ze zmienną skategoryzowaną State, która zamienił na trzy zmienne i jedną z nich wyrzucił, aby uniknąć tzw. dummy variable trap.
No i jeszcze sposób na predykcję wartości dla zbioru testowego:
# Predicting the Test set results
y_pred = predict(regressor, newdata = test_set)