R语言进行机上方式与实例(一)

诚如以开立或者打开一个Word文档时,如果没有展开过突出装置的话,系统默认的输入语言的凡英语输入,但是也适应不同之办公室条件,我们其实是内需针对文字嵌入的言语进行切换的,因此,本文将介绍如何使免费版组件Free
Spire.Doc for
.NET
来兑现Word语言输入。另外,针对这款组件的又Word操作功能,如,设置文档属性、文档视图模式等,本文中吗以发进一步演示演示。

版权声明:本文也博主原创文章,转载请注明出处

代码操作前准备

  机器上的钻研世界是说明计算机算法,把数量变化吗智能行为。机器上和多少挖掘的别可能是机器上侧重于行一个业已知道之天职,而数据发掘是在深数目中寻觅有价之事物。

安Spire.Doc for
.NET之后,添加引用Spire.Doc.dll文件及品种程序集,同时加上相应的using指令到命名空间。

机上一般步骤

  • 集数据,将数据转发为契合分析的电子数码
  • 追和准备数据,机器上中多工夫花在数据探索受到,它若学习又多的数信息,识别它们的一线区别
  • 基于数训练模型,根据你如果读啊的设想,选择而要使的等同种植或又算法
  • 评论模型的特性,需要根据一定的检查专业
  • 精益求精模型的特性,有时候需要采用还高级的措施,有时候需要换模型

注意:以下代码中,以选择西班牙语(秘鲁)为例,其他语言设置,可参见
Microsoft Locale ID
Values.aspx)

机器上算法

具体步骤如下:

发生监控上算法

用来分类:k近邻,朴素贝叶斯,决策树,规则学习,神经网络,支持于量机
用于数值预测:线性回归,回归树,模型树,神经网络,支持为量机

步骤同:添加如下命名空间

甭管监控上算法

用来模式识别(数据里面联络的紧密性):关联规则
用以聚类:k均值聚类

using System;
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;

R语言机器上算法实现

步骤二:更改文本输入语言

kNN(k-Nearest Neighbors,k近邻)

  • 规律:计算距离,找到测试数据的k个近邻,根据k个近邻的归类预测测试数据的归类
  • 运k近邻需要以顺序特征转换为一个规范的限(归一化处理),可以应用min-max标准化(所有值落在0~1范围,新数据=(原数-最小值)/(最充分价值-最小值)),也得以应用z-score
    标准化(新数据=(原数-均值)/标准差)。
  • 于名义变量(表示项目),可以开展哑变量编码,其中1代表一个类,0意味其余种类,对于n个类别的名义变量,可以用n-1只特征进行哑变量编码,比如(高,中,低),可以据此大、中简单像样的哑变量表示这三接近(高:1凡,0
    其它,中:1是,0,其它)
  • 亮点:简单且使得,对数据分布没有要求,训练阶段很快;
  • 症结:不出模型,在意识特征之间的涉嫌达到的力量简单,分类等大缓慢,需要大量之内存,名义变量和短数据要额外处理
  • R代码:
    使用class包的knn函数,对于测试数据被之各国一个实例,该函数使用欧氏距离标识k个近邻,然后选出k个近邻中多数所属的老大看似,如果票数相等,测试实例会给肆意分配。
       dt_pred <- knn(train = dt_train,test = dt_test,class =
    dt_train_labels,k = 3)
    #train:一个饱含数值型训练多少的数据库;test:一个暗含数值型测试数据的数据框;class训练多少列一行分类的一个因子变量;k:标识最近邻数据的一个整数(通常取实例数的平方根);
    该函数返回一个向量,该向量含有测试数据框中各个一行的预计分类
      尽管kNN是并从未开展其它学习之略算法,但是却能处理及其复杂的职责,比如识别肿瘤细胞的包。
  • 对R自带iris数据用kNN进行训练、预测并和实际结果相比

llibrary(class)
library(gmodels)

#prepare data
set.seed(12345) #set random seed in order to repeat the result
iris_rand <- iris[order(runif(150)),]
iris_z <- as.data.frame(scale(iris_rand[,-5])) #z score normalize
train <- iris_z[1:105,]
test <- iris_z[106:150,]
train.label <- iris_rand[1:105,5]
test.label <- iris_rand[106:150,5]

#kNN
pred <- knn(train,test,train.label,k=10)

#comfusion matrix 
CrossTable(pred,test.label,prop.r = F,prop.t = F,prop.chisq = F)

语言 1
  这个结果显示kNN对测试数据总体展望是

//创建一个Document类实例,并添加Section和Paragraph到Document
Document doc = new Document();
Section sec = doc.AddSection();
Paragraph para = sec.AddParagraph();
//向段落添加西班牙(秘鲁)语文字并设置文本对齐方式
TextRange txtRange = para.AppendText("Puedo escribir los versos más tristes esta noche.\n Escribir, por ejemplo: La noche está estrellada,y tiritan, azules, los astros, a lo lejos.\n El viento de la noche gira en el cielo y canta.\n Puedo escribir los versos más tristes esta noche.");
txtRange.CharacterFormat.LocaleIdASCII= 10250;
para.Format.HorizontalAlignment = HorizontalAlignment.Center;

