RBF network

1.radial basis function

RBF表示某种距离,$\mu_m$为中心点,相当于将点$x$到中心点的某种距离作为特征转换

Output方法可以根据需求任意选取(比如使用SVM,logistic regression等)

关键在于:中心点选取,距离函数选择

2.使用kmean选取中心点,后使用logistic regression

import numpy as np
from sklearn.cluster import KMeans
from sklearn.linear_model import LogisticRegression
from matplotlib import pyplot as plt
from sklearn import cross_validation
from sklearn.base import BaseEstimator

class KMeansRBF:
    def __init__(self,n_clusters,beta,C):
        self.n_clusters=n_clusters
        self.beta=beta
        self.C=C

    def fit(self,X,y):
        km = KMeans(n_clusters=self.n_clusters);
        km.fit(X)
        ct = km.cluster_centers_
        self.ct = ct
        G = self._nFeature(ct, X)
        lg=LogisticRegression(C=self.C)
        lg.fit(G,y)
        self.lg=lg

    def predict(self,X):
        G = self._nFeature(self.ct, X)
        return self.lg.predict(G)

    def _nFeature(self,cts,X):
        G = np.zeros((X.shape[0],cts.shape[0]))
        for xi,x in enumerate(X):
            for ci,c in enumerate(cts):
                G[xi,ci] = self._kernal(x, c)
        return G

    def _kernal(self,x1,x2):
        x = x1-x2;
        return np.exp(-self.beta*np.dot(np.transpose(x),x))

    def predict_proba(self,X):
        G = self._nFeature(self.ct, X)
        return self.lg.predict_proba(G)

    def get_params(self, deep=True):
        return {‘n_clusters‘:self.n_clusters,‘beta‘:self.beta,‘C‘:self.C}

    def set_params(self, **parameters):
        for parameter, value in parameters.items():
            setattr(self, parameter, value)

    def plot(self,X,y):
        pos = np.where(y==1)
        neg = np.where(y==-1)

        x1 = X[pos[0],:]
        x2 = X[neg[0],:]

        plt.figure()
        plt.plot(x1[:,0],x1[:,1],‘o‘)
        plt.plot(x2[:,0],x2[:,1],‘o‘)
        plt.plot(self.ct[0,0],self.ct[0,1],‘ro‘)
        plt.plot(self.ct[1,0],self.ct[1,1],‘ro‘)

        xmax = np.max(X[:,0])+5
        xmin = np.min(X[:,0])-5
        ymax = np.max(X[:,1])+5
        ymin = np.min(X[:,1])-5

        numx = int((xmax-xmin)*10)
        numy = int((ymax-ymin)*10)
        total = numx*numy;
        lx = np.linspace(xmin,xmax,numx)
        ly = np.linspace(ymin,ymax,numy)
        mgrid = np.meshgrid(lx,ly)
        px = np.hstack((mgrid[0].reshape(total,1),mgrid[1].reshape(total,1)))
        pre=self.predict_proba(px)
        ind = np.where(abs(pre[:,1]-pre[:,0])<0.01)

        px=px[ind]
        plt.plot(px[:,0],px[:,1],‘yo‘)
        plt.show()
if __name__ == ‘__main__‘:
    x1=np.random.normal(10, 6.0, (80,2))
    x2=np.random.normal(-10, 6.0, (80,2))

    X = np.vstack((x1,x2))
    y = np.zeros((160,1))
    y[range(0,80),0]=y[range(0,80),0]+1
    y[range(80,160),0]=y[range(80,160),0]-1
    y=np.ravel(y)

    betas = np.linspace(0.001,0.1,100)
    k = range(100)
    score = np.zeros((100,1),‘float‘)

    bestbeta = 0.001;
    maxscore = -1;
    for i,beta  in enumerate(betas):
        krbf = KMeansRBF(2,beta,1)
        scores =cross_validation.cross_val_score(krbf,X,y,scoring="accuracy",cv=5)
        score[i,0]=scores.mean()
        if score[i,0]>maxscore:
            maxscore=score[i,0]
            bestbeta = beta

    plt.figure()
    plt.plot(k,score,‘b-‘)
    plt.show()
    print bestbeta;
    krbf = KMeansRBF(2,bestbeta,1)
    krbf.fit(X, y)
    krbf.plot(X,y)
时间: 2024-08-05 02:34:32

RBF network的相关文章

径向基网络(RBF network)

