Eu tenho uma pergunta sobre dois métodos diferentes de bibliotecas diferentes, que parece estar fazendo o mesmo trabalho. Eu estou tentando fazer o modelo de regressão linear.
Aqui está o código que eu estou usando na biblioteca statsmodel com o OLS:
X_train, X_test, y_train, y_test = cross_validation.train_test_split(x, y, test_size=0.3, random_state=1)
x_train = sm.add_constant(X_train)
model = sm.OLS(y_train, x_train)
results = model.fit()
print "GFT + Wiki / GT R-squared", results.rsquared
Esta impressão GFT + Wiki / GT R-quadrado 0,981434611923
e o segundo é o método de modelo Linear da biblioteca de aprendizado do scikit:
model = LinearRegression()
model.fit(X_train, y_train)
predictions = model.predict(X_test)
print 'GFT + Wiki / GT R-squared: %.4f' % model.score(X_test, y_test)
Imprima GFT + Wiki / GT R-quadrado: 0,8543
Portanto, minha pergunta é: o método de ambos imprime nosso resultado R ^ 2, mas um é impresso 0,98 e o outro é 0,85.
Pelo meu entendimento, o OLS trabalha com o conjunto de dados de treinamento. Então, minhas perguntas,
- Existe uma maneira de trabalhar com o conjunto de dados de teste com o OLS?
- A pontuação do conjunto de dados traning nos dá algum significado (no OLS não usamos o conjunto de dados de teste)? Pelo meu conhecimento passado, temos que trabalhar com dados de teste.
- Qual é a diferença entre OLS e regressão linear scikit. Qual deles usamos para calcular a pontuação do modelo?
Obrigado por qualquer ajuda.
fonte
exog
sejam incluídas nas estimativas e previsões.No modelo OLS, você está usando os dados de treinamento para ajustar e prever.
Com o modelo LinearRegression, você está usando dados de treinamento para ajustar e testar dados para prever, portanto, resultados diferentes nas pontuações R2.
Se você coletar dados de teste no modelo OLS, deverá ter os mesmos resultados e menor valor
fonte
Eu encontrei um problema semelhante em que o OLS está fornecendo valores diferentes de Rsquared e Rsquared ajustado em comparação com o modelo de regressão linear Sklearn.
Razão para isso: o OLS não considera, por padrão, o coeficiente de interceptação e constrói o modelo sem ele, e o Sklearn considera na construção do modelo.
Solução: adicione uma coluna de 1s ao conjunto de dados e ajuste o modelo com o OLS e você obterá quase o mesmo Rsquared e Adj. Rsquared valores para ambos os modelos.
fonte