循环遍历每个元素,并将该元素用作GBM中的输出列名

2024-05-17 12:37:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我想循环浏览gbm中的参数列表,并生成一个数据帧,记录每个参数组合的结果

下面是我的代码:

from sklearn.ensemble import GradientBoostingRegressor
import pandas as pd

totalreturn_annual = []
params = {'n_estimators': [1, 10, 50, 100, 200], 'max_depth': [1,3,5,7,9],
        'learning_rate': [0.01,0.05,0.1,0.2,0.3], 'min_samples_split ':[0.1,0.3,0.5,0.7,0.9]}

params = pd.Dataframe(params)

for p in range(16):

        model_cape = GradientBoostingRegressor(random_state = 10, max_features = 'sqrt',
                                               n_estimators = params.iloc[p,0], learning_rate = params.iloc[p,2], 
                                            alpha = params.iloc[p,3], max_depth = params.iloc[p,1],).fit(xs, ys_cape)
totalreturn_annual[p] = np.append(totalreturn_annual, totalreturn_annual_temp)

这是我得到的错误:

    totalreturn_annual[p] = totalreturn_annual.append(totalreturn_annual)

IndexError: list assignment index out of range

我想知道为什么我会出错


Tags: import参数raterangeparamsmaxpdlearning
1条回答
网友
1楼 · 发布于 2024-05-17 12:37:06

在代码的第一行中,您将totalreturn_annual初始化为空列表,因此它不会采用索引。这将导致索引错误。这应该起作用:

np.append(totalreturn_annual, totalreturn_annual_temp)

而不是:

totalreturn_annual[p] = np.append(totalreturn_annual, totalreturn_annual_temp)

append(a,b)函数将b附加到a;a在适当的位置进行了修改

相关问题 更多 >