使用预测区间对预测值进行分类
Classifying predicted values using a prediction interval
我是运行一个简单的线性回归来预测特定数据集的价格。我不仅想计算均方误差等指标,而且还想计算哪些测试实例在实际价格的 10% 的预测区间内(即实际价格在预测价格 +/- 10% 的范围内) .但我不确定最好的方法是什么,或者现有的软件包是否可以提供帮助。我目前正在为我的 X 和 Y 训练数据使用 numpy 数组。
# Load in train test split data
X_train, X_test, y_train, y_test = prepare_data()
# fit model
lm = LinearRegression()
lm.fit(X_train, y_train)
# Compute predictions
y_pred = lm.predict(X_test)
我不确定 sklearn 是否内置了这个,但你可以自己做,如下所示:
abs(y_test - y_pred)/y_test * 100
对所有 y_pred
执行此操作,它会给出预测值与实际值的百分比变化。
例如,如果实际值为 200 而您的预测值为 210,那么上面的代码将做的是:
>>> abs(200-210)/200 *100
>>> 5 %
要获取y_test
的所有值,可以使用np.select
因此,在您的情况下,条件是 y_test
的值在 y_pred
的 10% 以内
condition = [abs(y_pred - y_test)/y_test < 0.1]
choice = [y_test]
result = np.select(condition, choice)
我是运行一个简单的线性回归来预测特定数据集的价格。我不仅想计算均方误差等指标,而且还想计算哪些测试实例在实际价格的 10% 的预测区间内(即实际价格在预测价格 +/- 10% 的范围内) .但我不确定最好的方法是什么,或者现有的软件包是否可以提供帮助。我目前正在为我的 X 和 Y 训练数据使用 numpy 数组。
# Load in train test split data
X_train, X_test, y_train, y_test = prepare_data()
# fit model
lm = LinearRegression()
lm.fit(X_train, y_train)
# Compute predictions
y_pred = lm.predict(X_test)
我不确定 sklearn 是否内置了这个,但你可以自己做,如下所示:
abs(y_test - y_pred)/y_test * 100
对所有 y_pred
执行此操作,它会给出预测值与实际值的百分比变化。
例如,如果实际值为 200 而您的预测值为 210,那么上面的代码将做的是:
>>> abs(200-210)/200 *100
>>> 5 %
要获取y_test
的所有值,可以使用np.select
因此,在您的情况下,条件是 y_test
的值在 y_pred
condition = [abs(y_pred - y_test)/y_test < 0.1]
choice = [y_test]
result = np.select(condition, choice)