• 主页
  • 课程

    关于课程

    • 课程归档
    • 成为一名讲师
    • 讲师信息
    同等学历教学

    同等学历教学

    免费
    阅读更多
  • 特色
    • 展示
    • 关于我们
    • 问答
  • 事件
  • 个性化
  • 博客
  • 联系
  • 站点资源
    有任何问题吗?
    (00) 123 456 789
    weinfoadmin@weinformatics.cn
    注册登录
    恒诺新知
    • 主页
    • 课程

      关于课程

      • 课程归档
      • 成为一名讲师
      • 讲师信息
      同等学历教学

      同等学历教学

      免费
      阅读更多
    • 特色
      • 展示
      • 关于我们
      • 问答
    • 事件
    • 个性化
    • 博客
    • 联系
    • 站点资源

      R语言

      • 首页
      • 博客
      • R语言
      • 【算法总结】10+数据挖掘、机器 学习算法R常用函数总结(下)

      【算法总结】10+数据挖掘、机器 学习算法R常用函数总结(下)

      • 发布者 weinfoadmin
      • 分类 R语言
      • 日期 2016年1月19日
      测试开头

      九、聚类:层次聚类、动态聚类Kmeans、

      距离和相似系数

      stats包中的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的时候给出上三角矩阵上的值。

       

      stats包中的as.dist(m,diag=F, upper=F)函数:m为距离信息的对象将被转换为一个“dist”对象。默认的方法,“dist”对象,或一个矩阵(距离)或一个对象可以强制转换为一个矩阵。(仅使用矩阵的下三角,其余的则被忽略)。diag是否显示距离矩阵的对角线。upper是否显示矩阵的上三角。

       

      stats包中的scale(x, center = TRUE, scale = TRUE) :对数据矩阵做中心化和标准化变换。如只中心化 scale(x,scale=F) ,

      eigen():返回矩阵的特征值和特征向量

       

      stats包中的sweep(x, MARGIN, STATS, FUN="-",…) :对矩阵进行运算。MARGIN为1,表示行的方向上进行运算,为2表示列的方向上运算。STATS是运算的参数。FUN为运算函数,默认是减法。

       

      fpc包中的plotcluster(x,clvecd)函数:判别投影图。x为矩阵或者可以转化为矩阵的数字对象;clvecd为可以转化为整数的类向量。

       

      1、层次聚类

      stats包中的hclust(d,method = "complete", members=NULL) 函数:进行层次聚类。d为距离矩阵;method表示类的合并方法,single最短距离法,complete最长距离法,median中间距离法,mcquitty 相似法,average 类平均法,centroid重心法,ward离差平方和法;members为NULL或d长度的矢量。

       

      stats包中的cutree(tree,k, h)函数:把一棵树变成一组数据。tree为hclust()函数产生的数;k为分组数。

       

      stats包中的rect.hclust(tree, k =NULL, which = NULL, x = NULL, h = NULL,border = 2, cluster = NULL)函数:绘制矩形周围的层次聚类,来确定类的个数。tree就是求出来的对象。k为分类的个数,h为类间距离的阈值。border是画出来的颜色,用来分类的。

       

      2、动态聚类:Kmeans

      stats包中的kmeans(x,centers, iter.max = 10, nstart = 1,algorithm =c("Hartigan-Wong","Lloyd","Forgy", "MacQueen")):来进行聚类。x为数字矩阵。centers是初始类的个数或者初始类的中心。iter.max是最大迭代次数。nstart是当centers是数字的时候,随机集合的个数。algorithm是算法,默认是第一个。

       

      3、DBSCAN聚类

      fpc包中的dbscan(data,eps, MinPts, scale, method, seeds, showplot, countmode)函数:产生基于密度的任意形状的聚类。data为数据框或矩阵;eps是距离的半径,eps参数设为0.6,即两个点之间距离小于0.6则归为一个簇;minpts是最少多少个点; scale是否标准化(我猜);method 有三个值raw,dist,hybird,分别表示,数据是原始数据避免计算距离矩阵,数据就是距离矩阵,数据是原始数据但计算部分距离矩阵;showplot画不画图,0不画,1和2都画;countmode,可以填个向量,用来显示计算进度。

      如果eps设置过大,则所有的点都会归为一个簇,如果设置过小,那么簇的数目会过多。如果MinPts设置过大的话,很多点将被视为噪声点。

       

      fpc包中的plotcluster(x,clvecd)函数:判别投影图。x为矩阵;clvecd为用整数表示类的向量。

       

      十、EM算法:最大期望算法(Expectation-maximizationalgorithm,又译期望最大化算法)

      1、mclust包中的Mclust(data, G)函数:基于模型的聚类,BICEM采用分层高斯混合模型聚类初始化参数优化模型。G为BIC要计算的混合分量的整数向量;

      mclust包中的mclustBIC()函数:BIC基于模型的聚类。predict函数分类需要指定type="class"

       

       

      十一、Bootstrap(自助法)算法

      boot包中在boot(data, statistic, R, formula)函数:自助算法。data:数据,可以是向量,矩阵,数据框;statistic:统计量,如均值,中位数,回归参数,回归里的R^2等;R:调用统计量函数次数

      boot包中的boot.ci(boot.out,type)函数:实现Bootstrap置信区间的计算。boot.out为boot()的输出结果;type返回置信区间的类型,R中提供的有"norm","basic", "stud","perc", "bca",all可以指定包含所有。

       

       

      十二、bagging(装袋)算法

      1、ipred包中的bagging(formula, data)函数:装袋分类,回归和存活树。

      2、adabag包中的bagging(formula, data)函数:装袋分类,回归和存活树。

       

      十三、Boosting、adaboost、xgboost

      1、boosting回归,使用到的函数包为mboost,使用函数为mboost.用法如下:

      mboost(formula, data= list(),

            baselearner = c("bbs", "bols", "btree","bss", "bns"), …)

      其中formular需要使用到函数btree():

      btree(…,tree_controls = ctree_control(stump = TRUE, mincriterion = 0, savesplitstats =FALSE))

       

      2、adabag包中的boosting(formula, data)函数:用Adaboost.M1算法创建模型。

      adabag包中的errorevol(object,newdata)函数:计算误差演变的步骤。object为boosting()函数或bagging()函数的输出;newdata为新数据。

       

      predict函数分类需要指定type="class"

       

      3、xgboost包中的xgb.DMatrix(data, missing)函数:构建xgb.dmatrix对象从稠密矩阵,稀疏矩阵或本地文件。data为数据对象;missing表示为稠密矩阵时,选择充当缺失值的数。

       

      xgboost包中的xgboost(data,label, max.depth, eta, nround, objective)函数:创建xgboost模型的一个接口,可以使用更先进的xgb.train()函数接口。data为dgCMatrix、本地文件或者xgb.DMatrix;label为响应变量,如果为本地文件或xgb.DMatrix时不必设置此文件;eta为每提高一步的时间步长;max.depth为树的最大深度;nround为最大迭代次数;objective函数,reg:linear表示线性回归,binary:logistic表示分类的逻辑线性回归。

       

      xgboost包中的xgb.cv(data,label, max.depth, eta, nround, objective, nfold)函数:创建xgboost模型的Cross Valudation功能。data为dgCMatrix、本地文件或者xgb.DMatrix;label为响应变量,如果为本地文件或xgb.DMatrix时不必设置此文件;eta为每提高一步的时间步长;max.depth为树的最大深度;nround为最大迭代次数;objective函数,reg:linear表示线性回归,binary:logistic表示分类的逻辑线性回归;nfold为原始数据集随机划分成大小相等的子样本nfold。

       

      xgboost包中的xgb.train(param=list(),data, nrounds)函数:极限阶梯训练模型。param为参数列表;data作为一个xgb.dmatrix作为输入;nrounds表示迭代的最大次数。

       

      十四、协同过滤:

      1、recommenderlab包中的rowCounts(x)函数:每行的评分。x为ratingMatrix对象。

      recommenderlab包中的colCounts(x)函数:每列的评分。x为ratingMatrix对象。

      recommenderlab包中的rowMeans(x)函数:行式的评级法。x为ratingMatrix对象。

      recommenderlab包中的Recommender(data, k, method, Normalize, normalize_sim_matrix,na_as_zero, minRating)函数:创建推荐模型。data为训练数据;K取多少个最相似的item,默认为30;method相似度算法,默认为采用余弦相似算法cosine;Normalize采用何种归一化算法,默认均值归一化x-mean;normalize_sim_matrix是否对相似矩阵归一化,默认为否;na_as_zero是否将NA作为0,默认为否;minRating:最小评分,默认不设置;

      recommenderlab提供了6中不同的推荐方法method:random(随机推荐(real ratings)),popular(基于流行度推荐(real data)),ibcf(基于项目协同过滤(real data)),ubcf(基于用户协同过滤(real data)),SVD(基于SVD近似推荐(real data)),PCA(基于主成分分析的推荐(real data))

      recommenderlab包中的predict(object, data, n, type)函数:使用推荐模型预测。object为推荐模型;data为测试数据集;n为top-N推荐名单号码。type推荐类型,默认的类型是“topnlist”创建一个推荐列表与建议。“rating”收益预测与已知的评级代表的Na。”ratingmatrix”返回一个完成评分矩阵。

      recommenderlab包中的evaluationScheme(data, method, train, given, goodRating)函数:创建模型评估方案。data为ratingMatrix数据集;train划分为训练集的数据比例;given表示用来进行模型评价的items的数量;goodRating评价的阀值,goodRating=5表示大于等于5的都是好的;k运行评估的折数或倍数(split的默认值为1)

      method为评估的方法,有简单划分split、k折交叉验证cross-validation、自助法bootstrap。split为是随机分配给训练集的对象的比例,并将其用于测试集,默认为1;cross-validation创建一个交叉验证方案。数据被随机分成K个和每个运行K-1部分用于训练,其余部分用于测试。在所有的运行后,每一部分都被用作测试集;bootstrap创建的训练集,通过取一个引导样本(采样与更换)的大小在数据集的数量。所有的对象不在训练集被用于测试。

      recommenderlab包中的getData(x, type)函数:读取数据。x为evaluationScheme模型;type为trian、know、unknown(train表示训练集数据;know表示用户已经评分的,要用来预测的items;unknown表示用户已经评分,要被预测以便于进行模型评价的items)getData 的参数 given 便是来设置用于预测的项目数量。

       

      recommenderlab包中的dropNA(x)函数:显示稀疏矩阵不包含NA。x为矩阵。

      recommenderlab包中的normalize(x, method)函数:标准化。x为一个realRatingMatrix;method为标准化的方法,有center和Z-score两种。

      recommenderlab包中的evaluate(x, method, n)函数:评估推荐模型。x为评估计划,evaluationScheme类型;type为评估“topNList”或“ratings";n为top-N的推荐数,只有在type="topNList"时;

      method为字符串或列表。如果给定一个字符串,它定义了用于评价的推荐方法。如果几个推荐方法需要进行比较,方法包含一个嵌套列表。每个元素描述一个推荐方法,包括一个列表,包含两个元素:一个名为“方法”的字符串,包含该方法的方法和一个列表名“参数”,包含用于此推荐方法的参数。

      recommenderlab包中的plot()函数:为评价结果创建ROC曲线图或者precision-recall曲线图。annotate为T/F(evaluate为字符串时),为N、1:N(evaluate为list时)

       

      2、reshape包的cast(data, forumla, value)函数:铸造函数,铸造成你想要的形状。data为要改变的数据框;formula为铸造函数;value为列名。

       

      3、arules包中的image()函数:二元关联矩阵的视觉检查。(默认在加载recommenderlab包时加载)

       

      十五、关联规则(Aprior算法)

      R中提供了两个专用于关联规则的软件包,即arules包和arulesViz包,前者用于产生关联规则的定量化结果,后者用于产生关联规则的可视化结果。

      1、

      > rules <-apriori(titanic.raw, control=list(verbose=F),parameter=list(minlen=2, supp=0.005, conf=0.8),appearance=list(rhs=c("Survived=No","Survived=Yes"), default="lhs"))

      arules包中的apriori(data,parameter=list(support,minlen, maxlen, confidence))函数:Aprior算法挖掘频繁项集的关联规则,Apriori算法采用逐层寻找频繁项集。

      data为transactions类型对象或者任何可以转化为transactions类型的数据结构;

      parameter为APparameter类型的对象,参数有support项目集的最小支持度值(默认为0.1);minlen为项目集每项的最小数目2(默认为1),可以删除项集为空和1的;maxlen为项目集每项的最大数目(默认为10);confidence为可信度(默认为0.8)

      data为apriori函数和eclat函数所能接受的“交易”格式数据,可以通过as()函数将常见的二元矩阵、数据框进行转换;

      parameter以列表的形式存储模型所需的支持度、置信度、每个项集所含项数的最大值/最小值和输出结果类型等参数,默认情况下支持度为0.1,置信度为0.8,项集中最大项数为10,最小项数为1,输出关联规则/频繁项集类型的结果;

      appearance可为先决条件X和关联结果Y指定明确的项集(一般是分析人员感兴趣的项集),默认情况下不为X和Y指定某些项集;在appearance中设置rhs=c("Survived=No","Survived=Yes")确保关联规则的右侧rhs只出现"Survived=No"和 "Survived=Yes",当设置default="lhs"时所有的项集都可以出现在作出lhs上,关联规则的左侧;both为关联规则的两侧。

      control用来控制函数性能,如对项集进行升序或降序,生成算法运行的报告进程等,verbose=F可以设置压缩过程的细节信息

       

      arules包中的quality(rules)函数:返回挖掘的结果,包括支持度、置信度和提升度。rules为Aprior模型。

      arules包中的is.subset(x,y)函数:查找超集和子集,查询x中的每个元素是否为y的子集。注意,此方法非常消耗内存,因此非常慢。

       

      arules包中的inspect(x)函数:显示关联规则或可读形式的transactions。x为关联规则、transactions、itemMatrix类型数据集。

      arules包中的subset(x,subset)函数:求关联规则、transactions、itemMatrix的子集。subset为元素的逻辑表达式。

      arules包中的sort(x,decreasing, by)函数:关联规则的排序方法。decreasing默认为decreasing=T降序排序,升序为decreasing=F;by为排序的属性,默认为按一个属性排序。

       

      arules包中的eclat(data,parameter)函数:eclat算法挖掘频繁数据集项。data为transactions类型或者任何可以转化为transactions类型的数据结构。parameter为ECparameter类型对象,参数有support项目集的最小支持度值(默认为0.1),minlen为项目集每项的最小数目(默认为1),maxlen为项目集每项的最大数目(默认为10),confidence为可信度(默认为0.8)

      arules包中的itemFrequency()函数:获取单项的频率或支持度。

      arules包中的itemFrequencyPlot(x,support, topN)函数:创建一个item频率的条形图,针对transcation数据画频繁项的图。support为最小支持度;topN为画出最大频率的前topN项,按降序作图。

       

      2、关联规则、频繁数据集图形可视化参数

      arulesViz包中的plot(x, shading, control, method)函数:关联规则和itemsets可视化的绘图方法。x为关联规则或者频繁数据集对象;method为画图方法(有10种方法);shading为阴影选项;control为控制图像参数列表。

       

       

      十六、PageRank算法

      1、igraph包中的random.graph.game()函数或者erdos.renyi.game(n, p.or.m,directed)函数:根据Erdos-Renyi模型生成随机图形。n为图中的顶点数;p.or.m为以任意两点为边的概率或者图中的边数;directed图是否将被引导,默认为F。

       

      igraph包中的page.rank(graph)函数:PageRank算法。graph对象。

       

      2、dplyr包中的arrange(.data, …)函数:按变量排列成行,可以使用desc来降序排列变量。

       

      十七、时间序列常用到的函数

      1、stats包中的HoltWinters(x, gamma)函数:霍尔特-温特斯计算一个给定的时间序列过滤波。x为ts的对象;gamma用于季节性成分的γ参数,如果设置为假,则一个非季节性模型。

      stat包中的ts(data,start, end, frequency)函数:创建时间序列的对象。data为时间序列值的向量或矩阵;start为第一次观察的时间;end为最后一次观察的时间;frequency为每单位时间的观测次数。

       

      stats包中的plot.ts()函数:画时间对象的图形。

      stats包中的ts.plot()函数:画几个时间序列的共同图,但frequency要相同;plot.ts()基于不同的时间序列基线

      stats包中的lag.plot(x, lags,do.lines)函数:时间序列的延迟图。x表示时间序列;lags为所需延迟图的个数;do.lines为F表示不绘制线,为T表示绘制线。

       

      stats包中的stl(x,s.window, robust)函数:时间序列的季节分解。x为用于分解的单一时间序列;s.window为季节性时间跨度;robust表示使用鲁棒你和的逻辑指示。

      stat包中的decompose(x)函数:使用移动平均法,将时间序列分解成季节性、趋势和不规则的组件。x为一个时间序列。

       

      stats包中的acf(x,lag.max)函数:计算自相关和自相关函数的估计。x为时间序列的对象;lag.max为acf函数计算的最大滞后数。

      stats包中的pacf(x,lag.max)函数:用于偏自相关函数。x为时间序列的对象;lag.max为acf函数计算的最大滞后数。

       

      stats包中的ts.intersect(…,dframe)函数:绑定2个或多个时间序列。…为要绑定的2个或多个时间序列;dframe为T表示返回个数据框。

      stats包中的lag(x,k)函数:延迟一个时间序列。x为一个时间序列;k为滞后的时间单位数。

       

      stats包中的arima.sim(model,n)函数:模拟ARIMA模型。model为一个组件的列表分别指定ar和ma系数,选择一个可以使用的组件顺序,一个空的列表给出了ARIMA(0,0,0)模型,即白噪声;n为序列的长度。

       

      stats包中的arima(x,order, xreg, seasonal, method, include.mean)函数:拟合ARIMA模型的单变量时间序列。x为一个单变量时间序列(被预测的变量);order为一个规范的非季节性ARIMA模型的一部分,order包括三个整数部分,AR order、差分程度和MA order;xreg为一个向量或矩阵的外部回归,必须和x有相同的数量(预测变量);seasonal为一个规范的季节ARIMA模型的一部分,加上期间,应该是一个组件的顺序和时间,但一个规范的一个数字向量的长度为3将成为一个合适的列表与规范的顺序。method为估计方法,ML为极大似然估计,CSS为条件最小二乘估计,默认为最小二乘法;include.mean:是否包含均值项(intercept)。

       

       

      stats包中的time(x)函数:创建时间序列的矢量采样。x为单变量或多变量时间序列。

      stats包中的resid(object)函数:提取模型残差。object为一个模型残差提取的对象。

      stats包中的spec.pgram(x,spans)函数:一个平滑周期图的时间序列的谱密度估计。x为单变量或多变量的时间序列;spans为奇整数给改良丹尼尔平滑用来平滑周期图的宽度向量

      stats包中的spec.ar()函数:一个AR时间序列的谱密度估计。x为一个单变量的时间序列或AR拟合结果;

      stats包中的Box.test(x,lag, type)函数:Box-Pierce和Ljung-Box测试。x为数字型向量或单变量时间序列;lag为基于滞后相关系数的统计;type测试的类型(部分匹配)。

       

      stats包中的tsdiag(object)函数:时间序列诊断图。object为一个拟合的时间序列模型。

      stats包中的filter(x, sides, init)包:时间序列的线性过滤波(将线性滤波应用于单变量时间序列,或将一系列时间序列分开)。x为一个单变量或多变量时间序列;sides为卷积滤波器,sides=1滤波系数仅为过去的值,sides=2他们是围绕滞后0;init为递归滤波器,指定时间序列的初始值在开始值之前,在相反的时间顺序,默认是一组零。

       

      base包中的as.POSIXct(x)函数:日期时间转化函数,功能操作对象的类“POSIXlt”和“POSIXct”代表日历日期和时间。x为一个要转化的对象。

       

      2、

      forecast包中的forecast.HoltWinters(object, h)函数:用霍尔特-温特斯对象预测,对单变量时间序列模型返回Holt-Winters预测等信息。object为HoltWinters对象;h为预测周期。

      forecast包中的forecast.Arima(object, h, xreg, level)函数:使用ARIMA或ARFIMA模型预测。object为ARIMA类对象;h为预测的时间周期数,如果xreg参数被使用,忽略h值,使用xreg的值;xreg为预测变量的未来值;level为预测区间的置信水平。

      forecast包中的plot.forecast(x)函数:预测图。x为通过forecast生成的预测对象。

      forecast包中的auto.arima(x, ic, trace)函数:拟合最佳的单变量时间序列的ARIMA模型,函数提供尽可能的模型。x为一个单变量的时间序列;ic为用于模型选择的信息准则,包aicc/aic/bic,(ic=”bic”对参数个数要求非常严格);trace为T时,ARIMA模型的列表将会显示。

       

      3、

      nlme包中的gls(model,data, correlation, method)函数:用广义最小二乘法拟合线性模型。model为模型公式对象;data为数据;correlation为相关结构类;method为ML表示对数似然最大化,为REML表示限制对数似然最大化,默认为REML。

      nlme包中的corARMA(p,q)函数:ARMA(p, q)相关结构。p指定AR自动回归;q指定MA移动平均,默认都为0.

      作者:军军,北京数据开发工程师。

      本文由作者军军授权数据人网发表,并经数据人网审核。转载此文章需经作者同意,并请附上出处(数据人网)及本页链接:http://shujuren.org/index.php/Article/update/aid/128


      测试结尾

      请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!

      • 分享:
      作者头像
      weinfoadmin

      上一篇文章

      【R画图】手把手教你使用ggplot2绘制折线图
      2016年1月19日

      下一篇文章

      【数据整理】R用tidyr包进行数据操作
      2016年1月22日

      你可能也喜欢

      3-1665801675
      R语言学习:重读《R数据科学(中文版)》书籍
      28 9月, 2022
      6-1652833487
      经典铁死亡,再出新思路
      16 5月, 2022
      1-1651501980
      R语言学习:阅读《R For Everyone 》(第二版)
      1 5月, 2022

      搜索

      分类

      • R语言
      • TCGA数据挖掘
      • 单细胞RNA-seq测序
      • 在线会议直播预告与回放
      • 数据分析那些事儿分类
      • 未分类
      • 生信星球
      • 老俊俊的生信笔记

      投稿培训

      免费

      alphafold2培训

      免费

      群晖配置培训

      免费

      最新博文

      Nature | 单细胞技术揭示衰老细胞与肌肉再生
      301月2023
      lncRNA和miRNA生信分析系列讲座免费视频课和课件资源包,干货满满
      301月2023
      如何快速批量修改 Git 提交记录中的用户信息
      261月2023
      logo-eduma-the-best-lms-wordpress-theme

      (00) 123 456 789

      weinfoadmin@weinformatics.cn

      恒诺新知

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      链接

      • 课程
      • 事件
      • 展示
      • 问答

      支持

      • 文档
      • 论坛
      • 语言包
      • 发行状态

      推荐

      • iHub汉语代码托管
      • iLAB耗材管理
      • WooCommerce
      • 丁香园论坛

      weinformatics 即 恒诺新知。ICP备案号:粤ICP备19129767号

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      要成为一名讲师吗?

      加入数以千计的演讲者获得100%课时费!

      现在开始

      用你的站点账户登录

      忘记密码?

      还不是会员? 现在注册

      注册新帐户

      已经拥有注册账户? 现在登录

      close
      会员购买 你还没有登录,请先登录
      • ¥99 VIP-1个月
      • ¥199 VIP-半年
      • ¥299 VIP-1年
      在线支付 激活码

      立即支付
      支付宝
      微信支付
      请使用 支付宝 或 微信 扫码支付
      登录
      注册|忘记密码?