勤政贝叶斯分类

  • 规律:基于节约贝叶斯定理,根据先验概率计算预测实例的属不同档次的毕竟似然,再以某型的似然除以不同类型似然的跟取预测实例在有型的几率
  • 行使节省贝叶斯算法每个特征必须是分类变量,对于数值型变量,可以拿数值型特征离散化(分段),可以依据直方图查看数据肯定的分隔点,如果无明了的分隔点,可以用三私分位数,四分位数,五分位数,分段太少会把重点信息丢失
  • 拉普拉斯估价:对于某些从来不曾出现的概率为0的,会潜移默化概率的估算,拉普拉斯估价本质上是以概率表的每个计数加上一个比较小的反复,这样保证各级一样近似中每个特征有的票房价值是免零之。
  • 长:简单、快速、有效;能处理噪声数据和缺少数据;需要用来训练之事例相对比少,但一样会处理好大方之例子;很易得一个预计的估量概率值;
  • 缺点:依赖让一个常用之失实而,即同的首要及单身特征;应用在大气数值特征的多寡集时连无地道;概率的量值相对于预测的类而言更加不可靠。
  • R代码:
    运用维也纳理工大学统计有关支付之e1071添加包中的naiveBayes
      m <- naiveBayes(train,class,laplace=0)
    #train:数据框或者隐含训练多少的矩阵,class:包含训练多少列一行的归类的一个因子向量,laplace:控制拉普拉斯估价的一个数值,可以开展调节看是不是会增高型性能;该函数返回一个仔细贝叶斯模型对象,该目标会用于预测
       p <- predict(m,test,type=”class”) #m:由函数naiveBays(
    )训练的一个模子
    ,test:数据框或者隐含测试数据的矩阵,包含与用来起分类器的教练多少的一致特征;type:值也”class”或者”raw”,标识预测向量最可能的类别值或者原预测的票房价值值

library(e1071)
library(gmodels)

set.seed(12345) #set random seed in order to repeat the result
iris_rand <- iris[order(runif(150)),]
train <- iris_rand[1:105,-5]
test <- iris_rand[106:150,-5]
train.label <- iris_rand[1:105,5]
test.label <- iris_rand[106:150,5]

#tranform numerical variable to classified variable
conver_counts <- function(x){
  q <- quantile(x)
  sect1 <- which(q[1] <= x & x<= q[2])
  sect2 <- which(q[2 ]< x & x <= q[3])
  sect3 <- which(q[3]< x & x <= q[4])
  sect4 <- which(q[4]< x & x <= q[5])
  x[sect1] <- 1
  x[sect2] <- 2
  x[sect3] <- 3
  x[sect4] <- 4
  return(x)
}
train <- apply(train,2,conver_counts)

#naiveBayes
m <- naiveBayes(train,train.label,laplace=1)
pred <- predict(m,test,type="class") 

#comfusion matrix 
CrossTable(pred,test.label,prop.r = F,prop.t = F,prop.chisq = F)

语言 2

看得出对第一好像(setosa)分类达标预计错误率很高,这或者反映了省吃俭用贝叶斯算法的先天不足,对于拍卖大量数值特征数据集时并无漂亮

步骤三:设置试图模式呢Web视图,调整视图缩放比例

决策树

  • 规律:以树形结构建立模型。使用同样种叫做递归划分的探索法。这种办法一般号称分而治之,因为它使用特色的值将数据说明为保有相似类的于小的子集。从代表所有数据集的数结点开始,该算法选择最为会预测目标类的风味,然后,这些案例以受分到立刻无异风味的非同值的组中,这同操纵形成了第一组树枝。该算法继续分而治之其他结点,每次挑最佳的候选特征,直到上停止的专业。如果一个节点停止,它或许装有下列情况:节点上享有(几乎拥有)的案例都属于同一类,没有多余的特性来划分辩案例之间的界别,决策树已经达成了先期定义的大小限制。
  • C5.0算法,时不过资深的表决树算法之一,单线程版本的源代码是当面的,R中发出编制好之该次。C5.0算法都改成转变决策树的行业标准,因为她适用于多数列的问题,并且可一直运用。与另先进的机器上型(神经网络和支撑为量机)相比,一般表现的几乎同样,并且又爱懂与布局
  • 挑选最佳的细分,需要建立分割的正儿八经,有消息增益,基尼系数,卡方统计量,和增益比,C5.0算法使用信息增益
  • 修决策树:如果决定树增长了特别,将见面使决策过于具体,模型将会晤超负荷拟合训练多少,解决这题目的平种植方式是要是达一定数额的决定,或者决定节点才含微量之案例,我们虽已树的增强,这名提前终止法,或者预剪枝决策树法。分为预剪枝(提前确定树之大大小小)和后剪枝(一旦培养生的了死,就根据节点处的错误率使用修剪准则将决策树减少至再也适于的深浅,通常比较预剪枝更有效)。
  • 自打适应加强算法:进行过多赖尝试,在决定树中是树立多决策树,然后这些决定树通过投票表决的章程吧每个案例选择最佳的分类。
  • 长:一个适用于大部分题材之通用分类器;高度自动化的学习过程,可以拍卖数值型数据、名义特征和缺乏数据;只下最要害之表征;可以用于只有相对比少教练案例之数码要出相当多训练案例之多寡;没有数学背景啊只是说一个模子的结果(对于比较粗的养);比另外复杂的范更管用
  • 症结:决策树模型在依据所有大量水准的性状进行分时一再是有偏的;很容易过于拟合或者未可知尽量拟合模型;因为靠让轴平行分割,所以在针对有的涉起模型时见面出困难;训练多少被之略微变化也许引致决策逻辑的比生之变迁;大之决策树可能麻烦知晓,给闹的核定可能拘留起违反直觉。
  • R代码:
    使用R包C50的函数C5.0
      m <- C5.0(train,class,trials=1,costs=NULL)
    #train:一个涵盖训练多少的数据框;class:包含训练多少列一行的分类的一个因子;trials:为一个不过选数价值,用于控制从适应加强循环的次数(默认值为1),一般用10,因为研究表明,这会下降关于测试数据约25%底票房价值;costs:为一个可选矩阵,用于受闹和各种类型错误相对应的资金,和混淆矩阵稍微不同,行用来代表预测值,列用来代表实际值);函数返回一个C5.0模型对象,该目标会用于预测
      p <- predict(m,test,type=”class”)
    #m:有函数C5.0()训练之一个模;test:一个饱含训练多少的数据框,该数据框和用来创造分类其的数额框有同样的风味;type:取值为”class”或者”prob”,表识预测是极可能的类别值或者是本来之预计概率;该函数返回一个向量,根据参数type的取值,该向量含有预测的类别值或者原有预测的几率值

