R的知识迭代之基础操作

Python021

R的知识迭代之基础操作,第1张

这其中有一些是我之前没有学习到的,第一次get感觉超级有用

R运行都是靠对象,所有的对象都有两个内在属性: 类型和长度

类型 包括四种:数值型、字符型、复数型、逻辑型(T/F/NA),用函数 mode() 查看。另外不管什么类型的数据,缺失值都是用NA(Not Available)表示,不是数值用 NaN (Not a Number)表示;

长度 是对象中元素的数目,用 length() 查看

只有数据框和列表支持多种对象并存;因子只有两种类型

向量是一个变量的取值;因子是一个分类变量;数组是一个k维的数据表;矩阵是数组的特例【数组或者矩阵的所有元素都是一种】;数据框是一个或几个向量/因子构成,并且它们必须等长,可以是不同的类型;列表可以包含任何类型的对象(也可以列表包含列表)

利用 ls() 可以查看当前在内存中的对象,但是这个函数只列出了对象名,并且是所有的;

想要查看名称中含有某个指定字符(如x)的对象,可以指定pattern: ls(pat = "x")

想要看以某个字母开头的对象,可以利用 ls(pat = "^x")

如果想看所有对象的详细信息呢? ls.str()

注意引号在输入时应该写作: \" ; paste() 可以连接多个参数成为字符串,其中如果有数值,那么数值会被强制转为字符串;默认空格分割各个字符,使用 sep= 自定义

TRUE、FALSE可以简写成T、F;如果转换为数值,FALSE为0,TRUE为1

利用 factor() 建立

levels 指定因子水平(缺省值是向量x中不同的值);

labels 指定水平名称;

ordered 是逻辑型选项,表示因子水平是否有顺序

这里简单说下根据逻辑值提取

相比于数组,矩阵使用频率更高,构建矩阵使用 matrix

矩阵的排列是有方向性的,规定矩阵 按列 排列,一般不说明的时候,统计函数也是按列计算(但是可以用MARGIN来改变,等于1代表列,等于2代表行)

cov() 与 cor() 分别计算矩阵的协方差矩阵和相关系数阵;

可以进行标准化 scale(x, center=T, scale=T) ;

按列求均值 apply(x, MARGIN=2, FUN=mean)

虽然说数据框与矩阵很相似,也是二维表格,也是要求各个变量的观测值长度相等,但是,在 数据框中,行和列的意义是不一样的 , 其中列表示变量,行为观测

一般用 write.table() 或者 save()

R内置的基本数据集有100多个(常为数据框和列表)。它们随R的启动全部一次性自动载入,通过命令 data() 可以查看全部的数据集(也包含了通过 library() 加载的包中数据集);使用 data(package = "pkname") 可以列出包 pkname 中的所有数据集,但是可能还未被加载,确定要用的时候可以加载包

涉及多个数据集的分析时,最常使用 load("/path/")

kmeans文档中时这样写的:

Description

Perform k-means clustering on a data matrix.

Usage

kmeans(x, centers, iter.max = 10, nstart = 1, algorithm = c("Hartigan-Wong", "Lloyd", "Forgy",

"MacQueen"), trace=FALSE)

所以,默认的最大迭代次数是10,当然我们使用的时候自己来设置!一般10、30、50都行吧!

最近找了一下RWR算法的介绍,发现中文的blog全是互相抄的,讲的不是很清楚。最后发现medium上面有个博文写的还不错,下面抄了一点。

https://medium.com/@chaitanya_bhatia/random-walk-with-restart-and-its-applications-f53d7c98cb9

最基本的随机游走:给定一个连接图,以及图中每个节点的转移概率,目的就是找到从某个起点开始随机走动,最终停在每个点的概率。

重启随机游走的区别就是在每次游走之后有一定概率回到起点。

先看一下公式:

的大小在0,1之间, 为转移概率矩阵, 是从节点 到节点 的概率。 是起点向量,i为起点则 。r是终点向量。

下面来解释这个公式

当e为起点,下次移动的落点为 的概率可以用下面这个公式得到:

为 的第i行。所以如果没有重启机制的话,k次移动之后的落点为 的概率是:

如果有重启机制就只能用递推公式:

如果假定随着移动次数增加, 最终会收敛(事实也是如此),递推公式就可以写成最开始给出的那个公式:

暴力一点就是迭代直到收敛。

或者求逆矩阵

得到

感觉基本上都是把落点概率作为一种相似度度量。

Image segmentation

图像分割中,每个像素作为图中的节点,转移概率为像素之间的相似度,以某个像素为起点游走,落点概率高的可以作为一个cluster。

类似的应用还有Community detection, Recommender Systems等。