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)
3.结果
gussian中beta的値设置非常关键
由于指数函数增加得很快,所以大的beta値,意味着只有和中心点很近的点才能被判定和中心点为同一类
| beta = 1 | beta = 0.001 |
![]() |
![]() |
RBF network的更多相关文章
- 径向基网络(RBF network)
来源:http://blog.csdn.net/zouxy09/article/details/13297881 1.径向基函数 径向基函数(Radical Basis Function,RBF)方法 ...
- 机器学习技法:14 Radial Basis Function Network
Roadmap RBF Network Hypothesis RBF Network Learning k-Means Algorithm k-Means and RBF Network in Act ...
- 机器学习技法笔记:14 Radial Basis Function Network
Roadmap RBF Network Hypothesis RBF Network Learning k-Means Algorithm k-Means and RBF Network in Act ...
- Coursera台大机器学习技法课程笔记14-Radial Basis Function Network
将Radial Basis Function与Network相结合.实际上衡量两个点的相似性:距离越近,值越大. 将神经元换为与距离有关的函数,就是RBF Network: 可以用kernel和RBF ...
- RBF神经网络和BP神经网络的关系
作者:李瞬生链接:https://www.zhihu.com/question/44328472/answer/128973724来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...
- 【Radial Basis Function Network】林轩田机器学习技法
这节课主要讲述了RBF这类的神经网络+Kmeans聚类算法,以及二者的结合使用. 首先回归的了Gaussian SVM这个模型: 其中的Gaussian kernel又叫做Radial Basis F ...
- RBF网络——核心思想:把向量从低维m映射到高维P,低维线性不可分的情况到高维就线性可分了
RBF网络能够逼近任意的非线性函数,可以处理系统内的难以解析的规律性,具有良好的泛化能力,并有很快的学习收敛速度,已成功应用于非线性函数逼近.时间序列分析.数据分类.模式识别.信息处理.图像处理. ...
- theano中的concolutional_mlp.py学习
(1) evaluate _lenet5中的导入数据部分 # 导入数据集,该函数定义在logistic_sgd中,返回的是一个list datasets = load_data(dataset) # ...
- 全连接BP神经网络
前馈神经网络 前馈神经网络(feedforward neural network)是最朴素的神经网络,通常我们所说的前馈神经网络有两种,一种叫反向传播网络(Back propagation Netwo ...
随机推荐
- 【python】中文的输出,打印,文件编码问题解决方法
直接在python中输入中文的字符串会报编译错误SyntaxError: Non-ASCII character,因为python文件默认编码方式是ASCII.如果想要打印中文字符,有两种方式: 1. ...
- 生成war的jdk版本高于tomcat使用的jdk版本,导致项目不能正常被访问
记录一个耽误30分钟的一个坑: 生成war的jdk版本高于tomcat使用的jdk版本,导致项目不能正常被访问 报404错误
- jquery 事件委托三种事件绑定方式.bind(),.live(),.delegate()
http://www.ituring.com.cn/article/467# http://www.cnblogs.com/lvdabao/archive/2013/08/30/3290603.htm ...
- zookeeper数据弱一致性
zookeeper本身支持单机部署和集群部署,生产环境建议使用集群部署,因为集群部署不存在单点故障问题,并且zookeeper建议部署的节点个数为奇数个,只有超过一半的机器不可用整个zk集群才不可用. ...
- perl 实现微信简版<2>
<pre name="code" class="python">use LWP::UserAgent; use URI::Escape; use N ...
- zabbix 模版其实就是主机
</pre><pre name="code" class="python">mysql> select hostid,host , ...
- hdu 2665 Kth number_划分树
题意:求区间[a,b]的第k大 因为多次询问要用到划分树 #include <iostream> #include<cstdio> #include<algorithm& ...
- 判图的连通性(dfs,并查集)
一.无向图 欧拉回路:每个顶点度数都是偶数 欧拉路:所有点度数为偶数,或者只有2个点度数为奇数 当然判连通性 hdu 1878 欧拉回路 两种判连通的方法 dfs #include <iostr ...
- UML_行为图
活动图是UML用于对系统的动态行为建模的另一种常用工具,它描述活动的顺序,展现从一个活动到另一个活动的控制流.活动图在本质上是一种流程图.活动图着重表现从一个活动到另一个活动的控制流,是内部处理驱动的 ...
- 【LeetCode练习题】Permutation Sequence
Permutation Sequence The set [1,2,3,…,n] contains a total of n! unique permutations. By listing and ...

