• 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)

    只是学习笔记,非原创。
  • 相关阅读:
    BAT都来参加的 DevOps Master 培训
    如何快速复制BAT级的DevOps工具链
    DevOps开源工具的三种分类整理
    Devops成功的八大炫酷工具
    阿里CI/CD、DevOps、分层自动化技术
    Android爬坑之旅:软键盘挡住输入框问题的终极解决方式
    Android应用程序窗体View的创建过程
    LeetCode Convert Sorted List to Binary Search Tree
    Spark Streaming性能优化系列-怎样获得和持续使用足够的集群计算资源?
    android nfc中Ndef格式的读写
  • 原文地址:https://www.cnblogs.com/cloris-Zhang/p/12295377.html
Copyright © 2020-2023  润新知