3、无监督分类~决策树:【包】:rpart 【函数】:rpart(formula,data, method="class",control=ct,parms=list(prior=c(p,1-p),split="information"))
rpart.plot(fit,branch=1,branch.type=2,type=1,extra=102,shadow.col=”gray”,box.col=”green”,
split.cex=1.2,main=”Kyphosis决策树”) #提供了复杂度损失修剪的修剪方法
printcp(fit):告诉分裂到哪一层,CP,nsplit,rel,error,交叉验证的估计误差(xerror),标准误差(xstd)
prune(fit,cp=fit$cptable[which.min(fit$cptable[,"xerror"]),"CP"]):剪枝函数
【备注】:1)CRAN的 MachineLearning任务列表有对树方法的细节描述。
2)分类树也常常是重要的多元方法,rpart包正是这样的包,
3)rpart.permutation包还可以做rpart()模型的置换(permutation)检验。
4)TWIX包的树可以外部剪枝。
5)hier.part包分割多元数据集的方差。
6)mvpart包可做多元回归树,
7)party包实现了递归分割(recursive partitioning),
8)rrp包实现了随机递归分割。
9)caret包可做分类和回归训练,进而caretLSF包实现了并行处理。
10)kknn包的k-近 邻法可用于回归,也可用于分类。
4、支持向量机:
【包】:e1071,kernlab
【函数】:svm(x_train,y_train,type="C-classification",cost=10,kernel="radial",probability=TRUE,scale=FALSE)
svp=ksvm(x,y,type="C-svc",kernel="rbf",kpar=list(sigma=1),C=1)
5、无监督分类~聚类分析:
【包】:stats
【函数】:系统聚类:hclust(d,method=”complete”,members=NULL)
快速聚类:kmeans(x,centers,iter.max=10,nstart=1,algorithm=“Hartigan-Wong”)
距离函数:dist(x,method=”euclidean”,diag=FALSE,upper=FALSE,p=2)
【备注】:1)CRAN的Cluster任务列表全面的综述了R实现的聚类方法。
2)stats里提供等级聚类hclust()和k-均值聚类kmeans()。
3)cluster包里有大量的聚类和可视化技 术,
4)clv包里则有一些聚类确认程序,
5)e1071包的classAgreement()可计算Rand index比较两种分类结果。
6)Trimmed k-means聚类分析可由trimcluster包实现,
7)聚类融合方法(Cluster Ensembles)由clue包实现,
8)clusterSim包能帮助选择最佳的聚类,
9)hybridHclust包提供一些混合聚类方法。
10)energy包里有基于E统计量的距离测度函数edist()和等级聚类方法hclust.energy()。
11)LLAhclust包提供基于似然(likelihood linkage)方法的聚类,也有评定聚类结果的指标。
12)fpc包里有基于Mahalanobis距离的聚类。
13)clustvarsel包有多种基于模型的聚类。
14)模糊聚类(fuzzy clustering)可在cluster包和hopach包里实现。
15)Kohonen包提供用于高维谱(spectra)或模式(pattern)的有监督和无监督的SOM算法。
16)clusterGeneration包帮助模拟聚类。
17)CRAN的Environmetrics任务列表里也有相关的聚类算法的综述。
18)mclust包实现了基于模型的聚类,
19)MFDA包实现了功能数据的基于模型的聚类。
本文重点是展示如何用Matlab来进行聚类分析。如果有需要解答的问题请留言,笔者会尽其所能地回答。
内容
展示如何使用MATLAB进行聚类分析
生成随机二维分布图形,三个中心
K均值聚类
分层聚类
重新调用K均值法
将分类的结果展示出来
运用高斯混合分布模型进行聚类分析
通过AIC准则寻找最优的分类数
展示如何使用MATLAB进行聚类分析
分别运用分层聚类、K均值聚类以及高斯混合模型来进行分析,然后比较三者的结果
生成随机二维分布图形,三个中心
% 使用高斯分布(正态分布)
% 随机生成3个中心以及标准差
s = rng(5,'v5normal')
mu = round((rand(3,2)-0.5)*19)+1
sigma = round(rand(3,2)*40)/10+1
X = [mvnrnd(mu(1,:),sigma(1,:),200)...
mvnrnd(mu(2,:),sigma(2,:),300)...
mvnrnd(mu(3,:),sigma(3,:),400)]
% 作图
P1 = figureclf
scatter(X(:,1),X(:,2),10,'ro')
title('研究样本散点分布图')
K均值聚类
% 距离用传统欧式距离,分成两类
[cidx2,cmeans2,sumd2,D2] = kmeans(X,2,'dist','sqEuclidean')
P2 = figureclf
[silh2,h2] = silhouette(X,cidx2,'sqeuclidean')
从轮廓图上面看,第二类结果比较好,但是第一类有部分数据表现不佳。有相当部分的点落在0.8以下。
分层聚类
eucD = pdist(X,'euclidean')
clustTreeEuc = linkage(eucD,'average')
cophenet(clustTreeEuc,eucD)
P3 = figureclf
[h,nodes] = dendrogram(clustTreeEuc,20)
set(gca,'TickDir','out','TickLength',[.002 0],'XTickLabel',[])
可以选择dendrogram显示的结点数目,这里选择20 。结果显示可能可以分成三类
重新调用K均值法
改为分成三类
[cidx3,cmeans3,sumd3,D3] = kmeans(X,3,'dist','sqEuclidean')
P4 = figureclf
[silh3,h3] = silhouette(X,cidx3,'sqeuclidean')
图上看,比前面的结果略有改善。
将分类的结果展示出来
P5 = figureclf
ptsymb = {'bo','ro','go',',mo','c+'}
MarkFace = {[0 0 1],[.8 0 0],[0 .5 0]}
hold on
for i =1:3
clust = find(cidx3 == i)
plot(X(clust,1),X(clust,2),ptsymb{i},'MarkerSize',3,'MarkerFace',MarkFace{i},'MarkerEdgeColor','black')
plot(cmeans3(i,1),cmeans3(i,2),ptsymb{i},'MarkerSize',10,'MarkerFace',MarkFace{i})
end
hold off
运用高斯混合分布模型进行聚类分析
分别用分布图、热能图和概率图展示结果 等高线
% 等高线
options = statset('Display','off')
gm = gmdistribution.fit(X,3,'Options',options)
P6 = figureclf
scatter(X(:,1),X(:,2),10,'ro')
hold on
ezcontour(@(x,y) pdf(gm,[x,y]),[-15 15],[-15 10])
hold off
P7 = figureclf
scatter(X(:,1),X(:,2),10,'ro')
hold on
ezsurf(@(x,y) pdf(gm,[x,y]),[-15 15],[-15 10])
hold off
view(33,24)
热能图
cluster1 = (cidx3 == 1)
cluster3 = (cidx3 == 2)
% 通过观察,K均值方法的第二类是gm的第三类
cluster2 = (cidx3 == 3)
% 计算分类概率
P = posterior(gm,X)
P8 = figureclf
plot3(X(cluster1,1),X(cluster1,2),P(cluster1,1),'r.')
grid onhold on
plot3(X(cluster2,1),X(cluster2,2),P(cluster2,2),'bo')
plot3(X(cluster3,1),X(cluster3,2),P(cluster3,3),'g*')
legend('第 1 类','第 2 类','第 3 类','Location','NW')
clrmap = jet(80)colormap(clrmap(9:72,:))
ylabel(colorbar,'Component 1 Posterior Probability')
view(-45,20)
% 第三类点部分概率值较低,可能需要其他数据来进行分析。
% 概率图
P9 = figureclf
[~,order] = sort(P(:,1))
plot(1:size(X,1),P(order,1),'r-',1:size(X,1),P(order,2),'b-',1:size(X,1),P(order,3),'y-')
legend({'Cluster 1 Score' 'Cluster 2 Score' 'Cluster 3 Score'},'location','NW')
ylabel('Cluster Membership Score')
xlabel('Point Ranking')
通过AIC准则寻找最优的分类数
高斯混合模型法的最大好处是给出分类好坏的标准
AIC = zeros(1,4)
NlogL = AIC
GM = cell(1,4)
for k = 1:4
GM{k} = gmdistribution.fit(X,k)
AIC(k)= GM{k}.AIC
NlogL(k) = GM{k}.NlogL
end
[minAIC,numComponents] = min(AIC)
按AIC准则给出的最优分类数为: 3 对应的AIC值为: 8647.63
后记
(1)pluskid指出K均值算法的初值对结果很重要,但是在运行时还没有发现类似的结果。也许Mathworks对该算法进行过优化。有时间会仔细研究下代码,将结果放上来。
转载仅供参考,版权属于原作者
Windows使用过程中大家都知道,利用Windows键+R键调出“运行”对话框后,可以输入相关的程序名称就可以运行程序了。习惯中,大家都认为只有输入的文件类型为EXE或COM的才可以运行,其实在Windows还有一种用得非常多的可执行程序类型,那就是MSC,devmgmt.msc:设备管理器程序,当需要更改硬件设置或升级硬件驱动程序的时候就可以运行它,可以直接打开“设备管理器”对话框,管理计算机中的硬件设备,且用这种方法打开显然比在“系统属性”对话框中打开方便多了。
dfrg.msc:磁盘碎片整理程序,磁盘上的碎片多了影响计算机的性能,所以这个命令用的比较多,它可以整理各个分区中的碎片。和依次点击“开始-所有程序-附件-系统工具-磁盘碎片整理程序”所完成的效果一样。
compmgmt.msc:计算机管理程序(图1),可以对本机的“共享文件夹”、“用户”、“硬件”以及后台服务进行管理。
diskmgmt.msc:磁盘管理程序,可以为分区更改“驱动器名和路径”(图2),有些时候重装系统后会发现分区名称变了,或光驱的名称跑到硬盘分区的前面去了,这时硬盘管理程序就可以派上用场了。
gpedit.msc:组策略,可以进行“计算机配置”和“用户配置”(图3),对操作系统熟练后,且此命令会比较多,初学者可以打开看看以熟悉其中的项目,在不清楚具体功能的情况下不建议随意更改设置,以免损坏系统。
注:1.上面所提到的程序名称,在实际输入时扩展名.msc不能省略,从Windows 2000开始,Windows中引进了“Microsoft 通用管理文档”类型的程序,即扩展名为.msc的程序,是可以直接运行的。
2.以上命令均在Windows XP Pro + SP2系统下测试运行通过。
小提示:以上只是列出了我们平时会用的比较多的几个程序,其实象这样的程序还很多,可以在Windows的搜索中以关键字“*.msc”(不包括外侧引号)搜索,你会发现有很多很实用的程序,找到后双击就可以运行它,如果你觉得哪一个小程序你会经常用到的话,还可以在桌面上创建它的快捷方式,这样要运行的时候就会很方便了。
Nslookup-------IP地址侦测器
explorer-------打开资源管理器
logoff---------注销命令
tsshutdn-------60秒倒计时关机命令
lusrmgr.msc----本机用户和组
services.msc---本地服务设置
oobe/msoobe /a----检查XP是否激活
notepad--------打开记事本
cleanmgr-------垃圾整理
net start messenger----开始信使服务
compmgmt.msc---计算机管理
net stop messenger-----停止信使服务
conf-----------启动netmeeting
dvdplay--------DVD播放器
charmap--------启动字符映射表
diskmgmt.msc---磁盘管理实用程序
calc-----------启动计算器
dfrg.msc-------磁盘碎片整理程序
chkdsk.exe-----Chkdsk磁盘检查
devmgmt.msc--- 设备管理器
regsvr32/u*.dll----停止dll文件运行
drwtsn32------ 系统医生
rononce -p ----15秒关机
dxdiag---------检查DirectX信息
regedt32-------注册表编辑器
Msconfig.exe---系统配置实用程序
rsop.msc-------组策略结果集
mem.exe--------显示内存使用情况
regedit.exe----注册表
winchat--------XP自带局域网聊天
progman--------程序管理器
winmsd---------系统信息
perfmon.msc----计算机性能监测程序
winver---------检查Windows版本
sfc/scannow-----扫描错误并复原
taskmgr-----任务管理器(2000/xp/2003
winver---------检查Windows版本
wmimgmt.msc----打开windows管理体系结构(WMI)
wupdmgr--------windows更新程序
write----------写字板
winmsd---------系统信息
wiaacmgr-------扫描仪和照相机向导
winchat--------XP自带局域网聊天
mem.exe--------显示内存使用情况
Msconfig.exe---系统配置实用程序
mplayer2-------简易widnows mediaplayer
mspaint--------画图板
mstsc----------远程桌面连接
mplayer2-------媒体播放机
magnify--------放大镜实用程序
mmc------------打开控制台
mobsync--------同步命令
dxdiag---------检查DirectX信息
drwtsn32------ 系统医生
devmgmt.msc--- 设备管理器
dfrg.msc-------磁盘碎片整理程序
diskmgmt.msc---磁盘管理实用程序
dcomcnfg-------打开系统组件服务
ddeshare-------打开DDE共享设置
dvdplay--------DVD播放器
net stop messenger-----停止信使服务
net start messenger----开始信使服务
notepad--------打开记事本
nslookup-------网络管理的工具向导
ntbackup-------系统备份和还原
narrator-------屏幕“讲述人”
ntmsmgr.msc----移动存储管理器
ntmsoprq.msc---移动存储管理员操作请求
netstat -an----(TC)命令检查接口
syncapp--------创建一个公文包
sysedit--------系统配置编辑器
sigverif-------文件签名验证程序
sndrec32-------录音机
shrpubw--------创建共享文件夹
secpol.msc-----本地安全策略
syskey--------系统加密,一旦加密就不能解开,保护windows xp系统的双重密码
services.msc---本地服务设置
Sndvol32-------音量控制程序
sfc.exe--------系统文件检查器
sfc /scannow---windows文件保护
tsshutdn-------60秒倒计时关机命令
tourstart------xp简介(安装完成后出现的漫游xp程序)
taskmgr--------任务管理器
eventvwr-------事件查看器
eudcedit-------造字程序
explorer-------打开资源管理器
packager-------对象包装程序
perfmon.msc----计算机性能监测程序
progman--------程序管理器
regedit.exe----注册表
rsop.msc-------组策略结果集
regedt32-------注册表编辑器
rononce -p ----15秒关机
regsvr32 /u *.dll----停止dll文件运行
regsvr32 /u zipfldr.dll------取消ZIP支持
cmd.exe--------CMD命令提示符
chkdsk.exe-----Chkdsk磁盘检查
certmgr.msc----证书管理实用程序
calc-----------启动计算器
charmap--------启动字符映射表
cliconfg-------SQL SERVER 客户端网络实用程序
Clipbrd--------剪贴板查看器
conf-----------启动netmeeting
compmgmt.msc---计算机管理
cleanmgr-------垃圾整理
ciadv.msc------索引服务程序
osk------------打开屏幕键盘
odbcad32-------ODBC数据源管理器
oobe/msoobe /a----检查XP是否激活
lusrmgr.msc----本机用户和组
logoff---------注销命令
iexpress-------木马捆绑工具,系统自带
Nslookup-------IP地址侦测器
fsmgmt.msc-----共享文件夹管理器
utilman--------辅助工具管理器
gpedit.msc-----组策略