library(C50)
library(gmodels)

set.seed(12345) #set random seed in order to repeat the result
iris_rand <- iris[order(runif(150)),]
train <- iris_rand[1:105,-5]
test <- iris_rand[106:150,-5]
train.label <- iris_rand[1:105,5]
test.label <- iris_rand[106:150,5]

#C50
m <- C5.0(train,train.label,trials = 10)
pred <- predict(m,test,type="class") 

#comfusion matrix 
CrossTable(pred,test.label,prop.r = F,prop.t = F,prop.chisq = F)

语言 3

doc.ViewSetup.DocumentViewType = DocumentViewType.WebLayout;
doc.ViewSetup.ZoomPercent = 120;
doc.ViewSetup.ZoomType = ZoomType.None;

规则学习分类

  • 原理:规则学习算法使用了扳平栽叫做独立而治之的探索法。这个进程包括确定训练多少被盖一个案例子集的条条框框,然后再于剩余的数额遭到分离有该分区。随着规则之增多,更多之数据子集会于分别,直到一切数据集都被挂,不再发生案例残留,独立而治之和决策树的分而治之区别很有点,决策树的每个决策节点会遭受过去决策历史之熏陶,而规则学习不设有这么的流传。随着规则的加码,更多的数据子集会于分别,知道整个数据集都被挂,不再发生案例为保留

步骤四:添加文档属性(可根据需要活动设置文档内置属性或者从定义属性)

单规则(1R)算法
  • ZeroR,一个规则学习算法,从字面上看没有规则学习,对于一个无标记的案例,不用考虑其的特征值就会见拿它们预测为极其普遍的近乎
  • 单规则算法(1R还是OneR)在ZeroR的底子及补偿加一个规则。像K近邻一样虽然简易,但是频繁表现的比你预期的友爱。
  • 长:可以好成一个纯净的、易于理解的、人类可读之阅历法则(大拇指法则);表现往往非常的好;可以看做再复杂算法的一个条件;
  • 短:只下了一个单纯的性状;可能会见超负荷简短
  • R代码:
    利用R包RWeka中OneR()函数来促成1R算法
      m <- OneR(class ~ predictors,data = mydata)
    #class:是mydata数据框中需要预测的那么一列;predictors:为一个公式,用来指定mydata数据框中因故来进展展望的风味;data:为带有一个class和predictors所求的数额的数据框;该函数返回一个1R型对象,该对象会用于预测
      p <- predict(m,test)
    #m:由函数OneR()训练之一个模型;test:一个饱含测试数据的数据框,该数据框和用来创造分类器的训练多少颇具同样的特点;该函数返回一个饱含预测的门类的向量

library(RWeka)
library(gmodels)

set.seed(12345) #set random seed in order to repeat the result
iris_rand <- iris[order(runif(150)),]
train <- iris_rand[1:105,]
test <- iris_rand[106:150,-5]
test.label <- iris_rand[106:150,5]

m <- OneR(Species ~ .,data=train)
pred <- predict(m,test)
CrossTable(pred,test.label,prop.r = F,prop.t = F,prop.chisq = F)

翻转的平整,按照Petal的宽窄,分成三类,正确分类了105只里面的101独
语言 4
对此测试数据的良莠不齐矩阵如下
语言 5
足见只使了一个条条框框也会,也成功了无可非议的功能

