最近由于需要使用优化算法,用到了sko这个包,但是网上给的例子大部分都是官方文档。我尝试利用该包对sklearn中的模型参数进行简单的优化。
import numpy as np
import matplotlib.pyplot as plt
from sko.GA import GA
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
#首先学习一下官方文档
'''
min f(x1, x2, x3) = x1^2 + x2^2 + x3^2
s.t.
x1*x2 >= 1
x1*x2 <= 5
x2 + x3 = 1
0 <= x1, x2, x3 <= 5
'''
def obj_func(p):
print(p)
x1, x2, x3 = p
return x1 ** 2 + x2 ** 2 + x3 ** 2
constraint_eq = [
#等式约束条件:
lambda x: 1 - x[1] - x[2]
]
constraint_ueq = [
#不等式约束条件:
lambda x: 1 - x[0] * x[1],
lambda x: x[0] * x[1] - 5
#无需使用不等式表示,直接使用表达式即可,但该表达式需要小于等于0,列如第一个约束条件5>=x1*x2,则改写成x1*x2-5:
]
ga = GA(func=obj_func,n_dim=3,size_pop=