AI avec Python - Apprentissage supervisé: régression

La régression est l'un des outils statistiques et d'apprentissage automatique les plus importants. Nous n'aurions pas tort de dire que le parcours de l'apprentissage automatique part de la régression. Elle peut être définie comme la technique paramétrique qui nous permet de prendre des décisions basées sur des données ou en d'autres termes nous permet de faire des prédictions basées sur des données en apprenant la relation entre les variables d'entrée et de sortie. Ici, les variables de sortie dépendant des variables d'entrée sont des nombres réels à valeur continue. Dans la régression, la relation entre les variables d'entrée et de sortie est importante et elle nous aide à comprendre comment la valeur de la variable de sortie change avec le changement de variable d'entrée. La régression est fréquemment utilisée pour prédire les prix, l'économie, les variations, etc.

Construire des régresseurs en Python

Dans cette section, nous allons apprendre à créer un régresseur unique et multivariable.

Régresseur linéaire / Régresseur à variable unique

Laissez-nous quelques paquets requis importants -

import numpy as np
from sklearn import linear_model
import sklearn.metrics as sm
import matplotlib.pyplot as plt

Maintenant, nous devons fournir les données d'entrée et nous avons sauvegardé nos données dans le fichier nommé linear.txt.

input = 'D:/ProgramData/linear.txt'

Nous devons charger ces données en utilisant le np.loadtxt fonction.

input_data = np.loadtxt(input, delimiter=',')
X, y = input_data[:, :-1], input_data[:, -1]

La prochaine étape serait de former le modèle. Laissez-nous donner des échantillons de formation et de test.

training_samples = int(0.6 * len(X))
testing_samples = len(X) - num_training

X_train, y_train = X[:training_samples], y[:training_samples]

X_test, y_test = X[training_samples:], y[training_samples:]

Maintenant, nous devons créer un objet régresseur linéaire.

reg_linear = linear_model.LinearRegression()

Entraînez l'objet avec les échantillons d'apprentissage.

reg_linear.fit(X_train, y_train)

Nous devons faire la prédiction avec les données de test.

y_test_pred = reg_linear.predict(X_test)

Maintenant, tracez et visualisez les données.

plt.scatter(X_test, y_test, color = 'red')
plt.plot(X_test, y_test_pred, color = 'black', linewidth = 2)
plt.xticks(())
plt.yticks(())
plt.show()

Production

Maintenant, nous pouvons calculer les performances de notre régression linéaire comme suit -

print("Performance of Linear regressor:")
print("Mean absolute error =", round(sm.mean_absolute_error(y_test, y_test_pred), 2))
print("Mean squared error =", round(sm.mean_squared_error(y_test, y_test_pred), 2))
print("Median absolute error =", round(sm.median_absolute_error(y_test, y_test_pred), 2))
print("Explain variance score =", round(sm.explained_variance_score(y_test, y_test_pred),
2))
print("R2 score =", round(sm.r2_score(y_test, y_test_pred), 2))

Production

Performance du régresseur linéaire -

Mean absolute error = 1.78
Mean squared error = 3.89
Median absolute error = 2.01
Explain variance score = -0.09
R2 score = -0.09

Dans le code ci-dessus, nous avons utilisé ces petites données. Si vous voulez un grand ensemble de données, vous pouvez utiliser sklearn.dataset pour importer un plus grand ensemble de données.

2,4.82.9,4.72.5,53.2,5.56,57.6,43.2,0.92.9,1.92.4,
3.50.5,3.41,40.9,5.91.2,2.583.2,5.65.1,1.54.5,
1.22.3,6.32.1,2.8

Régresseur multivariable

Tout d'abord, importons quelques packages requis -

import numpy as np
from sklearn import linear_model
import sklearn.metrics as sm
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures

Maintenant, nous devons fournir les données d'entrée et nous avons sauvegardé nos données dans le fichier nommé linear.txt.

input = 'D:/ProgramData/Mul_linear.txt'

Nous chargerons ces données en utilisant le np.loadtxt fonction.

input_data = np.loadtxt(input, delimiter=',')
X, y = input_data[:, :-1], input_data[:, -1]

La prochaine étape serait de former le modèle; nous donnerons des échantillons de formation et de test.

training_samples = int(0.6 * len(X))
testing_samples = len(X) - num_training

X_train, y_train = X[:training_samples], y[:training_samples]

X_test, y_test = X[training_samples:], y[training_samples:]

Maintenant, nous devons créer un objet régresseur linéaire.

reg_linear_mul = linear_model.LinearRegression()

Entraînez l'objet avec les échantillons d'apprentissage.

reg_linear_mul.fit(X_train, y_train)

Maintenant, nous devons enfin faire la prédiction avec les données de test.

y_test_pred = reg_linear_mul.predict(X_test)

print("Performance of Linear regressor:")
print("Mean absolute error =", round(sm.mean_absolute_error(y_test, y_test_pred), 2))
print("Mean squared error =", round(sm.mean_squared_error(y_test, y_test_pred), 2))
print("Median absolute error =", round(sm.median_absolute_error(y_test, y_test_pred), 2))
print("Explain variance score =", round(sm.explained_variance_score(y_test, y_test_pred), 2))
print("R2 score =", round(sm.r2_score(y_test, y_test_pred), 2))

Production

Performance du régresseur linéaire -

Mean absolute error = 0.6
Mean squared error = 0.65
Median absolute error = 0.41
Explain variance score = 0.34
R2 score = 0.33

Maintenant, nous allons créer un polynôme de degré 10 et former le régresseur. Nous fournirons l'exemple de point de données.

polynomial = PolynomialFeatures(degree = 10)
X_train_transformed = polynomial.fit_transform(X_train)
datapoint = [[2.23, 1.35, 1.12]]
poly_datapoint = polynomial.fit_transform(datapoint)

poly_linear_model = linear_model.LinearRegression()
poly_linear_model.fit(X_train_transformed, y_train)
print("\nLinear regression:\n", reg_linear_mul.predict(datapoint))
print("\nPolynomial regression:\n", poly_linear_model.predict(poly_datapoint))

Production

Régression linéaire -

[2.40170462]

Régression polynomiale -

[1.8697225]

Dans le code ci-dessus, nous avons utilisé ces petites données. Si vous voulez un grand ensemble de données, vous pouvez utiliser sklearn.dataset pour importer un plus grand ensemble de données.

2,4.8,1.2,3.22.9,4.7,1.5,3.62.5,5,2.8,23.2,5.5,3.5,2.16,5,
2,3.27.6,4,1.2,3.23.2,0.9,2.3,1.42.9,1.9,2.3,1.22.4,3.5,
2.8,3.60.5,3.4,1.8,2.91,4,3,2.50.9,5.9,5.6,0.81.2,2.58,
3.45,1.233.2,5.6,2,3.25.1,1.5,1.2,1.34.5,1.2,4.1,2.32.3,
6.3,2.5,3.22.1,2.8,1.2,3.6