这是一组包含1000条不同地点房租价格数据的数据集的一部分。
在训练模型后,如果我将相同的训练数据作为测试数据发送,我得到的是错误的结果。这怎么可能呢?
X_loc = df[{'area','rooms','location'}]y_loc = df[:]['price']X_train, X_test, y_train, y_test = train_test_split(X_loc, y_loc, test_size = 1/3, random_state = 0)regressor = LinearRegression()regressor.fit(X_train, y_train)y_pred = regressor.predict(X_train[0:1])
数据集:
price rooms area location0 0 22000 3 1339 1401 1 45000 3 1580 723 3 72000 3 2310 724 4 40000 3 1800 415 5 35000 3 2100 57
预期输出(y_pred)应该是220000,但显示的是290000。它怎么会违反已经训练过的输入呢?
回答:
你观察到的正是所谓的“训练误差”。机器学习模型旨在找到“最佳”拟合,以最小化“总误差”(即对于所有数据点,而非每个数据点)。22000与29000并不算太远,尽管它不是确切的数字。这是因为线性回归试图将你数据中的所有变化压缩到一条直线上。