来源:http://blog.csdn.net/zouxy09/article/details/13297881 1.径向基函数 径向基函数(Radical Basis Function,RBF)方法是Powell在1985年提出的.所谓径向基函数,其实就是某种沿径向对称的标量函数.通常定义为空间中任一点x到某一中心c之间欧氏距离的单调函数,可记作k(||x-c||),其作用往往是局部的,即当x远离c时函数取值很小.例如高斯径向基函数: 当年径向基函数的诞生主要是为了解决多变量插值的问题.可以看

径向基网络(RBF network)之BP监督训练

径向基网络(RBF network)之BP监督训练 转载:http://blog.csdn.net/zouxy09/article/details/13297881 分类: 机器学习 神经网络 C/C++编程2013-10-28 18:17 3083人阅读 评论(1) 收藏 举报 神经网络机器学习RBF 径向基网络(RBF network)之BP监督训练 [email protected] http://blog.csdn.net/zouxy09 之前看了流行学习的时候,感觉它很神奇,可以将一个

RBF神经网络和BP神经网络的关系

作者:李瞬生链接:https://www.zhihu.com/question/44328472/answer/128973724来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. BP Neural Network - 使用 Automatic Differentiation (Backpropagation) 进行导数计算的层级图模型 (layer-by-layer graphical model) 只要模型是一层一层的,并使用AD/BP算法,就能称作 BP Ne

Coursera台大机器学习技法课程笔记14-Radial Basis Function Network

将Radial Basis Function与Network相结合.实际上衡量两个点的相似性:距离越近,值越大. 将神经元换为与距离有关的函数,就是RBF Network: 可以用kernel和RBF来衡量相似性: 那么如何选中心点呢,一种方法是把所有看过的资料都当做中心点,这就是 FULL NETWORK: 用所有的点作中心太麻烦,可以选择某几个点来投票,这就是KNN: 之前投票的y就是资料的标签,如果每笔资料都不同的话,可以得到一个简洁的贝塔: 减少中心点(相当于选了几个代表)可以做regu

Lecture 14:Radial Basis Function Network

Lecture 14:Radial Basis Function Network 14.1 RBF Network Hypothesis 图  14-1 RBF network 从图 14 -1 中可以看出,RBF NNet 没啥特色.就是用 RBF 核作为激活函数.为什么还要 RBF NNet 呢?难道是大家公认 RBF 核很好?数学公式多了去,岂不是有无穷多个 NNet 呢. 需要参考 <RBF神经网络和BP神经网络有什么区别?> . 首先 RBF NNet 计算速度很快.因为 RBF N

CNN卷积神经网络

CNN是一种多层神经网络,基于人工神经网络,在人工神经网络前,用滤波器进行特征抽取,使用卷积核作为特征抽取器,自动训练特征抽取器,就是说卷积核以及阈值参数这些都需要由网络去学习. 图像可以直接作为网络的输入,避免了传统识别算法中复杂的特征提取和数据重建过程. 一般卷积神经网络的结构: 前面feature extraction部分体现了CNN的特点,feature extraction部分最后的输出可以作为分类器的输入.这个分类器你可以用softmax或RBF等等. 局部感受野与权值共享 局部感受

theano中的concolutional_mlp.py学习

(1) evaluate _lenet5中的导入数据部分 1 # 导入数据集,该函数定义在logistic_sgd中,返回的是一个list 2 datasets = load_data(dataset) 3 4 # 从list中提取三个元素,每个元素都是一个tuple(每个tuple含有2个元素,分别为images数据和label数据) 5 train_set_x, train_set_y = datasets[0] #训练集 6 valid_set_x, valid_set_y = datas

综述类文章(Peng 等)阅读笔记Cross-media analysis and reasoning: advances and directions

综述类文章 Cross-media analysis and reasoning: advances and directions Yu-xin PENG et al. Front Inform Technol Electron Eng 浙江大学学报(英文版)2017 18(1):44-57 这篇文章主要讲了七个问题: (1) theory and model for cross-media uniform representation; (2) cross-media correlation

加州理工学院公开课:机器学习与数据挖掘_Radial Basis Function(第十六课)

课程简介 : 主要介绍了 RBF 模型及其与最近邻算法.神经网络.Kernel Method 的比较.最后介绍了 RBF 模型的 regularization  问题. 课程提纲 : 1.what is RBF 2.RBF and nearest neighbors 3.RBF and neural networks 4.RBF and kernel methods 5.RBF and regularization 1.what is RBF RBF 是基于半径的一个模型.因为训练集中的每一个点