GPR核函数
使用sklearn中的GPR模型时,可能会遇到以下问题:
ValueError:Multiple optimizer restarts (n_restarts_optimizer>0) requires that all bounds are finite.
gpr = GaussianProcessRegressor(kernel=kernel, oprimizer='fmin_l_bfgs_b', n_restarts_optimizer=5, random=0)
gpr.fit(x_train, y_train)
这可能时由于上述代码中设置n_restarts_optimizer=5导致的,在设置n_restarts_optimizer时要注意将对应核函数参数的上下限进行设置(若将下限设置为0时,可能会报这个错误)。
三维动图(图框显示未响应)
可能的原因:误将暂停时间调整为0.01,导致图框刷新太快而卡顿,将plt.pause()调整为0.1后图框未响应问题不在出现。
fig = plt.figure()
ax = Axes3D(fig)
plt.ion() # 将画图模式改为交互模式,程序遇到plt.show不会暂停,而是继续执行
plot_3d(ax)
pop = np.random.randint(2, size=(POP_SIZE, DNA_SIZE * 2)) # matrix (POP_SIZE, DNA_SIZE)
for _ in range(N_GENERATIONS): # 迭代N代
x, y = translateDNA(pop)
if 'sca' in locals():
sca.remove()
sca = ax.scatter(x, y, F(x, y), c='black', marker='o')
plt.show()
plt.pause(0.1)
# plt.pause(0.01) 误将暂停时间调成0.01
pop = np.array(crossover_and_mutation(pop, CROSSOVER_RATE))
fitness = get_fitness(pop)
pop = select(pop, fitness) # 选择生成新的种群