预测函数:predict() type="prob"判别该量度的昆虫归类为A、B和C的概率;type="response":判别该量度的昆虫的类别;
预测分类的概率的函数predict(…, type)参数type:
R语音里面不同模型,参数type取值也不同。例如,可能取值有prob、posterior、raw(朴素贝叶斯)、probability(请参考使用包的帮助文档确定),type="class"表示结果为分类。
mice包中的mice(data, m)函数:通过链式方程产生多个虚值。data为数据框或包含不完整数据的矩阵,缺省值为NA;m为多重插补数,默认为5。(随机森林)
stats包中的cutree(tree,k, h)函数:把一棵树变成一组数据。tree为hclust()函数产生的数;k为分组数。
model_id 3)
R语言plyr包合并、排序、分析数据并编制香农-威纳指数
plyr包中的colwise(fun)函数:列式函数,在数据框的列上操作的函数。fun为要数据框的列上操作的函数。
数据预处理包:dplyr常用包:
1、caret包中的train(formula, data, method,metirc, trControl, tuneGrid, preProcess)函数(不同调谐参数的预测模型):设置一个网格的调整参数的一些分类和回归例程,适合每个模型,并计算基于重采样的性能测量。method指定分类或回归模型的字符串;metric指定将用于选择的最佳模型的概要度量的字符串;trControl定义控制函数行为值的列表;tuneGrid一个数据框可能的调整值,列名与调整参数相同;preProcess为指定的预处理参数。
caret包中的trainControl(method,number, repeats, selectionFunction)函数:训练控制参数。method为重采样方法,有boot/boot632/cv/repeatedcv/LOOCV/LGOCV/none/oob/adaptive_cv/adaptive_boot/adaptive_LGOCV;number为重采样的迭代次数;repeats为几重交叉验证;selectionFunction选择最佳调整参数的函数。
caret包中的findCorrelation(x,cutoff)函数:确定高度相关变量。x为相关系数矩阵;cutoff成对相关系数绝对值的截止值。
caret包中的rfeControl(functions,method, number)函数:控制特征选择算法。functions为一个模型拟合、预测和变量重要性的函数列表;method为外部的重采样方法(boot、cv等);number为N-fold
CV或重采样迭代次数。
caret包中的rfe(x,y, sizes, rfeControl)函数:一个简单的逆向选择,即递归特征选择(RFE)。x为预测模型的数据库或矩阵;y为训练集的输出;sizes是应保留特征数的整数数字向量;rfeControl为一个包含拟合和预测函数的选择列表。
createdatapartition(y, times, p=0.5, list)函数:创建一系列的测试/训练的分区。y为真实分类数据,一个输出的向量,如果是createtimeslices,这些应该是按时间的顺序;times为创建的分区的数目,除非重复实验,否则需要一个就行;p训练集占数据集的比重;list为F是不将结果列在列表中。
createresample()函数:创建一个或多个Bootstrap样本;
Createfolds()函数:将数据分为K组;
createtimeslices()函数:创建交叉验证样本信息可用于时间序列数据。
2、R语言sqldf包的sqldf()函数:对数据框做SQL操作
<-sqldf("select * from mtcars where carb=1 order by mpg",row.names=TRUE)
3、R中常用的几个扩展包,其中包括用ggplot2包来绘图,用glmnet包做回归,用tm包进行文本挖掘,用plyr、reshape、lubridate和stringr包进行数据预处理,stringr包处理字符串。
4、在数据分析的过程中,我们经常需要对数据建模并做预测。在众多的选择中,randomForest, gbm和glmnet是三个尤其流行的R包,它们在Kaggle的各大数据挖掘竞赛中的出现频率独占鳌头,被坊间人称为R数据挖掘包中的三驾马车。根据我的个人经验,gbm包比同样是使用树模型的randomForest包占用的内存更少,同时训练速度较快,尤其受到大家的喜爱。
irr包中的Kappa2()函数:计算科恩Kappa和权重Kappa作为2者一致性的一个指标。
(需要内推数据工作,请加微信:luqin360)
R 中的工具:
regsubsets函数进行feature选择。
glmnet包用于ridge,lasso;
pls包中的pcr()函数用于PCR,plsr()函数用于PLS;
mgcv包用于GAM;
lme4包用于mixed effects model
1、通过car(DAAG)包的vif()函数,返回的是方差的膨胀因子,如果膨胀因子大于10,则说明有多重共线性(用于解决多重共线性,判断膨胀因子)。用法如下:
library(DAAG)
lm.reg<-lm(Employed~GNP+Unemployed+Armed.Forces+Population+Year,data=longley)vif(lm.reg,digits=4)
膨胀因子大多大于10,存在严重的相关性
一般来说kappa大于1000,或vif大于10说明存在复共线性。
(car包中的)回归诊断实用函数
car包中的qqPlot(x, labels, id.method, simulate)函数:分位比较图。x为lm对象;labels为文本字符串向量;id.method为点识别方法;simulate为T,计算置信区间。2、car包的scatterplotMatrix()函数:返回的是N*N的散点图矩阵。增强的散点图矩阵单因素显示沿着对角线;SPM是scatterplotmatrix(散点图矩阵)缩写。此功能只需设置一个与自定义面板功能对的调用(用于画图判断)。例如:
"Population",
spread=T为方差函数的估计;
car包中的scatterplot()函数:可以很容易、方便地绘制二元关系图;增强的散点图
car包的vif()函数:用于计算膨胀因子(用于解决多重共线性)。
car包中的outlierTest(model)函数:Bonferrnoi离群点检测。model为lm或glm对象。是根据单个最大(或正或负)残差值的显著性来判断是否有离群点,若不显著,则说明数据集中没有离群点,若显著,则必须删除该离群点,然后再检验是否还有其他离群点存在。
car包中的influencePlot()函数,可将离群点、杠杆点和强影响点的信息整合到一幅图形中
car包中的influencePlot(mdoel,id.method)函数:回归影像图。model为线性或广义线性模型;id.method为“identify”为交互点识别。
3、psych包用于主成分分析
psych包中的princomp()函数:可以根据原始数据或相关系数矩阵做主成分分析 。格式为:principal(x,nfactors=,rotate=,scores=)
其中:x是相关系数矩阵或原始数据矩阵;nfactors设定主成分个数(默认为1);rotate指定旋转的方式(“none”或“varimax”)[默认最大方差旋转(varimax);scores设定是否需要计算主成分得分(“T”或”F”)(默认不需要)。
psych包中的fa.parallel()函数:可以判断主成分的个数,其使用格式为: fa.parallel(x,fa = , n.iter
=)
其中,x为待研究的数据集或相关系数矩阵,fa为主成分分析(fa="pc")或者因子分析(fa = "fa"),n.iter指定随机数据模拟的平行分析的次数。
4、利用MASS包中的函数lm.ridge()来实现岭回归
利用ridge包中的linearRidge()函数进行自动选择岭回归参数
通过effects包中的effect()函数,可以用图形展示交互项的结果
利用ridge包中的linearRidge()函数进行自动选择岭回归参数
5、lars包提供了lasso()函数(lasso:套锁算法,用于解决多重共线性):Lasso算法则是一种能够实现指标集合精简的估计方法。并利用AIC准则和BIC准则给统计模型的变量做一个截断,进而达到降维的目的。因此,我们通过研究Lasso可以将其更好的应用到变量选择中去。
lars包提供的lars()函数:这些是套索所有的变种,并提供系数和适合整个序列,从零开始,以最小二乘法拟合。
lars包的cv.lars()函数:计算交叉验证误差曲线的Lars。cva lars包中的coef.lars()函数或者predict.lars()函数:从拟合的lars模型预测或提取系数;当lars()生产解决方案的整个路径,predict.lars允许提取沿着路径在特定的点预测。coef
S 一个值,或一个向量值,索引路径。它的值取决于mode= argument。默认情况下(mode= “step”),应该采取p和0之间的值
Mode Mode="step"是指S =参数指标的Lars的步数,系数将返回相应的值对应于step s。如果mode="fraction",然后应该是0和1之间的数,它指的是系数向量范数比,相对为了规范在全最小二乘解。Mode="norm"指的是指L1范数的系数向量。Mode="lambda"用套索正则化参数的;其他型号是最大相关(不让Lars
/逐步模型)。允许缩写。
共glmnet包实现lasso套锁算法,用cv.glmnet()函数来实现cv(交叉验证):做为glmnet K-fold交叉验证,产生了一个图,并返回一个值λ。
gla 折叠数-默认为10。虽然折叠数可以当样本容量大(留一CV),这是不推荐用于大型数据集。最小值是允许nfolds= 3
1、psych包的实例请参照 主成分分析2:psych包
psych包中的常用函数:
#含多种可选的方差放置方法的主成分分析
psych包中的fa.parallel()函数:可以判断主成分的个数,其使用格式为:
fa.parallel(x, fa = , n.iter =)
其中,x为待研究的数据集或相关系数矩阵,fa为主成分分析(fa= "pc")或者因子分析(fa = "fa"),n.iter指定随机数据模拟的平行分析的次数。
psych包中的principal( )函数:可以根据原始数据或相关系数矩阵做主成分分析,其使用格式为:
principal(x, nfactors =, rotate=, scores =)
其中,x是原始数据或相关系数矩阵,nfactors指定主成分个数,rotate指定旋转的方法(“none”或“varimax”),scores为是否需要计算主成分得分(“T”或”F”)。
使用fa()函数提取相应的因子,fa()函数的格式如下:fa(r,nfactors=,n.obs=,rotate=,scores=,fm=)
r是相关系数矩阵或者原始数据矩阵;
nfactors设定提取的因子数(默认为1);
n.obs是观测数(输入相关系数矩阵时需要填写);
rotate设定旋转的方法(默认互变异数最小法);
scores设定是否计算因子得分(默认不计算);
fm设定因子化方法(默认极小残差法)。
与PCA不同,提取公共因子的方法很多,包括最大似然法(ml)、主轴迭代法(pa)、加权最小二乘法(wls)、广义加权最小二乘法(gls)和最小残差法(minres)未旋转的主轴迭代因子法
1、e1071包的naiveBayes函数提供了naive bayes的具体实现,其用法如下:
0,
x:表示数字矩阵或数字变量的数据框;y:表示类向量;
laplace 默认为0表示禁用拉普拉斯平滑,正数表示启用拉普拉斯平滑
object:“NaiveBayes”类的对象
predict(object, newdata, type) object:naveBayes模型;newdata:测试数据;type:预测类型,type如果为class代表是分类,如果是raw则代表概率的计算 ,predict函数分类需要指定type="class"
klaR包中的NaiveBayes()函数:因为该函数比e1071包的naiveBayes()函数增加了两个功能,一个是可以输入先验概率,另一个是在正态分布基础上增加了核平滑密度函数。
predict()预测函数需要指定type="class"来分类
2、tm包通常用于文本的分析:
tm包中的函数Corpus()(或VCorpus):导入数据。函数的用法如下:Corpus(x,readerControl = list(reader
= x$DefaultReader, language ="en"),…)
对于这些资料来源(x),tm 包提供了一些相关的函数,比如:DirSource(处理目录)、VectorSource(由文档构成的向量)、
DataframeSource(数据框)等。
tm 包中的tm_map()函数:可以通过maps 方式将转化函数实施到每一个单上。m_map()的主要用法如下:tm_map(x, FUN,
…, useMeta = FALSE, lazy = FALSE)
再介绍字符串的处理,分割函数:strsplit。使用格式为:
strsplit(x,split, fixed = FALSE, perl = FALSE, useBytes = FALSE)
主要参数说明:
X:字串向量,每个元素都将单独进行拆分。
Split:为拆分位置的字串向量,默认为正则表达式匹配(fixed=FALSE)fixed=TRUE,表示使用普通文本匹配或正则表达式的精确匹配。
Perl:表示可以选择是否兼容Perl的正则表达式的表述方式。
findFreqTerms(x, lowfreq, highfreq)函数:在文档术语或术语文档矩阵中查找频繁项。x为一个术语文档矩阵;lowfreq为一个数字,表示较低的频繁项;highfreq为一个数字,表示较高的频繁项
3、caret包的函数:(有K近邻算法的函数knn3)
createdatapartition(y, times, p=0.5, list)函数:创建一系列的测试/训练的分区。y为真实分类数据,一个输出的向量,如果是createtimeslices,这些应该是按时间的顺序;times为创建的分区的数目,除非重复实验,否则需要一个就行;p训练集占数据集的比重;list为F是不将结果列在列表中。
createresample()函数:创建一个或多个Bootstrap样本;
Createfolds()函数:将数据分为K组;
createtimeslices()
函数:创建交叉验证样本信息可用于时间序列数据。
caret包中的knn3(formula,data, subset, k)函数:K近邻分类算法。formula为模型公式;data为数据集;subset为自数据集;k为选择的近邻个数
caret包中的predict.knn3(object,newdata, type)函数也可以写成predict():K近邻算法的预测函数。object为knn3类对象(K近邻算法模型);newdata为要观测数据的数据框;typetype如果为class代表是分类,如果是prop则代表概率的计算
4、gmodels包的CrossTable(x, y, prop.chisq, prop.t, dnn)函数:独立试验因素的交叉制表。 x为向量或矩阵,如果y指定,必须是一个向量;y为一个矩阵或数据框的向量;prop.chisq为T时,每个单元的卡方贡献将被包括;prop.t为T时,t分布的分布率将被包括;dnn在结果的尺寸中被给予的名称。
1、class包的knn(train, test, cl, k=1)函数:tarin为训练集数据矩阵或数据框;test为测试集数据矩阵或数据框;cl为训练集的真实分类数据,应是因子类型的;k为选择的近邻个数
class包中的knn1(train,test, cl)函数:即 knn 中选择 k = 1 的情况,因此 knn1 是 knn 的一个退化情况。
class包中的knn.cv(train, cl, k, prob):K最近邻交叉验证函数。train为训练集数据;cl为训练集的真实分类因子;k为选择的近邻个数;prob为T时,投票获胜类将以概率返回。
其使用的方法是leave-one-out cross validation。即所有的样本点都算到训练集中去,不设置测试集。对每个训练集中的样本点,都使用剩余的样本点中的 k 个最近邻来进行投票,从而决定该样本点的分类。
2、 R语言里的kknn包也可以实现最邻近算法——使用kknn函数
kknn(formula = formula(train),train, test, na.action =na.omit(), k= 7, distance = 2, kernel ="optimal", ykernel = NULL, scale=TRUE, contrasts= c('unordered' = "contr.dummy",ordered ="contr.ordinal")):为K最近邻算法。其中,formula表示训练集的表达式对象;train为训练集的数据框或矩阵;test为测试集的数据库或矩阵;distance为明科夫斯基距离;na.action 缺失值处理,默认为去掉缺失值;kernel内核使用,可能的选择是“rectangular”(这是标准的加权KNN),"triangular","epanechnikov"(或β(2,2)),"biweight"(或β(3,3)),“triweight”(或β(4,4)),"cos","inv", "gaussian", "rank" and "optimal";k为考虑的邻近数量
sample(x,size, replace=F, prob=NULL):采样函数。x表示要取样的源数据集,为一个向量;size非负整数,要采样的大小;replace表示是否为有返回采用,为F表示不返回采样;prob用于获取被采样的向量的元素的概率权重向量
fitted():提取模型拟合值。
assign(x, value)赋值函数。x为变量名;value要赋值给x的值。assign("x",c(10.4, 5.6, 3.1, 6.4, 21.7)) 与x list.files(path, ignore.case):列出文件夹或目录中的文件。path表示文件夹或路径;ignore.case为T表示忽略大小写。
read.fwf(file, widths):读取固定格式宽度的文件到一个数据框中。file为要读取的文件;widths给出宽度。
3、MASS包中的lda(x, grouping)函数:线性判别分析。x为包含解释性变量的矩阵或数据框;grouping为一个指定了观测类因子
lad(formula, data, na.action)函数:formula为分类公式;data为需要分类的数据;na.action是否忽略NA值
4、caret包的函数:(有K近邻算法的函数knn3)
createdatapartition(y, times, p=0.5, list)函数:创建一系列的测试/训练的分区。y为真实分类数据,一个输出的向量,如果是createtimeslices,这些应该是按时间的顺序;times为创建的分区的数目,除非重复实验,否则需要一个就行;p训练集占数据集的比重;list为F是不将结果列在列表中。
createresample()函数:创建一个或多个Bootstrap样本;
Createfolds()函数:将数据分为K组;
createtimeslices()函数:创建交叉验证样本信息可用于时间序列数据。
caret包中的knn3(formula,data, subset, k)函数:K近邻分类算法。formula为模型公式;data为数据集;subset为子数据集;k为选择的近邻个数
caret包中的predict.knn3(object,newdata, type)函数也可以写成predict():K近邻算法的预测函数。object为knn3类对象(K近邻算法模型);newdata为要观测数据的数据框;typetype如果为class代表是分类,如果是prop则代表概率的计算
决策树与随机森林包总结:
party包中的ctree()函数:不能很好的处理缺失值,含有缺失值的实例有时会被划分到左子树中,有时会被划分到右子树中,由替代规则决定。predict()函数:测试集与训练集的分类变量水平不同(因子水平不同时),对测试集的预测会失败。
rpart包中的rpart()函数:构建决策树,允许选择具有最小预测误差的决策树,然后在使用predict函数进行预测。
randomForst包中的randomForest()函数:不能处理带有缺失值的数据;分类水平划分数量最大为32(即因子水平为32)
party包中的cforest()函数:没有限定分类属性的水平划分数(即因子水平数)
1、rpart包的rpart(formula, data, method,control, parms)函数:拟合rpart模型。formula为拟合公式;data为数据集;method:树的末端数据类型选择相应的变量分割方法:连续性method=“anova”,离散型method=“class”,计数型method=“poisson”,生存分析型method=“exp”;parms用来设置三个参数:先验概率、损失矩阵、分类纯度的度量方法(gini和information);control:为rpart算法的控制细节选项;cost我觉得是损失矩阵,在剪枝的时候,叶子节点的加权误差与父节点的误差进行比较,考虑损失矩阵的时候,从将“减少-误差”调整为“减少-损失”
rpart函数用来实现CART(分类回归树)
rpart包的rpart.control(minsplit, minbucket, maxdepth, cp,xval=10)函数:对树进行一些设置。 minsplit是最小分支节点数,这里指大于等于20,那么该节点会继续分划下去,否则停止;minbucket:叶子节点最小样本数;maxdepth:树的深度;cp全称为complexity parameter,指某个点的复杂度,对每一步拆分,模型的拟合优度必须提高的程度,将要被修剪的rpart复杂性参数;xval是10折交叉验证。
rpart.plot包的rpart.plot(x, type,extra, branch)函数:画出rpart(决策树)模型。x为rpart模型;extra在节点上显示额外的信息,不同的数字代表不同的类型(请参考帮助);branch控制分支线的形状,指定一个值在0(V形分支)和1(方形分支),默认情况下(fallen.leaves)为1否则为2;type为画图的类型,分为5种:
0默认。画一个分裂的标签,在叶子的每一个分裂标签和一个节点标签。
1标签所有节点,不只是树叶。
2像1,但绘制的标签下面的节点标签。
3为左、右方向画单独的拆分标签。
4像3,但标签的所有节点,不只是叶子节点,类似于文本。
rpart包的printcp(model)函数:显示优化剪枝后的复杂参数表格。x表示拟合的模型对象。
rpart包的prune(model, cp)函数:选择具有最小xerror的cp(复杂性参数)函数。tree为拟合的模型对象;cp全称为complexity parameter,指某个点的复杂度,对每一步拆分,模型的拟合优度必须提高的程度,将要被修剪的rpart复杂性参数。
2、C50包中的C5.0(x, y, trials=1, costs)函数:x要预测的数据框或矩阵;y为因子类型的预测分类;trials一个整数时为指定的迭代次数,一个值表示一个单一的模型;costs表示与可能出现的错误相关的成本矩阵。该矩阵应具有碳列和行,其中,C是类级别的数
predict()预测函数需要指定type="class"来分类
3、在R中我们使用rpart包中的rpart()函数实现树回归(CART)
使用tree包中的tree()函数实现CART算法
4、party包中的ctree(formula, data, controls)函数:决策树。formula为模型拟合公式;data为训练数据集;controls为树的控制条件,为ctree_control类。
party包中的ctree_control(minsplit,minbucket, maxsurrogate, maxdepth)函数:party包中决策树的控制条件。minsplit控制一个最小权重和的节点以便进行分割;minbusket设置了一个最小权重和的叶子节点;maxsurrogate表示替代分裂点的数量以便用于评估;maxdepth控制决策树的深度。其中,minsplit/minbusket可以设置为训练集的1/100,这些参数的值可以根据商业问题、领域专家的经验、数据、执行算法需要的合理时间以及 决策树的期望规模来设置。
1、R语言中有两个软件包可以运行随机森林,分别是randomForest(Liaw,2012)和party
randomForest包中的randomForest(formula, data, ntree, nPerm, mtry, proximity,importace)函数:随机森林分类与回归。ntree表示生成决策树的数目(不应设置太小);nPerm表示计算importance时的重复次数,数量大于1给出了比较稳定的估计,但不是很有效(目前只实现了回归);mtry表示选择的分裂属性的个数;proximity表示是否生成邻近矩阵,为T表示生成邻近矩阵;importance表示输出分裂属性的重要性。
函数randomForest()中有两个非常重要的参数,而这两个参数又将影响模型的准确性,它们分别是mtry和ntree。一般对mtry的选择是逐一尝试,直到找到比较理想的值,ntree的选择可通过图形大致判断模型内误差稳定时的值。randomForest包无法处理包含缺失值或者拥有超过32个等级水平的分类变量。
randomForest包中的rfImpute(formula, data)函数:填补缺失值的预测数据使用接近于随机森林。
randomForest包中的varImpPlot(x)函数:变量重要性图,变量的重要性dotchart通过随机森林测量。x为randomForest模型对象。
importance()函数用于计算模型变量的重要性
MDSplot()函数用于实现随机森林的可视化
rfImpute()函数可为存在缺失值的数据集进行插补(随机森林法),得到最优的样本拟合值
treesize()函数用于计算随机森林中每棵树的节点个数
2、party包中的cforest(formula, data,controls)函数:随机森林模型。formula为建模公式;data为训练数据;controls为随机森林生长的参数。
party包中的cforest_unbiased(mtry,ntree)函数:随机森林生长的控制参数。mtry为随机森林算法随机 采样输入的变量数;ntry为随机森林的树数目。
1、e1071包中的svm()函数,如下:
NULL,
主要参数说明:
Formula:分类模型形式,在第二个表达式中使用的的x,y可以理解为y~x。
Data:数据集
Subset:可以指定数据集的一部分作为训练集
Na.action:缺失值处理,默认为删除数据条目
Scale:将数据标准化,中心化,使其均值为0,方差为1.默认自动执行。
Type:SVM的形式,使用可参见上面的SVMformulation,type的选项有:C-classification,nu-classification,one-classification
(for noveltydetection),eps-regression,nu-regression。后面两者为利用SVM做回归时用到的,这里暂不介绍。默认为C分类器,使用nu分类器会使决策边界更光滑一些,单一分类适用于所有的训练数据提取自同一个类里,然后SVM建立了一个分界线以分割该类在特征空间中所占区域和其它类在特征空间中所占区域。
Kernel:指的是支持向量机的类型。在非线性可分时,我们引入核函数来做非线性可分,R提供的核介绍如下:线性核linear:使用它的话就成为线性向量机,效果基本等价于Logistic回归。但它可以处理变量极多的情况,例如文本挖掘;多项式核(polynomial):n次多项式核函数,适用于图像处理问题。选择n的好方法是从1(一个线性模型)开始,然后递增至估计误差不再改进为止。通常,相当小的数目就足够了;高斯核(radial):高斯核函数,最流行易用的选择。参数包括了sigma,其值若设置过小,会有过度拟合出现;Sigmoid核(sigmoid):反曲核函数,多用于神经网络的激活函数,默认为高斯核(RBF);
在kernlab包中,可以自定义核函数,实践中,核函数的选择一般并不导致结果准确率的很大差别(也有特例!)。
Degree:多项式核的次数,默认为3
Gamma:除去线性核外,其他的核的参数,默认为1/数据维数
Coef0,:多项式核与sigmoid核的参数,默认为0
Cost:C分类的惩罚项C的取值,是违反约束时的成本函数。
Nu:nu分类,单一分类中nu的取值
Cross:做K折交叉验证,计算分类正确性。
class.weights用来指定各类别的权重(可用在各类数目不相同时)。
probability:是否允许概率预测。
e1071包中的tune(method,train.x, train.y, kernel, ranges)函数:使用网格搜索的参数调整。method为需要调整的函数;train.x/train.y预测的自变量和因变量(可以用formula代替);kernel为模型使用的核函数;ranges为采样空间的参数向量。
e1071包中的tune.svm(formula, data, gamma, cost)函数:调整函数。
fitted(object, …)返回模型在训练集上的预测值。
predict (object, …)返回模型的预测结果。当x是训练集时,pred predict函数分类需要指定type="class"
klaR包的svmlight()函数也可以实现SVM(支持向量机)算法。
2、kernlab包中的ksvm(formula, data, kernal, type, kpar, C, prob.model)函数:支持向量机模型。C约束违约成本(默认值:1)这是'C'的正规化长期在拉格朗日公式;kernel用于训练和预测的核心功能。这个参数可以被设置为任何函数,类的内核参数,它计算的内部产品在特征空间中的向量参数。kernlab提供最流行的核心功能,可以通过设置内核参数的字符串:
rbfdot径向基核“高斯”
polydot多项式核函数
vanilladot线性核
tanhdot双曲正切核
laplacedot拉普拉斯核
besseldot贝塞尔核
anovadot ANOVA RBF核函数
splinedot样条核
type表示是用于分类还是回归,还是检测,取决于y是否是一个因子。缺省取C-svc或eps-svr。可取值有
C-svc C classification
nu-svc nu classification
C-bsvc bound-constraint svm classification
spoc-svc Crammer, Singer native multi-class
kbb-svc Weston, Watkins native multi-class
one-svc novelty detection
eps-svr epsilon regression
nu-svr nu regression
eps-bsvrbound-constraint svm regression
kpar超参数(核参数)的列表。这是一个列表,其中包含了用于内核函数的参数。对于现有内核的有效参数:
sigma inverse kernelwidth for the Radial Basis kernel function "rbfdot"
and the Laplaciankernel "laplacedot".
degree, scale,offset for the Polynomial kernel "polydot"
scale, offset forthe Hyperbolic tangent kernel function "tanhdot"
sigma, order, degreefor the Bessel kernel "besseldot".
sigma, degree forthe ANOVA kernel "anovadot".
length, lambda,normalized for the "stringdot" kernel where length
is the length ofthe strings considered, lambda the decay factor and normalized
a logicalparameter determining if the kernel evaluations should be normalize
prob.model如果设置为true,建立一个模型类的概率或在回归计算,计算拟合残差的拉普拉斯分布的尺度参数。对输出数据进行拟合,对训练数据进行交叉验证了3倍。默认为F。
二分类问题:
2), matrix(rnorm(
1、nnet包中的class.ind(cl)函数:从一个因子生成类指标矩阵。cl为类的因子或向量。返回值为:除了与类对应的列外,该矩阵为0。生成类别的示性函数
nnet包中的nnet(x,y, size, rang, decay, maxit, skip, Hess, trace)函数:单层的前向神经网络模型。size神经网络隐藏层的神经元个数;rang初始随机权值[-rang,rang];decay经元输入权重的一个修改偏正参数,表明权值是递减的(可以防止过拟合);maxit最大反馈迭代次数;skip是否允许跳过隐藏层;Hess是否输出Hessian值;trace指出是否要最优化。
适用于神经网络的方法有predict,print和summary等,nnetHess函数用来计算在考虑了权重参数下的Hessian矩阵,并且检验是否是局部最小。
2、AMORE包中的newff(n.neurons, learning.rate.global, momentum.global, error.criterium, Stao, hidden.layer, output.layer, method)函数:创建多层前馈神经网络。n.neurons是个数值向量,包含在每个层的神经元的数目,第一个数是输入神经元的数量,最后是输出神经元的数量,其余的都是隐藏层神经元的数量;learning.rate.global全局的学习率;momentum.global全局的动量值(有的学习算法需要设置这个值貌似是步长);error.criterium误差衡量算法,我用误差平方和,所以选“LMS”,“LMLS”为对数平方差,“TAO”为TAO
Error;hidden.layer隐藏层激活函数;output.layer输出层激活函数;method学习方法,翻译过来都是梯度下降,不是BP最速下降;Stao
为Taobao错误判断标准。
AMORE包中的train(net,P, T, error.criterium, report, show.step, n.shows)函数:神经网络训练函数。对于一个给定的数据集(训练集),此功能修改的神经网络的权重和偏差的近似的训练集中存在的变量之间的关系。这些可以满足一些需要,即拟合非线性函数。
其中,net为神经网络训练;P为输入的训练集;T为输出的训练集;error.criterium为衡量拟合优度的标准(LMS、LMLS、TAO);report表示训练函数是否保持安静(或应在训练过程中提供图形/文字信息);show.step直到训练函数给出结果的最大值;n.shows报告训练的次数。
AMORE包的sim(net,P)函数:计算给定数据集神经网络的输出值。net模拟神经网络;P输入数据集。
3、neuralnet包中的neuralnet(formula, data,hidden)函数:神经网络训练函数。hidden一个向量的整数,指定在每一层中的隐层神经元(顶点)的数目。hidden=c(3)表示第一个隐藏层的3个隐藏单元;hidden=c(3,
2)分别表示第一、第二隐藏层的3个和2个隐藏单元。
neuralnet包中的compute(x, covariate):神经网络计算一个给定的变量向量。x为NN的模型;covariate用来训练神经网络的数据框或矩阵。相当于predict函数(neuralnet中无predict函数)
距离和相似系数
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为用整数表示类的向量。
1、mclust包中的Mclust(data, G)函数:基于模型的聚类,BICEM采用分层高斯混合模型聚类初始化参数优化模型。G为BIC要计算的混合分量的整数向量;
mclust包中的mclustBIC()函数:BIC基于模型的聚类。predict函数分类需要指定type="class"
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可以指定包含所有。
1、ipred包中的bagging(formula, data)函数:装袋分类,回归和存活树。
2、adabag包中的bagging(formula, data)函数:装袋分类,回归和存活树。
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包时加载)
R中提供了两个专用于关联规则的软件包,即arules包和arulesViz包,前者用于产生关联规则的定量化结果,后者用于产生关联规则的可视化结果。
list(minlen=
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为控制图像参数列表。
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.
数据人才(ID:datarencai)
(一个帮助数据人才找工作的公众号,
也分享数据人才学习和生活的有趣事情。)
欢迎关注和随喜分享。