当前位置: 首页 > news >正文

东莞网站建设教程cms网站开发网站模板

东莞网站建设教程,cms网站开发网站模板,公司官网制作,网站与微网站区别本系列基本不讲数学原理#xff0c;只从代码角度去让读者们利用最简洁的Python代码实现机器学习方法。 背景#xff1a; 极限学习机(ELM)也是学术界常用的一种机器学习算法#xff0c;严格来说它应该属于神经网络#xff0c;应该属于深度学习栏目#xff0c;但是我这里把它…本系列基本不讲数学原理只从代码角度去让读者们利用最简洁的Python代码实现机器学习方法。 背景 极限学习机(ELM)也是学术界常用的一种机器学习算法严格来说它应该属于神经网络应该属于深度学习栏目但是我这里把它放在了机器学习栏目里面主要还是这个方法不是像别的神经网络一样方向传播误差去更新参数的。他是一个静态的模型 虽然它结构类似于多层感知机只不过多层感知机的参数会随着迭代次数增加通过方向传播误差进行更新而ELM不会所以ELM的效果肯定是不如MLP的。 但是我也不知道为什么效果不好的模型学术界这么喜欢用......一堆论文不用MLP而是去用ELM....可能因为它不需要深度学习框架就可以搭建而且运行速度快吧门槛低可能是不懂深度学习的人接触的最简单的神经网络实现的方法了。 sklearn库没有现成的接口调用我们下面的ELM都是自定义的类模仿sklearn的接口使用。 当然单纯的ELM由于它的权重矩阵都是静态的效果不好所以可以使用拟牛顿法或者别的梯度下降的方法根据误差去优化其参数矩阵达到更好的效果。说实话这不就是MLP嘛.... 下面会自定义ELM和优化的ELM两个类还给出了一个基于优化的ELM结合ER回归的类。 请注意我这里都是回归问题的ELM代码分类问题还需要进行改动 代码实现 原理就不多介绍了别的文章都有我直接给ELM的代码案例。本次使用一个回归问题16的特征变量响应变量是一个数值使用ELM预测。 导入包然后读取数据取出X和y我数据的最后一列就是y然后给它划分训练集和测试集。 import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error,r2_score plt.rcParams [font.sans-serif] SimHei #显示中文 plt.rcParams [axes.unicode_minus]False #显示负号# 加载数据 data pd.read_csv(CS2_35的特征.csv) X data.iloc[:,:-1] y data.iloc[:,-1]# 将数据集划分为训练集和测试集 X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state0) 标准化一下 from sklearn.preprocessing import StandardScaler scaler StandardScaler() scaler.fit(X_train) X_train_s scaler.transform(X_train) X_test_s scaler.transform(X_test) print(训练数据形状) print(X_train_s.shape,y_train.shape) print(测试数据形状) print(X_test_s.shape,y_test.shape) 自定义ELM类  class ELMRegressor():def __init__(self, n_hidden):self.n_hidden n_hiddendef fit(self, X, y):self.X Xself.y yn_samples, n_features X.shapeself.W np.random.randn(n_features1, self.n_hidden)H np.dot(np.concatenate((X, np.ones((n_samples, 1))), axis1), self.W)H np.maximum(H, 0)self.beta np.dot(np.linalg.pinv(H), y)def predict(self, X):n_samples X.shape[0]H np.dot(np.concatenate((X, np.ones((n_samples, 1))), axis1), self.W)H np.maximum(H, 0)y_pred np.dot(H, self.beta)return y_pred 自定义优化参数矩阵的ELM类 这里采用scipy.optimize 里面的minimize方法使用拟牛顿法进行优化参数矩阵。 from scipy.optimize import minimize class OP_ELMRegressor():def __init__(self, n_hidden):self.n_hidden n_hiddendef fit(self, X, y):self.X Xself.y yn_samples, n_features X.shapeself.W np.random.randn(n_features 1, self.n_hidden)def loss_func(W_vec):W W_vec.reshape((n_features 1, self.n_hidden))H np.dot(np.hstack((X, np.ones((n_samples, 1)))), W)H np.maximum(H, 0)beta np.dot(np.linalg.pinv(H), y)y_pred np.dot(H, beta)mse np.mean((y - y_pred) ** 2)return mse# 用拟牛顿法优化权重矩阵res minimize(loss_func, self.W.ravel(), methodBFGS)self.W res.x.reshape((n_features 1, self.n_hidden))H np.hstack((X, np.ones((n_samples, 1)))) # 添加偏置项H np.dot(H, self.W)H np.maximum(H, 0)self.beta np.dot(np.linalg.pinv(H), y)def predict(self, X):n_samples X.shape[0]H np.hstack((X, np.ones((n_samples, 1))))H np.dot(H, self.W)H np.maximum(H, 0)y_pred np.dot(H, self.beta)return y_pred 自定义优化参数矩阵的ELM结合ER回归的类 不懂什么是ER回归可以去搜一下....核心改动就是损失函数改了不是MSE损失而是ER损失。总之这是一种机器学习结合统计学的方法算得上创新。 class OP_ELMRegressor_ER():def __init__(self, n_hidden,tau):self.n_hidden n_hiddenself.tau taudef fit(self, X, y):self.X Xself.y yn_samples, n_features X.shapeself.W np.random.randn(n_features 1, self.n_hidden)def loss_func(W,tauself.tau):W W.reshape((n_features 1, self.n_hidden))H np.dot(np.hstack((X, np.ones((n_samples, 1)))), W)H np.maximum(H, 0)beta np.dot(np.linalg.pinv(H), y)y_pred np.dot(H, beta)lossnp.mean(np.where(np.greater(y,y_pred),np.power((y-y_pred),2)*tau,np.power((y-y_pred),2)*(1-tau)))return loss# 用拟牛顿法优化权重矩阵res minimize(loss_func, self.W.ravel(), methodBFGS)self.W res.x.reshape((n_features 1, self.n_hidden))H np.hstack((X, np.ones((n_samples, 1)))) # 添加偏置项H np.dot(H, self.W)H np.maximum(H, 0)self.beta np.dot(np.linalg.pinv(H), y)def predict(self, X):n_samples X.shape[0]H np.hstack((X, np.ones((n_samples, 1))))H np.dot(H, self.W)H np.maximum(H, 0)y_pred np.dot(H, self.beta)return y_pred导入别的模型对比 from sklearn.linear_model import LinearRegression from sklearn.linear_model import ElasticNet from sklearn.neighbors import KNeighborsRegressor from sklearn.tree import DecisionTreeRegressor from sklearn.ensemble import RandomForestRegressor from sklearn.ensemble import GradientBoostingRegressor from sklearn.svm import SVR from sklearn.neural_network import MLPRegressor 定义评价函数这里计算MAE,RMSE,MAPE,R2来评价预测效果。 from sklearn.metrics import mean_absolute_error from sklearn.metrics import mean_squared_error,r2_scoredef evaluation(y_test, y_predict):mae mean_absolute_error(y_test, y_predict)mse mean_squared_error(y_test, y_predict)rmse np.sqrt(mean_squared_error(y_test, y_predict))mape(abs(y_predict -y_test)/ y_test).mean()r_2r2_score(y_test, y_predict)return mae, rmse, mape,r_2 #mse 生成11个模型类的实例化装入列表。 #线性回归 model1 LinearRegression()#弹性网回归 model2 ElasticNet(alpha0.05, l1_ratio0.5)#K近邻 model3 KNeighborsRegressor(n_neighbors10)#决策树 model4 DecisionTreeRegressor(random_state77)#随机森林 model5 RandomForestRegressor(n_estimators500, max_featuresint(X_train.shape[1]/3) , random_state0)#梯度提升 model6 GradientBoostingRegressor(n_estimators500,random_state123)#支持向量机 model7 SVR(kernelrbf)#神经网络 model8 MLPRegressor(hidden_layer_sizes(64,40), random_state77, max_iter10000)#MLE model9ELMRegressor(32)#优化MLE model10OP_ELMRegressor(16)#优化MLE_ER model11OP_ELMRegressor_ER(16,tau0.5)model_list[model1,model2,model3,model4,model5,model6,model7,model8,model9,model10,model11] model_name[线性回归,惩罚回归,K近邻,决策树,随机森林,梯度提升,支持向量机,神经网络,极限学习机,优化极限学习机,优化极限学习机ER] 训练评价计算误差指标 df_evalpd.DataFrame(columns[MAE,RMSE,MAPE,R2]) for i in range(len(model_list)):model_Cmodel_list[i]namemodel_name[i]print(f{name}正在训练...)model_C.fit(X_train_s, y_train)predmodel_C.predict(X_test_s)sevaluation(y_test,pred)df_eval.loc[name,:]list(s) 查看 df_eval 画图 bar_width 0.4 colors[c, b, g, tomato, m, y, lime, k,orange,pink,grey,tan,purple] fig, ax plt.subplots(2,2,figsize(7,5),dpi256) for i,col in enumerate(df_eval.columns):nint(str(22)str(i1))plt.subplot(n)df_coldf_eval[col]m np.arange(len(df_col))#hatch[-,/,,x],plt.bar(xm,heightdf_col.to_numpy(),widthbar_width,colorcolors)#plt.xlabel(Methods,fontsize12)namesdf_col.indexplt.xticks(range(len(df_col)),names,fontsize8)plt.xticks(rotation40)if colR2:plt.ylabel(r$R^{2}$,fontsize14)else:plt.ylabel(col,fontsize14) plt.tight_layout() #plt.savefig(柱状图.jpg,dpi512) plt.show() 从效果上来看这个数据集的X对y的解释能力还是很强的线性回归的拟合优度都到了99%所以基本模型都差不多是这个表现。单纯的ELM的表现比线性回归还差但是用拟牛顿法优化过后效果还不错加了ER效果也是差不多的。ER还有分位数tau这个参数可以改说不定能出更好的效果。 整体来说是一个效果一般的机器学习模型但是原理简单可以很容易去改动和创新然后发文章所以学术界都喜欢用这个吧。。。
http://www.hkea.cn/news/14462952/