//添加文档属性(内置属性)
doc.BuiltinDocumentProperties.Title = "测试文件";
doc.BuiltinDocumentProperties.Category = "非机密文档";
doc.BuiltinDocumentProperties.Author = "James";
doc.BuiltinDocumentProperties.LastAuthor = "Mia";
doc.BuiltinDocumentProperties.Keywords = "Word文档, 属性, 样本";
doc.BuiltinDocumentProperties.Comments = "此文档仅供测试使用";
doc.BuiltinDocumentProperties.Subject = "Demo";

//添加文档属性(自定义属性)
CustomDocumentProperties custom = doc.CustomDocumentProperties;
custom.Add("Authorized Date", DateTime.Today);
RIPPER算法

  对于复杂的职责,只考虑单个规则可能过于简单,考虑多只元素的又扑朔迷离的规则学习算法可能会见生出因此,但也说不定因此会面换得更其难以掌握。早期的规则学习算法速度迟滞,并且对噪声数据往往无准确,后来面世增量减少误差修剪算法(IREP),使用了变动复杂规则的预剪枝和晚剪枝方法的组合,并当案例从全方位数额集分离之前开展修理。虽然当时提高了性能,但是要决定树表现的再好。直到1995年起了重增量修剪算法(RIPPER),它对IREP算法进行改进后再生成规则,它的特性和核定树相当,甚至超决策树。

  • 规律:可以笼统的喻吧一个老三步过程:生长,修剪,优化。生长过程使用独立设看病之术,对规则贪婪地抬高条件,直到该规则能够全分开出一个数量子集或者没有性用于私分。与核定树类,信息增益准则而用于确定下一个分叉的属性,当多一个特指的条条框框而熵值不再减少时,该规则需要这修剪。重复第一步和亚步,直到上一个艾准则,然后,使用各种探索法对任何的规则进行优化。
  • 瑜:生成易于明的、人类可读之平整;对天意据集和噪声数据中;通常较决策树生的模子更简短
  • 缺陷:可能会见招致违反常理或这专家知识的规则;处理数值型数据或者未极端好;性能有或无苟复杂的范
  • R代码:
    动R包RWeka中JRip()函数,是基于Java实现之RIPPER规则学习算法
      m<JRip(class ~ predictors,data = my data)
    #class:是mydata数据框中需要预测的那么一列;predictors:为一个R公式,用来指定mydata数据框中之所以来开展预测的特征;data:为涵盖class和predictors所求的数目的数据框;该函数返回一个RIPPER模型对象,该目标能够用于预测。
      p <- predict(m , test)
    #m:由函数JRip()训练之一个模;test:一个含测试数据的数据框,该数据框和用来创造分类器的教练多少发生相同的特性;该函数返回一个涵盖预测的类别值的向量。

library(RWeka)
library(gmodels)

set.seed(12345) #set random seed in order to repeat the result
iris_rand <- iris[order(runif(150)),]
train <- iris_rand[1:105,]
test <- iris_rand[106:150,-5]
test.label <- iris_rand[106:150,5]

m <- JRip(Species ~ .,data=train)
pred <- predict(m,test)
CrossTable(pred,test.label,prop.r = F,prop.t = F,prop.chisq = F)

