• 大小: 6.6MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-02
  • 语言: Python
  • 标签: py  

资源简介

首先对数据进行PCA,然后输入至PSO优化的ELM中进行分类,python代码

资源截图

代码片段和文件信息

# -*- coding: utf-8 -*-
“““
Created on Mon Jul 29 15:16:34 2019
@author: KLY-392503054
“““

# coding: utf-8  
from scipy.io import loadmat
import numpy as np    
import random     
import matplotlib.pyplot as plt 
from sklearn.decomposition import PCA


class PSO():    
    def __init__(selfpNdimmax_iterinput_nodehidden_nodeinputoutput):    
        #----------------------PSO参数设置---------------------------------    
        self.w  = 0.8      
        self.c1 = 1.5       
        self.c2 = 1.5       
        self.r1 = 0.8    
        self.r2 = 0.3    
        self.pN = pN                #粒子数量    
        self.dim =dim              #搜索维度    
        self.max_iter = max_iter   #迭代次数  
        
        self.X = np.zeros((self.pNself.dim))       #所有粒子的位置和速度    
        self.V = np.zeros((self.pNself.dim))    
        self.pbest = np.zeros((self.pNself.dim))   #个体经历的最佳位置和全局最佳位置    
        self.gbest = np.zeros((1self.dim))   
        self.p_fit = np.zeros(self.pN)              #每个个体的历史最佳适应值    
        self.fit = -1
        
        # 输入数据
        self.input=input
        self.output=output
        self.input_node=input_node
        self.hidden_node=hidden_node
    def train_elm(selfPTNWC=100000000000000TF=‘sig‘TYPE=1):
        # P 输入数据 n*m  n-> samples m->features
        # T 输出数据
        # N 隐含层节点
        # C 正则化参数
        # TF 隐含层激活函数
        # TYPE=1 分类任务  =0 回归任务
    
        nm=P.shape
        if TYPE == 1:
            y=np.zeros([nT.max()+1])
            for i in range(n):
                y[iT[i]]=1
            T=np.copy(y)
        
        nc=T.shape
        
        ‘输入权重‘
        Weights = np.reshape(W[:m*N][mN])
        ‘隐含层偏置‘
        biases=np.reshape(W[m*N:][1N])
        
        temp=np.matmul(PWeights)+np.tile(biases[n1])
        if TF==‘sig‘:
            H=1/(1+np.exp(temp))
        ‘输出权重计算‘
        w_out=np.matmul(np.matmul(np.linalg.pinv(np.matmul(H.TH)+1/C)H.T)T)
        return Weights biases w_out TF TYPE
    
    def train_predic(selfPWeightsbiasesw_outTFTYPE):
        nm=P.shape
        temp=np.matmul(PWeights)+np.tile(biases[n1])
        if TF==‘sig‘:
            H=1/(1+np.exp(temp))
        T=np.matmul(Hw_out)
        
        if TYPE==1:
            T_predict=np.argmax(Taxis=1)
        return T_predict
    
    def compute_accuracy(selfT_trueT_predictTYPE):
        if TYPE==0:
            accuracy=np.mean(np.sum(T_true-T_predict))
        if TYPE==1:
            n=0
            for i in range(len(T_true)):
               if T_true[i]==T_predict[i]:
                   n=n+1
            accuracy=n/len(T_true)
        return accuracy   
#---------------------目标函数-----------------------------    
    def function(selfPTNW):
        Weightsbiasesw_outTFTYPE=self.train_elm(PTNWC=10000000000TF=‘sig‘TYPE=1)
        T_predict=self.train_predic(PWeightsbiasesw_outTFTYPE)
    

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5999  2019-07-29 16:29  pso-elm.py

     文件    7152017  2018-04-26 17:10  drivFace600.mat

----------- ---------  ---------- -----  ----

              7158016                    2


评论

共有 条评论