相关文章:

  • 网站推广资讯建设棋牌网站流程
  • 网站架设建设苏州集团网站建设
  • iis怎么做IP网站wordpress去掉尾巴
  • 个人做网站的注意事项网站建设费用表格
  • 做网站最小的字体是多少像素如何做购物网站的后台
  • 网站开发工具.晴天娃娃网易企业邮箱怎么发送文件
  • 甘肃省工程建设信息官方网站比较专业的app开发公司
  • 上海网站运营腾讯做网站上传
  • 门户网站营销特点织梦网站安装视频教程
  • 申办网站流程网站建设外出考察信息
  • 推荐做木工的视频网站面包屑 wordpress
  • 制作ppt的网站免费建站的网站99
  • 求个网站你们知道的企业网站的宣传功能体现在().
  • 做企业网站设泛微e8做网站门户
  • 建站公司咨询网站空间租
  • 上海百度做网站24小时学会网站建设 百度云
  • 网站建设经验总结linux是哪个公司开发的
  • 网站建设开发定制个人注册域名网站怎么做
  • 旅游网站html5代码模板wordpress 修改入口文件
  • 好的网站 具备seo优化标题
  • 网站运行环境建设方案北京海淀租车公司价格
  • 如何更好的建设和维护网站如何购买网站域名
  • 西乡城建局网站怎么给餐饮店做网站
  • 做线上网站需要钱吗提升神马关键词排名报价
  • 湖南做网站 就问磐石网络专业网站开发公司网站官网
  • 网站设计与制作报价网站租用服务器费用
  • 怎样找到正规代加工网站免费网站开发合同范本
  • 网站建设丂金手指科杰山西省
  • 网站网站平台建设方案自建wordpress主题
  • 徐州好点的做网站的公司网站建设域名服务器