语言 6
这次以了三只规则,(Petal.Width >= 1.8啊virginica ,Petal.Length
>= 3也versicolor,其它为setosa
语言 7
看得出虽然增加了平整而连从未增长型的性能

手续五:保存并打开文档

前瞻数值型数据

doc.SaveToFile("Sample.doc", FileFormat.Doc);
System.Diagnostics.Process.Start("Sample.doc");
线性回归

  回归第一关心一个唯一的为变量(需要预测的价)和一个或者多个数值型自变量之间的涉。

  • 设若一味生一个自变量,称为一元线性回归或者简单线性回归,否则,称为多元回归。
  • 规律:对线性参数的估算应用最小二乘胜估计
  • 广义线性回归:它们对准线性模型进行了简单上面的放大:通过设定一个连连函数,将应变量的企与线性变量相联系,以及针对性误差的分布为有一个误差函数。这些推广允许多线性的计能让用来一般的题材。比如逻辑回归好为此来针对亚头条分类的结果建模;而泊松回归好对整型的计数数据开展建模。
  • 亮点:迄今为止,它是数值型数据建模最常用的方式;可适用于几拥有的数额;提供了特征(变量)之间关系之强度和尺寸的估价
  • 短:对数据作出了挺强之设;该型的款式要由使用者事先指定;不能够充分好地拍卖缺失数据;只能处理数值特征,所以分类数据要分外的拍卖;需要一些统计学知识来理解模型。
  • LASSO回归算法:LASSO回归的特色是在拟合广义线性模型的以展开变量筛选(只选择对因变量有肯定影响之自变量)和复杂度调整(通过参数控制模型复杂度,避免超负荷拟合)。它通过办最可怜似然来拟合广义线性模型,正则化路径是透过正则化参数lambda的价值的网格上计算lasso或者弹性网络惩戒,lambda越充分对变量较多之线性模型的治罪力度就愈怪,从而最终赢得一个变量较少之模子。
  • R代码:
    动用R包glmnet中glmnet()函数拟合LASSO回归模型
      glmnet(x, y,
    family=c(“gaussian”,”binomial”,”poisson”,”multinomial”,”cox”,”mgaussian”),
        weights, offset=NULL, alpha = 1, nlambda = 100,
         lambda.min.ratio = ifelse(nobs<nvars,0.01,0.0001),
    lambda=NULL,
         standardize = TRUE, intercept=TRUE, thresh = 1e-07, dfmax =
    nvars + 1,
         pmax = min(dfmax * 2+20, nvars), exclude, penalty.factor =
    rep(1, nvars),
        lower.limits=-Inf, upper.limits=Inf, maxit=100000,
        type.gaussian=ifelse(nvars<500,”covariance”,”naive”),
         type.logistic=c(“Newton”,”modified.Newton”),
         standardize.response=FALSE,
    type.multinomial=c(“ungrouped”,”grouped”))

  x:
输入矩阵,每列表示变量(特征),每行表示一个察向量,也支撑输入稀疏矩阵(Matrix中的稀疏矩阵类);
  y:
反应变量,对于gaussian或者poisson分布族,是应和的计量;对于binomial分布族,要求是个别品位的因子,或者个别列的矩阵,第一排是计数或者是比例,第二排是目标向分类;对于因子来说,最后的水准是按字母表排序的归类;对于multinomial分布族,能发出逾两水准的因数。无论binomial或者是multinomial,如果y是向量的话,会强制转化为因子。对于cox分布族,y要求凡零星排列,分别是time和status,后者是第二迈入制变两,1意味着死亡,0意味截尾,survival包带的Surv()函数可以有这样的矩阵。对于mgaussian分布族,y是量化的反应变量的矩阵;
  family:
反应类型,参数family规定了回归模型的类型:family=”gaussian”适用于一维总是因变量(univariate)family=”mgaussian”,适用于多维连续为变量(multivariate),family=”poisson”适用于非负次数为变量(count),family=”binomial”适用于次最先离散因变量(binary),family=”multinomial”适用于多元离散因变量(category)
  weights:
权重,观察的权重。如果反应变量是比例矩阵的话,权重是究竟计数;默认每个观察权重且是1;
  offset:
包含在线性预测中之以及相向量同样长度的向阳量,在poisson分布族中动用(比如log后底暴露时间),或者是于早已拟合的范的再次定义(将本来模型的因变量作为向量放入offset中)。默认是NULL,如果提供了价值,该值也亟须提供被predict函数;
  alpha: 弹性网络混合参数,0 <= a
<=1,惩罚定义也(1-α)/2||β||_2^2+α||β||_1.其中alpha等于1是lasso惩罚,alpha等于0是ridge(岭回归)的惩罚;
  nlambda:lambda值个数;拟合出n个系数不同之范
  lambda.min.ratio:lambda的无限小值,lambda.max的百分比形式,比如整个系数都是0的时段的极小值。默认值依赖让观察的个数和特色的个数,如果观察个数大于特征个数,默认值是0.0001,接近0,如果观察个数小于特征个数,默认值是0.01。在观察值个数小于特征个数的状下,非常小的lambda.min.ratio会导致了拟合,在binominal和multinomial分布族性,这个价不定义,如果讲变异百分比总是1底话程序会自动退;
  lambda:用户提供的lambda序列。一个独立的用法基于nlambada和lambda.min.ratio来测算自己lambda序列。如果提供lambda序列,提供的lambda序列会覆盖是。需谨慎采用,不要提供单个值为lambda(对于CV步骤后底预计,应下predict()函数替代)。glmnet依赖让缓慢开始,并且它们用来拟合全路线比算计单个拟合更快;
  standardize:对于x变量是否规范的逻辑标志,倾向于拟合模型序列。
系数总是以旧规模返回,默认standardize=TRUE。如果变量已经是同等单位,你或并无可知取想要之口径结果。
  intercept:是否拟合截距,默认TRUE,或者安装为0(FALSE)
  thresh:坐标下降之消域值,每个内部坐标下降一直进展巡回,直到系数更新后的最好酷改值比thresh值乘以默认变异要稍微,默认thresh为1E-7;
  dfmax:在范中的极端要命变量数,对于大气之变量数的型但咱才需要有些变量时方可从至意向;
  pmax:限制非零变量的极酷数额;
  exclude:要自模型中清除之变量的目录,等同于一个最的惩处因子;
  penalty.factor:惩罚因子,分开的查办因子能够以到每一个系数。这是一个数字,乘以lambda来允许不同之抽。对于片变量来说可是0,意味着无论收缩,默认对所有变量是1,对于列在exlude里面的变量是无限好。注意:惩罚因子是中对nvars(n个变量)的以及拓展再调整,并且lambda序列将会潜移默化之改变;
  lower.limits:对于每个系数的再次低限制的向阳量,默认是无穷小。向量的每个值须非正值。也堪因单个值呈现(将会晤再度),或者是(nvars长度);
  upper.limit:对于每个系数的再胜克的通往量,默认是无穷大;
  maxit:所有lambda值的数据最酷传递数;
  type.gaussian:支持高斯分布族的星星栽算法类型,默认nvar <
500用到”covariance“,并且保留有中计算的结果。这种方式较”naive”快,”naive”通过对nobs(n个观察)进行巡回,每次内部计算一个结出,对于nvar
>> nobs或者nvar > 500底动静下,后者往往重敏捷;
  type.logistic:如果是”Newton“,会下规范之hessian矩阵(默认),当用的是”modified.Newton“时,只利用hession矩阵的上界,会再度快;
  standardize.response:这个参数时对”mgaussian“分布族来说的,允许用户标准化应答变量;
  type.multinomial:如果是”grouped”,在多项式系数的变量使用分布lasso惩罚,这样能管它统统以一起,默认是”ungrouped”。

glmnet返回S3类,”glmnet”,”*”,”*”可以是elnet,lognet,multnet,fishnet(poisson),merlnet
  call:产生这目标的调用;
  a0:截距;
  beta:对于elnet, lognet,
fishnet和coxnet模型,返回稀疏矩阵格式的系数矩阵(CsparseMatrix),对于multnet和mgaussian模型,返回列表,包括各国一样好像的矩阵;
  lambda:使用的lambda值的实际序列;当alpha=0时,最充分之lambda值并无就等于0系数(原则达成labda等于无穷大),相反以alpha=0.01之lambda,由此导出lambda值;
  dev.ratio:表示由于模型解释的朝三暮四的百分比(对于elnet,使用R-sqare)。如果是权重,变异计算会加盟权重,变异定义也2x(loglike_sat-loglike),loglike_sat是饱和模型(每个观察值具有自由参数的型)的log似然。因此dev.ratio=1-dev/nulldev;越接近1证模型的显现越来越好
  nulldev:NULL变异(每个观察值),这个概念为2*(loglike_sat-loglike(Null));NULL模型是据截距模型,除了Cox(0
模型);
  df:对于每个lambda的非零系数的多寡。对于multnet这是对于片近乎的变量数目;
  dfmat:仅适用于multnet和mrelnet。一个囊括各一样近似的非零向量数目的矩阵;
  dim:系数矩阵的维度;
  nobs:观察的数量;
  npasses:全部lambda值加和的数码的到底的通量;
  offset:逻辑变量,显示模型中是否带有偏移;
  jerr:错误标记,用来告诫及报错(很大部分用以中调整试验)
  而一直展示的结果有三列,分别是df,%Dev
(就是dev.ratio),lambda是每个模型对应的λ值

predict(object,newx,s=NULL,type=c(“link”,”reponse”,”coefficients”,”nonzero”,”class”),exact=FALSE,offset,…)
  coef(object,s=NULL,exact=FALSE)
  object:glmnet返回的靶子;
  newx:用来预测的矩阵,也堪是系数语言矩阵;这个参数不克用来type=c(“”coefficents”,”nonzero”);
  s:惩罚参数lambda的价,默认是用来创造模型的任何lambda值;
  type:预测值的路;”link”类型为”binomial”,“multinomial”,”poisson”或者”cov”模型线性预测的价,对于”gaussian”模型给起合值。”response”类型,对于”binominal“和”multinomial”给拟合的票房价值,对于”poisson“,给拟合的均值,对于”cox”,给拟合的对立不及;对于”gaussion”,response等同于”link“类型。”coefficients”类型对急需的s值计算系数。注意,对于”binomial”模型来说,结果只是针对因子对的次只档次的接近归。“class”类型仅仅用叫”binomial”和”multinomial“模型,返回最深可能的归类标签。”nonzero”类型对每个s中的价返回一个列表,其中带有非0参数的目录;
  exact:这个参数就对用于预测的s(lambda)值不同让老模型的拟合的值经常,这个参数起至意向。如果exact=FALSE(默认),预测函数使用线性解释来针对被的s(lambda)值进行预测。这时一个杀类似的结果,只是略有硌粗糙。如果exact=TRUE,这些不同的s值和拟合对象的lambda值进行sorted和merged,在作出预测之前开展模型的又拟合。在这种景象下,强烈建议提供原始之数x=和y=作为额外的命名参数为perdict()或者coef(),predict.glmnet()需要提升型,并且希望用于创造接近它们的数额。尽管未提供这些额外的参数它吧会见运作的死去活来好,在调用函数中行使嵌套序列非常可能会见半途而废。
  offset:如果下offset参数来拟合,必须提供一个offset参数来发预计。除了项目”coefficients”或者”nonzero“
  …:可以提供参数其它参数的体制,比如x=when exact=TRUE,seeexact参数。

library(glmnet )
library(psych)

#dummy variable encoding
iris$issetosa <- ifelse(iris$Species=="setosa",1,0)
iris$isversicolor <- ifelse(iris$Species=="versicolor",1,0)
iris_dt <- iris[,-5]
pairs.panels(iris_dt) #scatterplot matrix

语言 8

  pairs.panel画有散点图矩阵,对角线上方显示的凡变量之间的相关系数,每个散点图备受呈椭圆形的目标称为相关椭圆,它提供相同种植变量之间是怎么样密切相关的可视化信息。位于椭圆中间的的触及表示x轴变量和y轴变量的均值所规定的触及。两单变量之间的相关性由椭圆的形象表示,椭圆越让关伸,其相关性就进一步强。散点图中绘制的曲线称为局部回归平滑,它表示x轴和y轴变量之间的貌似涉及。iris数据画出底散点图矩阵中的相关系数和散点图曲线都可见Petal.Length和Petal.Width有着高的相关性,而自从散点图曲线也只是视,似乎Sepal.Length超出一定阈值后,Sepal.Length增加,Petal.Length也多,并且为与路是setosa或者versicolor也出涉及。以Petal.Width作为为变量作线性回归。

library(glmnet )

#dummy variable encoding
iris$issetosa <- ifelse(iris$Species=="setosa",1,0)
iris$isversicolor <- ifelse(iris$Species=="versicolor",1,0)

#divided into training sets and test sets
set.seed(12345) #set random seed in order to repeat the result
iris_rand <- iris[order(runif(150)),]
train <- iris_rand[1:105,-c(4,5)]
test <- iris_rand[106:150,-c(4,5)]
train_value  <- iris_rand[1:105,4]
test_value  <- iris_rand[106:150,4]

#lasso
m_lasso <- glmnet(as.matrix(train),train_value,family = "gaussian")

plot(data.frame(df=m_lasso$df,dev.ratio=m_lasso$dev.ratio),type="b",cex=0.6)
coef(m_lasso, s=0.0497000)  #min df

语言 9

语言 10

翻看变量个数和范解释变异百分比的点图,发现在df=1时已初步和,已经可以分解93%之变异。因此取df=1的足讲最特别形成的lambda,0.0452800,查看系数发现以了简单只特征,其中一个系数大小,并无是咱要之,因此lambda改也次个说最深形成的lambda,0.0497000.
所以coef取出参数如下
lambda=0.0452800
语言 11

lambda=0.0497000
语言 12
因此选出的lambda值进行展望

pred <- predict(m_lasso,newx=as.matrix(test),s=0.0497000)
summary(pred)
summary(test_value)
cor(test_value,pred)
MAE <- mean(abs(pred - test_value))
mean(abs(mean(train_value) - test_value))

意识预测值和真实值范围十分接近
语言 13
相关系数高
语言 14

MAE(平均绝对误差,反映预测值和真实值的距离)仅为0.1981803,如果只是用训练集的均值预测的话,MAE高及0.6551746)
语言 15

