利用机器学习拟合复杂函数,并利用遗传算法求最优解

利用机器学习拟合复杂函数,并利用遗传算法求最优解


编程语言:Python
利用工具:sklearn、keras、geatpy
步骤原理简述:
1、利用机器学习到数据集的多维特征和输出的拟合函数关系(模型去学,并保存模型)。
2、加载模型函数,利用遗传算法找到该函数的最优解(实际是在不同约束条件下的变量值中,求取拟合函数的最大值或最小值)
工具介绍:
   1、sklearn: https://scikit-learn.org/stable/ 官网教程网页,我利用了其中的Regression(回归模型),利用pipeline(将数据预处理和模型训练集成在一起)
基于sklearn的回归模型去拟合,模型如下(采用了LinearRegression和TheilSenRegressor/XGBRegressor(因为数据集较简单采用了线性拟合模型)),sklear提供的回归模型其余多种类型。拟合效果如下:

#LinearRegression
Pipeline([
    ('scale', MinMaxScaler()),
    ('reg', linear_model.LinearRegression())
])
data_size: 6715	
mse: 36.539681516210784	rmse: 6.044806160350452	mae:4.63826039731241	
mape: 3.3011660989748934	r2: 0.808433725049098

#TheilSenRegressor
Pipeline([
    ('scale', StandardScaler()),
    ('reg', TheilSenRegressor(random_state=5))
])
data_size: 6715	
mse: 35.90317863408285	rmse: 5.9919261205461 mae:4.5948612203764805	mape: 3.281180987786468	r2: 0.8117707132511071```

#XGBRegressor
Pipeline([
 ('scale', StandardScaler()),
    ('reg', XGBRegressor(max_depth=5, n_estimators=100, n_jobs=8))
])
data_size: 6715	
mse: 44.95695040186879	rmse: 6.704994437124373	mae: 5.23324546786106	  
mape: 3.69434252416818	r2: 0.7643045816418063

   2、keras,官网教程https://keras.io/zh/ 因为数据集较简单,试验过程,具体结构与结果记录如下:

基于keras神经网络的回归拟合
Keras1: (别人原始输出)
 y: _Power_chiller	data_size: 6715	
mse: 109.89059902559949	rmse: 10.482871697469138	mae: 8.92583014113255
mape: 6.267563752145885	r2: 0.4238774988195254


keras2:
model.add(Dense(output_dim=1, input_dim=9))
model.compile(loss='mean_squared_error', optimizer='sgd')
data_size: 6715	
mse: 34.67461192389513 	rmse: 5.888515256318449	mae: 4.535644083885483	
mape: 3.2163304659323524	r2: 0.8182117094074346

keras3:
model.add(Dense(4,input_dim=9,activation='sigmoid'))
model.add(Dense(1,activation='linear')data_size: 6715mse: 
mse: 10
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值