我使用这个数据集https://archive.ics.uci.edu/ml/datasets/Student+Performance构建了一个简单的线性回归模型来预测学生的最终成绩。
虽然我的模型准确率非常高,但误差似乎很大。
我不确定是我没有正确理解误差的含义,还是我的代码中存在错误。我以为在92%的准确率下,误差应该小得多,并且更接近于0。
这是我的代码:
data = pd.read_csv("/Users/.../student/student-por.csv", sep=";")X = np.array(data.drop([predict], 1))y = np.array(data[predict]) x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(X, y, test_size = 0.1, random_state=42)linear = linear_model.LinearRegression()linear.fit(x_train, y_train)linear_accuracy = round(linear.score(x_test, y_test) , 5)linear_mean_abs_error = metrics.mean_absolute_error(y_test, linear_prediction)linear_mean_sq_error = metrics.mean_squared_error(y_test, linear_prediction)linear_root_mean_sq_error = np.sqrt(metrics.mean_squared_error(y_test, linear_prediction))
我在代码中是否犯了错误,或者这种情况下的误差是合理的?
回答:
sklearn线性回归中的准确率指标是R^2指标。它基本上告诉你模型预测因子解释了因变量变化的百分比。0.92是一个非常好的分数,但这并不意味着你的误差会是0。我查看了你的工作,你似乎使用了所有数值变量作为预测因子,你的目标是G3
。代码看起来没问题,结果也似乎是准确的。在回归任务中,获得0误差是非常困难的。如果你有任何问题,请告诉我。祝好