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)

results matching ""

    No results matching ""