【问题标题】:Accuracy matrics isn't working on linear regression精度矩阵不适用于线性回归
【发布时间】:2018-11-08 20:15:18
【问题描述】:

请在此处提供帮助:

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))

我确定我在这里遗漏了一些东西,还有其他方法可以计算回归的准确度分数吗?在此先感谢:)

【问题讨论】:

  • y = dataset.iloc[:,1].values 不应该是 y = dataset.iloc[:,-1].values 吗?
  • @mamun,我认为是对的。打印正确的值:print(X_test) print(y_test)
  • 我同意@mamun 的观点:X 将包含除最后一列之外的所有列,而目标变量 y 是第二列,即它包含在 X 中。根据您的目标变量的实际位置,您需要更改 Xy 切片规则
  • 在替换 X 和 y 时,我遇到了同样的问题......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,66026,83088,813 ,93940,91738,98273,101302,113812,109431,105582,116969,112635,122391,121872]

标签: machine-learning artificial-intelligence classification regression linear-regression


【解决方案1】:

准确度作为指标适用于分类问题,因为它被定义为正确预测的标签的一部分。在您的情况下,您进行回归(LinearRegression),即您的目标变量是连续的。因此,要么您选择了错误的模型,要么我的错误或准确性是您问题的错误指标。

【讨论】:

  • 感谢您的反馈。我们是否有其他线性回归的准确度指标,任何链接都会有很大帮助。谢谢:)
  • 是的,请参阅列表hereRegression 部分了解预定义的回归指标。您始终可以使用 make_scorer 定义您喜欢的自定义指标
【解决方案2】:

您可以使用平均绝对误差和均方误差。

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))

【讨论】:

  • 它给了我错误:回溯(最近一次调用最后一次):文件“LeanerRegression.py”,第 49 行,在 MAE = mean_absoute_error(y_test, y_predict) NameError: name 'mean_absoute_error' is未定义
  • 有一个错字,我改正了。但是你应该能够调试它。回溯很清楚
  • 所以,它给了我均方误差值,在我的数据集上打印:3426.4269374307123,很抱歉,我可以用线性回归数据计算准确度吗?
【解决方案3】:

我们不能将准确率用于回归问题,它仅用于分类问题。 您可以使用 MSE,RMSE,MAPE,MAE 作为矩阵来确定您的回归模型有多好。

这些值告诉我们距离正确预测还有多远。对于这些情况,较低的值更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-24
    • 2018-07-12
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多