归纳以上之襟怀标准,说明我们的范预测的不错。

完以上步骤后,运行该种转移文书(可于拖欠型文件夹下bin>Debug下查看),如下图所示:语言 16

回归树及模型树
  • 仲裁树用于数值预测分为两近似,第一近乎称为回归树,第二类似称为模型树。
  • 回归树作为分类回归树的相同有的引入,回归树并不曾动用线性回归的计,而是因到达节点的案例之平均值进行前瞻。
  • 范树,比回归树后几年引入,但是可能功能越来越强大。模型树和回归树为大致相同的法子生长,但是于每个叶节点,根据达该节点的案例建立多元线性回归模型。根据叶节点的数码,一棵模型树可能会见成立几十个还几百单这么的模子,这恐怕会见如模型树更加难理解,但便宜是其可能会起一个越规范的型。
  • 可取:将决策树的长和数值型数据建立模型的力相结合;能半自动选择特征,允许该办法和大量表征并下;不欲使用者事先指定模型;拟合某些类型的多寡或者会见比线性回归好得多;不求用统计的学问来诠释模型。
  • 症结:不像线性回归那样时常因此;需要大量底教练多少;难以确定单个特征对结果的一体化均影响;可能于回归模型更难以释。
  • 规律:用于数值预测的决策树的立艺术和用于分类的决策树的建立艺术大致相同。从根节点开始,按照特征使用分而治之的政策对数据进行私分,在拓展相同次于私分后,将会招数据最大化的全匀增长。而当分拣核定树中,一致性(均匀性)是由熵值来度量的,而对于数值型的多少是休定义之,对于数值型决策树,一致性可以经统计量(比如方差、标准差或者平均绝对不是)来度量。不同的决策树生算法,一致性度量可能会见迥然不同,但原理是基本相同的。
  • 同等种植普遍的分割标准是正统不是减少,就是原始值的正规化不同减去分割后无同类的数据加权后的规范各异,这里的加权就是此类的数额比高达究竟的多寡。决策树已生长后,假如一个案例用特征B进行划分,落入某一样组B1受到,那么该案例的预测值将取B1组的平均值。模型树要多走相同步,使用落入B1组的训案例与落入B2组的训案例,建立一个针锋相对于其它特征(特征A)的线性回归模型。
  • R代码:
      在R包rpart(递归划分)中提供了如CART(分类回归树)团队受到所讲述的顶保险的回归树的贯彻,
      m.rpart <- rpart(dv ~ iv, data = mydata) #dv 是mydata
    数据框中需要建模的坐变量;iv
    为一个R公式,用来指定mydata数据框中之自变量;data:为涵盖变量dv和变量iv的数据框
      p <- predict(m,test,type=c(“vector”, “prob”, “class”,
    “matrix”))
    #m是有函数rpart训练的一个模;test一个带有测试数据的数据框,该数据框和用来树模型的多少具有同等的表征;type:给定返回的预测值的色,prob返回预测的票房价值。matrix返回矩阵的形式包括各类的概率。class返回树的归类。否则回一个向量的结果。
      可以动用R包rpart.plot中rpart.plot函数对回归树结出可视化。
      时型树被不过先进的算法是M5’算法,可以由此R包Rweka中M5P函数实现;
      m <- M5P(dv ~ iv, data = mydata) #dv 是mydata
    数据框中需要建模的盖变量;iv
    为一个R公式,用来指定mydata数据框中之自变量;data:为涵盖变量dv和变量iv的数据框
      p <- predict(m,test)
    #m是有函数rpart训练之一个模型;test一个饱含测试数据的数据框,该数据框和用来树模型的数码颇具同等的特性

