gpt4 book ai didi

python - 如何在Python中循环三个变量,同时它们的总和始终等于1?

转载 作者:行者123 更新时间:2023-11-30 09:27:52 26 4
gpt4 key购买 nike

我是 Python 新手,我需要迭代 3 个主要变量来检查人工智能模型中的最佳平均误差。

这 3 个模型是:梯度增强器、随机森林和 XGBooster。

每个模型都单独拟合数据。最后我需要将它们集成起来,但迭代非常令人疲惫,因为需要进行 27 次迭代。

等式如下:

y_predict = xgradientBossterPredict + yrandomForest + z*XGBooster

哪里

  1. x、y 和 z 介于 0 和 1 之间(其中每个值的步长为 0.1)
  2. x + y + z 应始终等于 1

我尝试了以下方法:

rmse = []
for (gbrCount in np.arange(0, 1.0, 0.1)):
for(xgbCount in np.arange(0, 1.0, 0.1)):
for(regCount in np.arange(0, 1.0, 0.1)):
y_p = (xgbCount*xgb.predict(testset)+ gbrCount*gbr.predict(testset)+regCount*regressor.predict(testset))
testset['SalePrice']=np.expm1(y_p)
y_train_p = xgb.predict(dataset)
y_train_p = np.expm1(y_train_p)
rmse.append(np.sqrt(mean_squared_error(y, y_train_p)))
rmse.append(xgbCount)
rmse.append(gbrCount)
rmse.append(regCount)

但我收到以下错误:

SyntaxError: unexpected EOF while parsing for gbrCount in np.arange(0, 1.0, 0.1):

最佳答案

您的代码可以使用以下 FOR 循环语法正常工作:

import numpy as np
for gbrCount in np.arange(0, 1.0, 0.1):
for xgbCount in np.arange(0, 1.0, 0.1):
for regCount in np.arange(0, 1.0, 0.1):
y_p = (xgbCount*xgb.predict(testset)+ gbrCount*gbr.predict(testset)+regCount*regressor.predict(testset))
testset['SalePrice']=np.expm1(y_p)
y_train_p = xgb.predict(dataset)
y_train_p = np.expm1(y_train_p)
rmse.append(np.sqrt(mean_squared_error(y, y_train_p)))
rmse.append(xgbCount)
rmse.append(gbrCount)
rmse.append(regCount)

对于循环中的 sum 总是 = 1,请看下面:

import numpy as np
for gbrCount in np.arange(0, 1.0, 0.1):
for xgbCount in np.arange(0, 1.0, 0.1):
for regCount in np.arange(0, 1.0, 0.1):
#check if sum is 1
if int(gbrCount+xgbCount+regCount) == 1:

y_p = (xgbCount*xgb.predict(testset)+ gbrCount*gbr.predict(testset)+regCount*regressor.predict(testset))
testset['SalePrice']=np.expm1(y_p)
y_train_p = xgb.predict(dataset)
y_train_p = np.expm1(y_train_p)
rmse.append(np.sqrt(mean_squared_error(y, y_train_p)))
rmse.append(xgbCount)
rmse.append(gbrCount)
rmse.append(regCount)

对于同一行中的每个结果而不是每个值:

import numpy as np
for gbrCount in np.arange(0, 1.0, 0.1):
for xgbCount in np.arange(0, 1.0, 0.1):
for regCount in np.arange(0, 1.0, 0.1):
#check if sum is 1
if int(gbrCount+xgbCount+regCount) == 1:

y_p = (xgbCount*xgb.predict(testset)+ gbrCount*gbr.predict(testset)+regCount*regressor.predict(testset))
testset['SalePrice']=np.expm1(y_p)
y_train_p = xgb.predict(dataset)
y_train_p = np.expm1(y_train_p)

rmse.append([np.sqrt(mean_squared_error(y, y_train_p)), xgbCount, gbrCount, regCount ])

关于python - 如何在Python中循环三个变量,同时它们的总和始终等于1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58447037/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com