Размерная задача линейной регрессии Python scikit Learn - PullRequest
0 голосов
/ 16 ноября 2018

Я реализую функцию, в которой я должен выполнить линейную регрессию с помощью scikit learn.

Что у меня есть при запуске с примером:

X_train.shape=(34,3)
X_test.shape=(12,3)
Y_train.shape=(34,1)
Y_test.shape=(12,1)

Тогда

lm.fit(X_train,Y_train)
Y_pred = lm.predict(X_test)

Однако Python говорит мне, что в этой строке есть ошибка

 dico['R2 value']=lm.score(Y_test, Y_pred)

Что говорит мне Python:

 ValueError: shapes (12,1) and (3,1) not aligned: 1 (dim 1) != 3 (dim 0)

Заранее спасибо за помощь, кто может мне помочь :)

Alex

1 Ответ

0 голосов
/ 16 ноября 2018

Для использования lm.score() необходимо передать X_test, y_test.

dico['R2 value']=lm.score(X_test, Y_test)

См. Документацию здесь :

оценка (X, y, образец_вес = нет)

X : array-like, shape = (n_samples, n_features) Test samples. 
    For some estimators this may be a precomputed kernel matrix instead, 
    shape = (n_samples, n_samples_fitted], where n_samples_fitted is the 
    number of samples used in the fitting for the estimator.

y : array-like, shape = (n_samples) or (n_samples, n_outputs) True values for X.

sample_weight : array-like, shape = [n_samples], optional Sample weights.

Вы пытаетесь использовать метод оценки в качестве метрического метода, что неверно. Метод score() на любом оценщике сам рассчитает прогнозы и затем отправит их соответствующему метрику.

Если вы хотите использовать Y_test и Y_pred самостоятельно, то вы можете сделать это:

from sklearn.metrics import r2_score
dico['R2 value'] = r2_score(Y_test, Y_pred)
...