13.1. Wyznaczanie linii

# Wczytanie bibliotek.
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression

# Wygenerowanie macierzy cech i wektora docelowego.
features, target = make_regression(n_samples = 100,
                                   n_features = 3,
                                   n_informative = 2,
                                   n_targets = 1,
                                   noise = 0.2,
                                   coef = False,
                                   random_state = 1)

# Zdefiniowanie regresji liniowej.
regression = LinearRegression()

# Wyznaczenie regresji liniowej.
model = regression.fit(features, target)





# Wyświetlenie punktu przecięcia.
model.intercept_

-0.009650118178816669





# Wyświetlenie współczynników cech.
model.coef_

array([1.95531234e-02, 4.42087450e+01, 5.81494563e+01])





# Pierwsza wartość w wektorze docelowym.
target[0]

-20.870747595269407





# Prognozowanie wartości docelowej pierwszej obserwacji.
model.predict(features)[0]

-20.861927709296808





# Wyświetlenie oceny modelu dla danych uczących.
print(model.score(features, target))

0.9999901732607787





13.2. Obsługa wpływu interakcji

# Wczytanie bibliotek.
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.datasets import make_regression

# Wygenerowanie macierzy cech i wektora docelowego.
features, target = make_regression(n_samples = 100,
                                   n_features = 2,
                                   n_informative = 2,
                                   n_targets = 1,
                                   noise = 0.2,
                                   coef = False,
                                   random_state = 1)

# Utworzenie pewnej interakcji.
interaction = PolynomialFeatures(
    degree=3, include_bias=False, interaction_only=True)
features_interaction = interaction.fit_transform(features)

# Zdefiniowanie regresji liniowej.
regression = LinearRegression()

# Wyznaczenie regresji liniowej.
model = regression.fit(features_interaction, target)





# Wyświetlenie wartości cech dla pierwszej obserwacji.
features[0]

array([ 0.0465673 , 0.80186103])





# Wczytanie biblioteki.
import numpy as np

# Dla każdej obserwacji trzeba pomnożyć wartości pierwszej i drugiej cechy.
interaction_term = np.multiply(features[:, 0], features[:, 1])





# Interakcja dla pierwszej obserwacji.
interaction_term[0]

0.037340501965846186





# Wyświetlenie wartości pierwszej obserwacji.
features_interaction[0]

array([ 0.0465673 , 0.80186103, 0.0373405])





13.3. Wyznaczanie zależności nieliniowej

# Wczytanie bibliotek.
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.datasets import make_regression

# Wygenerowanie macierzy cech i wektora docelowego.
features, target = make_regression(n_samples = 100,
                                   n_features = 3,
                                   n_informative = 2,
                                   n_targets = 1,
                                   noise = 0.2,
                                   coef = False,
                                   random_state = 1)

# Utworzenie cech wielomianowych x^2 i x^3.
polynomial = PolynomialFeatures(degree=3, include_bias=False)
features_polynomial = polynomial.fit_transform(features)

# Zdefiniowanie regresji liniowej.
regression = LinearRegression()

# Wyznaczenie regresji liniowej.
model = regression.fit(features_polynomial, target)





# Wyświetlenie pierwszej obserwacji.
features[0]

array([-0.61175641])





# Wyświetlenie pierwszej obserwacji podniesionej do potęgi drugiej: x^2.
features[0]**2

array([0.37424591])





# Wyświetlenie pierwszej obserwacji podniesionej do potęgi trzeciej: x^3.
features[0]**3

array([-0.22894734])





# Wyświetlenie wartości pierwszej obserwacji dla x, x^2 i x^3.
features_polynomial[0]

array([ -0.61175641,  0.37424591, -0.22894734])





13.4. Redukowanie wariancji za pomocą regularyzacji

# Wczytanie bibliotek.
from sklearn.linear_model import Ridge
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import make_regression

# Wygenerowanie macierzy cech i wektora docelowego.
features, target = make_regression(n_samples = 100,
                                   n_features = 3,
                                   n_informative = 2,
                                   n_targets = 1,
                                   noise = 0.2,
                                   coef = False,
                                   random_state = 1)

# Standaryzacja cech.
scaler = StandardScaler()
features_standardized = scaler.fit_transform(features)

# Zdefiniowanie regresji grzbietowej z wartością alfa.
regression = Ridge(alpha=0.5)

# Wyznaczenie regresji liniowej.
model = regression.fit(features_standardized, target)





# Wczytanie biblioteki.
from sklearn.linear_model import RidgeCV

# Zdefiniowanie regresji grzbietowej z trzema wartościami alfa.
regr_cv = RidgeCV(alphas=[0.1, 1.0, 10.0])

# Wyznaczenie regresji liniowej.
model_cv = regr_cv.fit(features_standardized, target)

# Wyświetlenie współczynników.
model_cv.coef_

array([1.29223201e-02, 4.40972291e+01, 5.38979372e+01])





# Wyświetlenie wartości alfa.
model_cv.alpha_

0.1





13.5. Redukowanie cech za pomocą regresji metodą LASSO

# Wczytanie bibliotek.
from sklearn.linear_model import Lasso
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import make_regression

# Wygenerowanie macierzy cech i wektora docelowego.
features, target = make_regression(n_samples = 100,
                                   n_features = 3,
                                   n_informative = 2,
                                   n_targets = 1,
                                   noise = 0.2,
                                   coef = False,
                                   random_state = 1)

# Standaryzacja cech.
scaler = StandardScaler()
features_standardized = scaler.fit_transform(features)

# Zdefiniowanie regresji metodą LASSO z wartością alfa.
regression = Lasso(alpha=0.5)

# Wyznaczenie regresji liniowej.
model = regression.fit(features_standardized, target)





# Wyświetlenie współczynników.
model.coef_

array([-0.        , 43.58618393, 53.39523724])





# Zdefiniowanie regresji metodą LASSO z dużą wartością alfa.
regression_a10 = Lasso(alpha=10)
model_a10 = regression_a10.fit(features_standardized, target)
model_a10.coef_

array([-0.        , 32.92181899, 42.73086731])