library(rpart)
library(RWeka)
library(rpart.plot)

#dummy variable encoding
iris$issetosa <- ifelse(iris$Species=="setosa",1,0)
iris$isversicolor <- ifelse(iris$Species=="versicolor",1,0)

#divided into training sets and test sets
set.seed(12345) #set random seed in order to repeat the result
iris_rand <- iris[order(runif(150)),]
train_dt <- iris_rand[1:105,-5]
test <- iris_rand[106:150,-c(4,5)]
test_value  <- iris_rand[106:150,4]

#rpart
m.rpart <- rpart(Petal.Width ~ Sepal.Length+Sepal.Width+Petal.Length+issetosa+isversicolor,data = train_dt)
summary(m.rpart)
rpart.plot(m.rpart)
pred <- predict(m.rpart,test)
cor(test_value,pred)
mean(abs(pred - test_value)) #rpart MAE
mean(abs(mean(train_dt$Petal.Width) -  test_value)) #mean MAE

#M5P
m.M5P <- M5P(Petal.Width ~ Sepal.Length+Sepal.Width+Petal.Length+issetosa+isversicolor,data = train_dt)
summary(m.M5P)
pred <- predict(m.M5P,test)
cor(test_value,pred)
mean(abs(pred - test_value)) #rpart MAE
mean(abs(mean(train_dt$Petal.Width) -  test_value)) #mean MAE

