如何计算Bagging回归器中各模型残差的逐点标准差
问题:Bagging回归器逐点残差标准差计算困惑
我需要对Bagging回归模型的残差做分析,目标是识别出每日置信区间外的极端残差,但卡在了计算每个基模型的逐点残差标准差这一步。
我的示例代码如下:
import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.svm import SVR from sklearn.ensemble import BaggingRegressor import datetime # Sample DataFrame df = pd.DataFrame(np.random.randint(0,200,size=(500, 4)), columns=list('ABCD')) # Add dates to sample data base = datetime.datetime.today() date_list = [base - datetime.timedelta(days=x) for x in range(500)] df['date'] = date_list df['date'] = df['date'].astype('str') # Split dataset into testing and training train = df[:int(len(df)*0.80)] test = df[int(len(df)*0.20):] X_train = train[['B','C','D','date']] X_test = test[['B','C','D','date']] y_train = train[['A']] y_test = test[['A']] # Function to Encode the data def encode_and_bind(data_in, feature_to_encode): dummies = pd.get_dummies(data_in[[feature_to_encode]]) data_out = pd.concat([data_in, dummies], axis=1) data_out = data_out.drop([feature_to_encode], axis=1) return(data_out) features_to_encode = ['date'] for feature in features_to_encode: X_train_final = encode_and_bind(X_train, 'date') X_test_final = encode_and_bind(X_test, 'date') # Define Model svr_lin = SVR(kernel="linear", C=100, gamma="auto") regr = BaggingRegressor(base_estimator=svr_lin,random_state=5).fit(X_train_final, y_train.values.ravel()) # Predictions y_pred = regr.predict(X_test_final) # Join the predictions back into original dataframe y_test['predict'] = y_pred # Calculate residuals y_test['residuals'] = y_test['A'] - y_test['predict']
我在网上查到一种获取基模型预测的写法:
raw_pred = [x.predict([[0, 0, 0, 0]]) for x in regr.estimators_]
但我的特征数量远不止4个,不知道该怎么替换[[0, 0, 0, 0]]这部分。
编辑尝试
后来参考了@2MuchC0ff33的回答,我试了下面的代码:
stdevs = [] for dates in X_test_final.columns[3:]: test = X_test_final[X_test_final[dates]==1] raw_pred = [x.predict([test.iloc[0]]) for x in regr.estimators_] dates= dates sdev= np.std(raw_pred) sdev = sdev.astype('str') stdevs.append(dates + "," + sdev)
看起来好像能运行,但我对这个计算逻辑的正确性没把握,不确定是不是符合“逐点计算残差标准差”的需求。
内容的提问来源于stack exchange,提问作者Rbc.F
相关产品推荐
相关产品推荐

