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.