扭转归树的结果如下
语言 17
rpart.plot结果
语言 18

  相关性到达0.9797762,回归树(MAF0.1242998)明显较直接用全值预测(MAF0.7255238)更接近于真实的Petal.Width
模型树的结果如下
语言 19

  相关系数到达0.9714331,MAF0.1410668,在此模型树中,只出一个根节点,相应建立了一个线性模型,直接用Sepal.Length
,Sepal.Width
,Petal.Length三只性状进行展望,和lasso回归模型一样,特征前面的系数表示该特征对Petal.Width的恬静影响,注意,这里的净影响是据于眼前节点是线性模型中之咸影响,在这个线性模型中,每增加一些Sepal.Width和Petal.Length,Petal.Width都见面增多,而系数小于0的Sepal.Length
,意味着各国多一些Sepal.Length,Petal.Width就会减。从结果好看来,在斯案例中,模型树没回归树的功用好。
  此处模型树于尚未转多单培养节点的气象下,只是对特色做了线性回归,MAF达到0.1410668,和前面对数码作线性回归之lasso模型结果(MAF0.1981803)相比,貌似做的再好,但实在前的lasso回归模型我们限制了特征值个数来避免了拟合,如果增加特征值数量与调动labda参数,一样可以达成比较粗之MAF。

针对文档属性之装如下图所示:

小结

  本文主要谈了机械上的有基本概念,还有局部机器上方法的基本原理及R语言实现。包括用于分类的机上方式:k近邻,朴素贝叶斯,决策树,规则学习;用于数值预测的机器上道:lasso回归,回归树,模型树,它们还属于监督上。下篇文章会说及监督上着之神经网络和支持于量机,还起其他非监督上的一部分计。
  本文可以当一个速查和精炼的入门,一些函数只列举了有重要的参数,具体的行使参数可以经过查看R里面的鼎力相助获得。另外如要是用于实践,还亟需了解有K折交叉检查,kappa统计量,ROC曲线内容,以对范的属性进行评价暨针对性两样之模型进行对照。

语言 20

参考资料

Brett Lantz:机器上和R语言
薛毅,陈立萍: 统计建模与R软件(下册)
侯澄钧:热门数码挖掘模型应用入门(一): LASSO :
https://cosx.org/2016/10/data-mining-1-lasso
slade_sha的博客 Lasso算法理论介绍
:http://blog.csdn.net/slade_sha/article/details/53164905

语言 21

上述全部内容为此次对Word文档进行语言设置方式的叙述,文中对文档的特性设置在文档的保存及事后文档管理达其实为颇有协助。希望本文能提供一定帮,欢迎转载(转载请注明出处)。感谢浏览!

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图