IA com Python - aprendizagem supervisionada: regressão
A regressão é uma das ferramentas estatísticas e de aprendizado de máquina mais importantes. Não estaríamos errados em dizer que a jornada do aprendizado de máquina começa da regressão. Pode ser definido como a técnica paramétrica que nos permite tomar decisões com base em dados ou, em outras palavras, nos permite fazer previsões com base em dados, aprendendo a relação entre as variáveis de entrada e saída. Aqui, as variáveis de saída dependentes das variáveis de entrada são números reais de valor contínuo. Na regressão, a relação entre as variáveis de entrada e saída é importante e nos ajuda a entender como o valor da variável de saída muda com a mudança da variável de entrada. A regressão é freqüentemente usada para previsão de preços, economia, variações e assim por diante.
Construindo regressores em Python
Nesta seção, aprenderemos como construir um regressor único e também multivariável.
Regressor Linear / Regressor de Variável Única
Vamos importantes alguns pacotes necessários -
import numpy as np
from sklearn import linear_model
import sklearn.metrics as sm
import matplotlib.pyplot as plt
Agora, precisamos fornecer os dados de entrada e salvamos nossos dados no arquivo denominado linear.txt.
input = 'D:/ProgramData/linear.txt'
Precisamos carregar esses dados usando o np.loadtxt função.
input_data = np.loadtxt(input, delimiter=',')
X, y = input_data[:, :-1], input_data[:, -1]
O próximo passo seria treinar o modelo. Vamos dar amostras de treinamento e teste.
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:]
Agora, precisamos criar um objeto de regressor linear.
reg_linear = linear_model.LinearRegression()
Treine o objeto com os exemplos de treinamento.
reg_linear.fit(X_train, y_train)
Precisamos fazer a previsão com os dados de teste.
y_test_pred = reg_linear.predict(X_test)
Agora plote e visualize os dados.
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()
Resultado
Agora, podemos calcular o desempenho de nossa regressão linear da seguinte maneira -
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))
Resultado
Desempenho do regressor linear -
Mean absolute error = 1.78
Mean squared error = 3.89
Median absolute error = 2.01
Explain variance score = -0.09
R2 score = -0.09
No código acima, usamos esses pequenos dados. Se você quiser um grande conjunto de dados, pode usar sklearn.dataset para importar um conjunto de dados maior.
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
Regressor multivariável
Primeiro, vamos importar alguns pacotes necessários -
import numpy as np
from sklearn import linear_model
import sklearn.metrics as sm
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures
Agora, precisamos fornecer os dados de entrada e salvamos nossos dados no arquivo denominado linear.txt.
input = 'D:/ProgramData/Mul_linear.txt'
Vamos carregar esses dados usando o np.loadtxt função.
input_data = np.loadtxt(input, delimiter=',')
X, y = input_data[:, :-1], input_data[:, -1]
A próxima etapa seria treinar o modelo; nós daremos amostras de treinamento e teste.
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:]
Agora, precisamos criar um objeto de regressor linear.
reg_linear_mul = linear_model.LinearRegression()
Treine o objeto com os exemplos de treinamento.
reg_linear_mul.fit(X_train, y_train)
Agora, finalmente, precisamos fazer a previsão com os dados de teste.
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))
Resultado
Desempenho do regressor linear -
Mean absolute error = 0.6
Mean squared error = 0.65
Median absolute error = 0.41
Explain variance score = 0.34
R2 score = 0.33
Agora, vamos criar um polinômio de grau 10 e treinar o regressor. Forneceremos o ponto de dados de amostra.
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))
Resultado
Regressão linear -
[2.40170462]
Regressão polinomial -
[1.8697225]
No código acima, usamos esses pequenos dados. Se você quiser um conjunto de dados grande, pode usar sklearn.dataset para importar um conjunto de dados maior.
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