KI mit Python - Überwachtes Lernen: Regression

Regression ist eines der wichtigsten statistischen und maschinellen Lerninstrumente. Wir würden nicht falsch sagen, dass die Reise des maschinellen Lernens von einer Regression ausgeht. Es kann als die parametrische Technik definiert werden, mit der wir Entscheidungen auf der Grundlage von Daten treffen können, oder mit anderen Worten, die es uns ermöglicht, Vorhersagen auf der Grundlage von Daten zu treffen, indem wir die Beziehung zwischen Eingabe- und Ausgabevariablen lernen. Hierbei handelt es sich bei den von den Eingabevariablen abhängigen Ausgabevariablen um stetige reelle Zahlen. Bei der Regression spielt die Beziehung zwischen Eingabe- und Ausgabevariablen eine Rolle und hilft uns zu verstehen, wie sich der Wert der Ausgabevariablen mit der Änderung der Eingabevariablen ändert. Regression wird häufig zur Vorhersage von Preisen, Wirtschaftlichkeit, Schwankungen usw. verwendet.

Erstellen von Regressoren in Python

In diesem Abschnitt erfahren Sie, wie Sie sowohl einzelne als auch multivariable Regressoren erstellen.

Linearer Regressor / einzelner variabler Regressor

Lassen Sie uns ein paar erforderliche Pakete wichtig -

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

Jetzt müssen wir die Eingabedaten bereitstellen und haben unsere Daten in der Datei linear.txt gespeichert.

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

Wir müssen diese Daten mit dem laden np.loadtxt Funktion.

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

Der nächste Schritt wäre, das Modell zu trainieren. Lassen Sie uns Trainings- und Testmuster geben.

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:]

Jetzt müssen wir ein lineares Regressorobjekt erstellen.

reg_linear = linear_model.LinearRegression()

Trainieren Sie das Objekt mit den Trainingsmustern.

reg_linear.fit(X_train, y_train)

Wir müssen die Vorhersage mit den Testdaten machen.

y_test_pred = reg_linear.predict(X_test)

Zeichnen und visualisieren Sie nun die Daten.

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()

Ausgabe

Jetzt können wir die Leistung unserer linearen Regression wie folgt berechnen:

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))

Ausgabe

Leistung des linearen Regressors -

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

Im obigen Code haben wir diese kleinen Daten verwendet. Wenn Sie einen großen Datensatz möchten, können Sie mit sklearn.dataset einen größeren Datensatz importieren.

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

Multivariabler Regressor

Lassen Sie uns zunächst einige erforderliche Pakete importieren -

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

Jetzt müssen wir die Eingabedaten bereitstellen und haben unsere Daten in der Datei linear.txt gespeichert.

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

Wir werden diese Daten mit dem laden np.loadtxt Funktion.

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

Der nächste Schritt wäre, das Modell zu trainieren; Wir werden Schulungs- und Testmuster geben.

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:]

Jetzt müssen wir ein lineares Regressorobjekt erstellen.

reg_linear_mul = linear_model.LinearRegression()

Trainieren Sie das Objekt mit den Trainingsmustern.

reg_linear_mul.fit(X_train, y_train)

Jetzt müssen wir endlich die Vorhersage mit den Testdaten machen.

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))

Ausgabe

Leistung des linearen Regressors -

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

Jetzt werden wir ein Polynom vom Grad 10 erstellen und den Regressor trainieren. Wir werden den Beispieldatenpunkt bereitstellen.

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))

Ausgabe

Lineare Regression -

[2.40170462]

Polynomregression -

[1.8697225]

Im obigen Code haben wir diese kleinen Daten verwendet. Wenn Sie dann ein großes Dataset möchten, können Sie mit sklearn.dataset ein größeres Dataset importieren.

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