【发布时间】:2021-07-16 18:24:07
【问题描述】:
亲爱的这个平台的好灵魂,
请让我非常不安,我的脑袋都快要爆炸了,因为我无法理解如何使用任何 Niapy 算法(如 PSO)来优化 SVM 参数。 我花了两天时间试图弄清楚如何做到这一点,但我做不到。 Niapy Github 网站上的示例对我来说不是很清楚。
下面是 Niapy 的代码
import sys
sys.path.append('../')
from NiaPy.task import StoppingTask, OptimizationType
from NiaPy.benchmarks import Benchmark
from NiaPy.algorithms.basic import GreyWolfOptimizer
##################################################################################
### our custom benchmark class
class MyBenchmark(Benchmark):
def __init__(self):
Benchmark.__init__(self, -10, 10)
def function(self):
def evaluate(D, sol):
val = 0.0
for i in range(D): val += sol[i] ** 2
return val
return evaluate
####################################################################################
### we will run 10 repetitions of Grey Wolf Optimizer against our custom MyBenchmark benchmark function
for i in range(10):
task = StoppingTask(D=20, nGEN=100, optType=OptimizationType.MINIMIZATION, benchmark=MyBenchmark())
# parameter is population size
algo = GreyWolfOptimizer(NP=20)
# running algorithm returns best found minimum
best = algo.run(task)
# printing best minimum
print(best[-1])
上面的代码工作正常。我想用下面的代码替换 MyBenchmark 类(用### 划分):
def SVR_PSO(params):
global PSO_model
PSO_model = SVR(C=params[0][0], epsilon = params[0][1], gamma = params[0][2])
PSO_model.fit(X_train,np.ravel(y_train))
result = PSO_model.predict(X_val)
MAPE_result = call_MAPE(y_val, result)
# print('New PSO: C = {c}, epsilon={e}, gamma={g} MAPE={m}'.format(c=params[0][0], e=params[0][1], g=params[0][2], m=MAPE_result)) #, g=params[2], m=resultCV))
#print(params)
return MAPE_result
谢谢大家。
拜托,请有人帮帮我。
【问题讨论】:
标签: python optimization parameters svm