Матрицы точности не работают на линейной регрессии

Пожалуйста, помогите здесь:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

X = [[1.1],[1.3],[1.5],[2],[2.2],[2.9],[3],[3.2],[3.2],[3.7],[3.9],[4],[4],[4.1],[4.5],[4.9],[5.1],[5.3],[5.9],[6],[6.8],[7.1],[7.9],[8.2],[8.7],[9],[9.5],[9.6],[10.3],[10.5]]
y = [39343,46205,37731,43525,39891,56642,60150,54445,64445,57189,63218,55794,56957,57081,61111,67938,66029,83088,81363,93940,91738,98273,101302,113812,109431,105582,116969,112635,122391,121872]


#implement the dataset for train & test

from sklearn.cross_validation import train_test_split

X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 1/3,random_state=0)

#implement our classifier based on Simple Linear Regression

from sklearn.linear_model import LinearRegression
SimpleLinearRegression = LinearRegression()
SimpleLinearRegression.fit(X_train,y_train)

y_predict= SimpleLinearRegression.predict(X_test)


from sklearn.metrics import accuracy_score
print(accuracy_score(y_test,y_predict))

Я уверен, что я что-то здесь упускаю, есть ли какой-то другой способ рассчитать показатель точности для регрессии? Заранее спасибо:)

3 ответа

Мы не можем использовать точность для задач регрессии, она используется только в задачах классификации. Вы можете использовать MSE,RMSE,MAPE,MAE в качестве матрицы, чтобы определить, насколько хороша ваша регрессионная модель.

Эти значения говорят нам, насколько мы далеки от правильных прогнозов. Более низкие значения лучше для этих случаев.

Вы можете использовать среднюю абсолютную ошибку и среднеквадратичную ошибку.

from sklearn.metrics import mean_absolute_error, mean_squared_error
import numpy as np
MAE = mean_absolute_error(y_test, y_predict)
RMSE = np.sqrt(mean_squared_error(y_test, y_predict))

Точность как метрика применима к проблеме классификации, так как она определяется как доля меток, которая правильно спрогнозирована. В вашем случае вы делаете регрессию (LinearRegression), т.е. ваша целевая переменная является непрерывной. Так что либо вы выбрали неправильную модель, либо моя ошибка, либо точность является неправильной метрикой для вашей проблемы.