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)

3.结果

    gussian中beta的値设置非常关键

由于指数函数增加得很快,所以大的beta値,意味着只有和中心点很近的点才能被判定和中心点为同一类

                                       beta = 1                                          beta = 0.001

RBF network的更多相关文章

  1. 径向基网络(RBF network)

    来源:http://blog.csdn.net/zouxy09/article/details/13297881 1.径向基函数 径向基函数(Radical Basis Function,RBF)方法 ...

  2. 机器学习技法:14 Radial Basis Function Network

    Roadmap RBF Network Hypothesis RBF Network Learning k-Means Algorithm k-Means and RBF Network in Act ...

  3. 机器学习技法笔记:14 Radial Basis Function Network

    Roadmap RBF Network Hypothesis RBF Network Learning k-Means Algorithm k-Means and RBF Network in Act ...

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

    将Radial Basis Function与Network相结合.实际上衡量两个点的相似性:距离越近,值越大. 将神经元换为与距离有关的函数,就是RBF Network: 可以用kernel和RBF ...

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

    作者:李瞬生链接:https://www.zhihu.com/question/44328472/answer/128973724来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  6. 【Radial Basis Function Network】林轩田机器学习技法

    这节课主要讲述了RBF这类的神经网络+Kmeans聚类算法,以及二者的结合使用. 首先回归的了Gaussian SVM这个模型: 其中的Gaussian kernel又叫做Radial Basis F ...

  7. RBF网络——核心思想:把向量从低维m映射到高维P,低维线性不可分的情况到高维就线性可分了

      RBF网络能够逼近任意的非线性函数,可以处理系统内的难以解析的规律性,具有良好的泛化能力,并有很快的学习收敛速度,已成功应用于非线性函数逼近.时间序列分析.数据分类.模式识别.信息处理.图像处理. ...

  8. theano中的concolutional_mlp.py学习

    (1) evaluate _lenet5中的导入数据部分 # 导入数据集,该函数定义在logistic_sgd中,返回的是一个list datasets = load_data(dataset) # ...

  9. 全连接BP神经网络

    前馈神经网络 前馈神经网络(feedforward neural network)是最朴素的神经网络,通常我们所说的前馈神经网络有两种,一种叫反向传播网络(Back propagation Netwo ...

随机推荐

  1. 小巧数据库 Derby 使用攻略

    阅读目录 1. Derby 介绍 2. 稍稍配置下环境变量 3. Derby 操作和 Java 访问 回到顶部 1. Derby 介绍 将目光放在小 Derby 的原因是纯绿色.轻巧.内存占用小,分分 ...

  2. 如何让FPGA中的SPI与其他模块互动起来

    在上一篇文章<FPGA的SPI从机模块实现>中,已经实现了SPI的从机模块,如何通过SPI总线与FPGA内部其他模块进行通信,是本文的主要讨论内容. 一. 新建FPGA内部DAC控制模块 ...

  3. Python-求助 SAE 如何使用第三方库? - 德问:编程社交问答

    Python-求助 SAE 如何使用第三方库? - 德问:编程社交问答 求助 SAE 如何使用第三方库?

  4. SQL中如何使用UPDATE语句进行联表更新(转)

    在本例中: 我们要用表member中的name,age字段数据去更新user中的同字段名的数据,条件是当user 中的id字段值与member中的id字段值相等时进行更新. SQL Server语法: ...

  5. hdu 4627 The Unsolvable Problem(暴力的搜索)

    Problem Description There are many unsolvable problem in the world.It could be about one or about ze ...

  6. jquery第三期:js与jquery对象转换

    我们开始进入jquery的学习了,jquery的学习就不那么中规中矩了,我们来看一个和javascript有所区别的地方. <!DOCTYPE html PUBLIC "-//W3C/ ...

  7. 解决的方法:warning: Clock skew detected. Your build may be incomplete.

    因为时钟同步问题.出现 warning:  Clock skew detected.  Your build may be incomplete.这种警告, 解决的方法: find . -type f ...

  8. UIScrollView 与 UIPageView 的联合使用

       @interface ViewController : UIViewController<UIScrollViewDelegate> { UIScrollView * scrollV ...

  9. Flash Recovery Area 的备份

    Flash Recovery Area 的备份 备份命令是Flash recovery Area,该命令是Oracle 10g以后才有的.10g引进了flash recovery area,同时在rm ...

  10. C#核编之System.Console类

    顾名思义,Console类封装了基于控制台的输入输出和错误流的操作,下面列举一些System.Console类常用的成员的,这些成员能为简单的命令行程序添加一些"情趣",例如改变背 ...