zoukankan      html  css  js  c++  java
  • R语言

    快捷键

    1. Ctrl + Shift + F10 to restart your R session

    2.  Ctrl +O:打开文件

    3.  Ctrl + Shift+C  :加标记#

    4.  Ctrl + Shift+N  :创建新文本簿

    1.r语言中= ,<-功能是相同,有时候=会出错,所以用<-。但是从字面上解释,通常“<-”被认为是赋值,”=”是传值。
    2.在函数调用中,func(x=1)与func(x<-1)是有区别的,前者调用完后变量x不会被保留,而后者会在工作区里保留变量x=1。
    3.初始化:

    初始化

    3.1使用data.frame函数就可以初始化一个Data Frame。比如我们要初始化一个student的Data Frame其中包含ID和Name还有Gender以及Birthdate,那么代码为:

    student<-data.frame(ID=c(11,12,13),Name=c(“Devin”,”Edward”,”Wenli”),Gender=c(“M”,”M”,”F”),Birthdate=c(“1984-12-29”,”1983-5-6”,”1986-8-8”))

    3.2另外也可以使用read.table() read.csv()读取一个文本文件,返回的也是一个Data Frame对象。读取数据库也是返回Data Frame对象。

    查看student的内容为:

     
    4.数据标准化:

    scale(data, center=T,scale=T) #数据标准化
    1)center和scale默认为真,即T或者TRUE
    2)center为真表示数据中心化
    3)scale为真表示数据标准化

      读取数据:

    library(xlsx)

    ray = read.xlsx('F:/R编辑器/student.xlsx',1,encoding="UTF-8")

    文件中含有中文,必须加上:encoding="UTF-8"。不然会出现乱码。

     

    聚类分析:对样品或指标进行分类的一种分析方法,依据样本和指标已知特性进行分类。本节主要介绍层次聚类分析,一共包括3个部分,每个部分包括一个具体实战例子

    r语言使用dist(x, method = "euclidean",diag = FALSE, upper = FALSE, p = 2) 来计算距离。其中x是样本矩阵或者数据框。method表示计算哪种距离。method的取值有:
    euclidean                欧几里德距离,就是平方再开方。
    maximum                切比雪夫距离
    manhattan            绝对值距离
    canberra                Lance 距离
    minkowski            明科夫斯基距离,使用时要指定p值
    binary                    定性变量距离.
    定性变量距离: 记m个项目里面的 0:0配对数为m0 ,1:1配对数为m1,不能配对数为m2,距离=m1/(m1+m2);
    diag 为TRUE的时候给出对角线上的距离。upper为TURE的时候给出上三角矩阵上的值。

    r语言中使用scale(x, center = TRUE, scale = TRUE) 对数据矩阵做中心化和标准化变换。
    如只中心化 scale(x,scale=F) , 

    r语言中使用sweep(x, MARGIN, STATS, FUN="-", ...) 对矩阵进行运算。MARGIN为1,表示行的方向上进行运算,为2表示列的方向上运算。STATS是运算的参数。FUN为运算函数,默认是减法。下面利用sweep对矩阵x进行极差标准化变换

    1

    2

    3

    >center <- sweep(x, 2, apply(x, 2, mean)) #在列的方向上减去均值。

    >R <- apply(x, 2, max) - apply(x,2,min)   #算出极差,即列上的最大值-最小值

    >x_star <- sweep(center, 2, R, "/")#把减去均值后的矩阵在列的方向上除以极差向量

     

    1

    2

    3

    >center <- sweep(x, 2, apply(x, 2, min)) #极差正规化变换

    >R <- apply(x, 2, max) - apply(x,2,min)

    >x_star <- sweep(center, 2, R, "/")

    2)层次聚类法

    层次聚类法。先计算样本之间的距离。每次将距离最近的点合并到同一个类。然后,再计算类与类之间的距离,将距离最近的类合并为一个大类。不停的合并,直到合成了一个类。其中类与类的距离的计算方法有:最短距离法,最长距离法,中间距离法,类平均法等。比如最短距离法,将类与类的距离定义为类与类之间样本的最段距离。。。
    r语言中使用hclust(d, method = "complete", members=NULL) 来进行层次聚类。
    其中d为距离矩阵。
    method表示类的合并方法,有:
    single            最短距离法
    complete        最长距离法
    median        中间距离法
    mcquitty        相似法
    average        类平均法
    centroid        重心法
    ward            离差平方和法

    ?

    1

    2

    3

    4

    5

    6

    7

    8

    > x <- c(1,2,6,8,11)      #试用一下

    > dim(x) <- c(5,1)

    > d <- dist(x)

    > hc1 <- hclust(d,"single")

    > plot(hc1)

    > plot(hc1,hang=-1,type="tirangle")         #hang小于0时,树将从底部画起。

    #type = c("rectangle", "triangle"),默认树形图是方形的。另一个是三角形。

    #horiz  TRUE 表示竖着放,FALSE表示横着放。

    7

     

    1、常规聚类过程:


    一、首先用dist()函数计算变量间距离
    dist.r = dist(data, method=" ")
    其中method包括6种方法,表示不同的距离测度:"euclidean", "maximum", manhattan", "canberra", "binary" or "minkowski"。相应的意义自行查找。

     

    二、再用hclust()进行聚类
    hc.r = hclust(dist.r, method = “ ”)
    其中method包括7种方法,表示聚类的方法:"ward", "single", "complete","average", "mcquitty", "median" or "centroid"。相应的意义自行查找。

     

    三、画图
    plot(hc.r, hang = -1,labels=NULL) 或者plot(hc.r, hang = 0.1,labels=F)
    hang 等于数值,表示标签与末端树杈之间的距离,
    若是负数,则表示末端树杈长度是0,即标签对齐。
    labels 表示标签,默认是NULL,表示变量原有名称。labels=F :表示不显示标签。

     

    实例介绍

     

     

     

     

     

    特殊情况用法:

    当用已知距离矩阵进行聚类时,即变量间的距离已经计算完,只是想用
    已知的距离矩阵进行聚类。这时,需将距离矩阵转成dist类型。
    然后再执行hclust()聚类和plot()画图。

     

    # mydata作为距离矩阵,且为正方矩阵

    mydata<-matrix(1:25,ncol=5);

    class(mydata);

     

    # 把mydata变成dist类型

    mydist<-as.dist(mydata);

    class(mydist);

    [1] "dist"

     

    myhc<-hclust(mydist,method="complete");

    myhc;

     

    Call:

    hclust(d = mydist, method ="complete")

     

    Cluster method   : complete

    Number of objects: 5

     

    plot(myhc,hang=0.1)

     

     

    2、热图聚类过程:


    一、首先用dist()函数计算变量间距离
    dist.r = dist(data, method=" ")

     

    二、用heatmap()函数进行热点图聚类
    对于heatmap中具体参数,这里不做过多介绍,可在帮助文档中找说明。除此heatmap函数之外,gplots包中的heatmap.2()函数,也可以做热点图聚类。


    其中参数不做过多描述。若有需求,请分享并回复:heatmap.2

    即可得到答案。

    实战例子:

     

    require(graphics);

    dist.r<-dist(USArrests,method="euclidean") # 方法:欧氏距离

    dist.r

     

     

    #聚类并画图

    heatmap(as.matrix(dist.r))

     

     

    3、多维标度和聚类的结果


    MDS方法对距离矩阵进行降维,用不同的颜色来表示聚类的结果。
    另一种聚类效果展示。

     

    例子:

     

     

    系统聚类: 

    library(xlsx)

    mydata=read.xlsx('F:/R编辑器/student.xlsx',1,encoding="UTF-8")

    head(mydata)

    rownames(mydata)=mydata$科目

    mydata=mydata[,-1]

    head(mydata)

    result=dist(mydata, method = "euclidean")

    m=c("complete")

    h=list();par(mfrow=c(2,4))

    for(i in 1:length(m)){

       h[[i]]=hclust(dist(scale(mydata)),method =m[i])

       plot(h[[i]],lables=rownames(mydata),cex=2,

         main=paste("Method: ",m[i]))

    }

    5、对普通的画图为

    plot(number, count, yaxt="n", xaxt="n",xlab="x 轴名字",type="b")

    上述表示为:yaxt xaxt都是将数据轴的标度和标度值完全去掉,但是可以设置轴的名字,后面设置标度和标度值使用:

    axis(side=1, at=c(1,3,5,6,7), lables=(ni, hao, a , man, go));等均可匹配,at表示刻度值范围。

    但是有个问题就是太拥挤的不可见怎么缩小y轴的尺寸,而缩小尺寸值是在axis()命令设置at这个参数的时候就设置,使用cex.axis=0.5就表示缩小一半。而当直接使用默认的坐标刻度的时候,那么就在plot中直接放cex.axis=0.5即可。同样两个地方可以用的有:cex.lab=0.5 只缩放坐标轴的名称。 cex.main=0.只缩放主标题  cex.sub只缩放副标题。

    当然上述除了axis要设置at值,还有par函数,但是该函数主要是作用于整个画布环境,设置完后,不会对当前已经显示的影响,而只会影响后面重新生成的图片。可以设置,par(cex.axis=0.5, )

    其中设置画布大小的为:par(pin(11,7))是目前自己试出来的最大画布。

    runif()函数,随机数的产生,均匀分布随机数

    R语言生成均匀分布随机数的函数是runif()

    句法是:runif(n,min=0,max=1)    n表示生成的随机数数量,min表示均匀分布的下限,max表示均匀分布的上限;若省略参数min、max,则默认生成[0,1]上的均匀分布随机数。

    正态分布随机数的生成函数是 rnorm()

    句法是:rnormn,mean=0,sd=1  其中n表示生成的随机数数量,mean是正态分布的均值,默认为0sd是正态分布的标准差,默认时为1;

     

     

     

     

     

     

     

    五、apply()函数

          apply函数族是R语言中数据处理的一组核心函数,通过使用apply函数,我们可以实现对数据的循环、分组、过滤、类型控制等操作。

    apply函数是最常用的代替for循环的函数。apply函数可以对矩阵、数据框、数组(二维、多维),按行或列进行循环计算, 对子元素进行迭代,并把子元素以参数传递的形式给自定义的FUN函数中,并以返回计算结果。

    apply(X, MARGIN, FUN, ...)

    参数列表:

      • X:数组、矩阵、数据框
      • MARGIN: 按行计算或按按列计算,1表示按行,2表示按列
      • FUN: 自定义的调用函数
      • …: 更多参数,可选.例:apply(X,2,sum)

    只是学习笔记,非原创。
  • 相关阅读:
    5 Things Every Manager Should Know about Microsoft SharePoint 关于微软SharePoint每个经理应该知道的五件事
    Microsoft SharePoint 2010, is it a true Document Management System? 微软SharePoint 2010,它是真正的文档管理系统吗?
    You think you use SharePoint but you really don't 你认为你使用了SharePoint,但是实际上不是
    Introducing Document Management in SharePoint 2010 介绍SharePoint 2010中的文档管理
    Creating Your Own Document Management System With SharePoint 使用SharePoint创建你自己的文档管理系统
    MVP模式介绍
    权重初始化的选择
    机器学习中线性模型和非线性的区别
    神经网络激励函数的作用是什么
    深度学习中,交叉熵损失函数为什么优于均方差损失函数
  • 原文地址:https://www.cnblogs.com/cloris-Zhang/p/12295377.html
Copyright © 2011-2022 走看看