Estava tentando rodar um algoritmo de Regressão Linear, utilizando o LinearRegression()
do sklearn
, para calcular o R^2 e também plotar a distribuição dos resíduos. Entretanto, toda vez em que utilizo o método LinearRegression().fit()
a função scipy.linalg.lstsq()
é chamada e ela gera um erro de incompatibilidade nos seus parâmetros. O erro é especificamente gerado no 4o parâmetro e pode ser visualizado a seguir:
~\miniconda3\lib\site-packages\scipy\linalg\basic.py in lstsq(a, b, cond, overwrite_a, overwrite_b, check_finite, lapack_driver)
1221 raise LinAlgError("SVD did not converge in Linear Least Squares")
1222 if info < 0:
-> 1223 raise ValueError('illegal value in %d-th argument of internal %s'
1224 % (-info, lapack_driver))
1225 resids = np.asarray([], dtype=x.dtype)
ValueError: illegal value in 4-th argument of internal None
Os códigos que estou tentando rodar, que contam com os métodos fit()
para a Regressão Linear, são os seguintes:
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_absolute_error
def roda_regressao_linear(train_x, test_x, train_y, test_y):
modelo = LinearRegression()
modelo.fit(train_x, train_y)
predicao_modelo = modelo.predict(test_x)
r2_score = modelo.score(test_x, test_y)
mse = mean_squared_error(y_true = test_y, y_pred = predicao_modelo)
mae = mean_absolute_error(y_true = test_y, y_pred = predicao_modelo)
print("*" * 80)
print(f"r2 score = {r2_score:.4f}")
print(f"mse = {mse:.2f}")
print(f"mae = {mae:.2f}")
return modelo
modelo_reg_linear = roda_regressao_linear(train_x, test_x, train_y, test_y)
from yellowbrick.regressor import PredictionError
from yellowbrick.regressor import ResidualsPlot
from yellowbrick.regressor import residuals_plot
def visualiza_erros(train_x,train_y,test_x,test_y):
visualizer = PredictionError(LinearRegression())
visualizer.fit(train_x, train_y)
visualizer.score(test_x, test_y)
visualizer.poof()
visualizer = ResidualsPlot(LinearRegression())
visualizer.fit(train_x, train_y)
visualizer.score(test_x, test_y)
visualizer.poof()
visualiza_erros(train_x,train_y,test_x,test_y)