好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

实验文档11-1-r语言数据分析与挖掘操作.pdf

15页
  • 卖家[上传人]:简****9
  • 文档编号:101788171
  • 上传时间:2019-09-29
  • 文档格式:PDF
  • 文档大小:461KB
  • / 15 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • R 语言数据分析与挖掘操作训练(初级、中级) 第一部分:初级操作 机器学习、数据挖掘领域的比如关联规则挖掘、聚类、分类等问题R 统计分析计算包都提供了 足够的支持 关联规则问题源于“买了这件商品的顾客还买了什么”这个问题,现在已经广泛应用于客户行为 分析以及互联网用户行为分析中关联规则挖掘领域最经典的算法为 Apriori,R 的第三方包 arules,就是专门用于做关联规则挖掘的以下例子需要你已经安装了 arules 包 library(arules) data - paste(“item1,item2“,“item1“,“item2,item3“, sep=“\n“) write(data, file = “demo_basket“) tr - read.transactions(“demo_basket“, format = “basket“, sep=““,““) data(“Adult“) rules - apriori(Adult, parameter = list(supp = 0.5, conf = 0.9, target = “rules“)) 最后一行的 apriori 函数接受一个 transaction 对象的输入,输出关联规则对象 rules,为 方便起见,这里用于计算的 transaction 对象 Adult 是通过第 5 行从 arules 包中现成载入进来 的,第 2~4 行说明了怎么从一个文本文件中读入数据并生成一个 transaction 对象。

      聚类算法使用最广泛的高效算法无疑是 kmeans,R 在其默认载入的 stats 包中就包含了这个函 数,以下是一个来自 kmean 说明文档的例子: x - rbind(matrix(rnorm(100, sd = 0.3), ncol = 2), matrix(rnorm(100, mean = 1, sd = 0.3), ncol = 2)) cl - kmeans(x, 2) plot(x, col = cl$cluster) points(cl$centers, col = 1:2, pch = 8, cex=2) 代码第 1 行生成两组两维的正态分布的数据,第一组均值为 0,第二组均值为 1,两组数据方差 都为 0.3第 2 行对该数据进行聚类,第 3 和第 4 行把聚类结果画出来 分类器是模式识别领域的研究主题,也是人类认知活动的中心多年来的学术研究积累下来很 多种类型的分类器,而其中常用的分类器基本都能在 R 中找到对应的实现诸多分类器中以 svm 最 为著名,它也被一些人称为是单分类器的王道以下是一个利用 svm 对著名的 iris 数据集进行分 类的过程,运行该例子需要已经安装了 e1071 这个包。

      library(e1071) data(iris) x - subset(iris, select = -Species) y - iris$Species model - svm(x, y) summary(model) pred - predict(model, x) table(pred, y) 第 5 行代码调用 svm 函数,计算由 x 作为特征 y 作为类别标签的分类器模型,第 7 行把模型应 用于原数据进行预测 第二部分:R 线性算法操作 每个算法都会从两个视角进行呈现(利用数据挖掘包来求解) : 1) 常规的训练和预测方法 2) caret 包的用法 因此,需要知道给定算法对应的软件包和函数,同时还需了解如何利用 caret 包实现这些常用的 算法,从而你可以利用 caret 包的预处理、算法评估和参数调优的能力高效地评估算法的精度 本文中将用到两个标准的数据集(标准测试数据集) :  Boston Housing dataset for regression (BostonHousing from the mlbench library).  Pima Indians Diabetes dataset for classification (PimaIndiansDiabetes from the mlbench library). 1) 回归模型:BHD(Boston Housing Dataset) 2) 分类模型: PIDD(Pima Indians Diabetes Dataset) 具体的数据分析算法将被分成两组进行介绍: 1) 线性算法:简单、较大的偏倚、运算速度快 2) 非线性算法:复杂、较大的方差、高精确度 所有代码都是完整的,因此你可以将其保存下来并运用到下个机器学习项目中。

      线性算法 这类方法对模型的函数形式有严格的假设条件,虽然这些方法的运算速度快,但是其结果偏倚较 大这类模型的最终结果通常易于解读,因此如果线性模型的结果足够精确,那么你没有必要采用较 为复杂的非线性模型 1. 线性回归模型 stat 包中的 lm()函数可以利用最小二乘估计拟合线性回归模型 # load the library library(mlbench) # load data data(BostonHousing) # fit model fit - lm(medv~., BostonHousing) # summarize the fit print(fit) # make predictions predictions - predict(fit, BostonHousing) # summarize accuracy mse - mean((BostonHousing$medv - predictions)^2) print(mse) # use caret # load libraries library(caret) library(mlbench) # load dataset data(BostonHousing) # train set.seed(7) control - trainControl(method=“cv“, number=5) fit.lm - train(medv~., data=BostonHousing, method=“lm“, metric=“RMSE“, preProc=c(“center“, “scale“), trControl=control) # summarize fit print(fit.lm) 2. 罗吉斯回归模型(logistic regression) stat 包中 glm()函数可以用于拟合广义线性模型。

      它可以用于拟合处理二元分类问题的罗吉斯回 归模型 # load the library library(mlbench) # Load the dataset data(PimaIndiansDiabetes) # fit model fit - glm(diabetes~., data=PimaIndiansDiabetes, family=binomial(link='logit')) # summarize the fit print(fit) # make predictions probabilities - predict(fit, PimaIndiansDiabetes[,1:8], type='response') predictions 0.5,'pos','neg') # summarize accuracy table(predictions, PimaIndiansDiabetes$diabetes) 方法二:caret 方法 # load libraries library(caret) library(mlbench) # Load the dataset data(PimaIndiansDiabetes) # train set.seed(7) control - trainControl(method=“cv“, number=5) fit.glm - train(diabetes~., data=PimaIndiansDiabetes, method=“glm“, metric=“Accuracy“, preProc=c(“center“, “scale“), trControl=control) # summarize fit print(fit.glm) 3. 线性判别分析(Linear Discriminant Analysis) MASS 包中的 lda()函数可以用于拟合线性判别分析模型。

      # load the libraries library(MASS) library(mlbench) # Load the dataset data(PimaIndiansDiabetes) # fit model fit - lda(diabetes~., data=PimaIndiansDiabetes) # summarize the fit print(fit) # make predictions predictions - predict(fit, PimaIndiansDiabetes[,1:8])$class # summarize accuracy table(predictions, PimaIndiansDiabetes$diabetes) 方法二: # load libraries library(caret) library(mlbench) # Load the dataset data(PimaIndiansDiabetes) # train set.seed(7) control - trainControl(method=“cv“, number=5) fit.lda - train(diabetes~., data=PimaIndiansDiabetes, method=“lda“, metric=“Accuracy“, preProc=c(“center“, “scale“), trControl=control) # summarize fit print(fit.lda) 4. 正则化回归(Regularized Regression) glmnet 包中的 glmnet()函数可以用于拟合正则化分类或回归模型。

      分类模型例子 Classification Example:: # load the library library(glmnet) library(mlbench) # load data data(PimaIndiansDiabetes) x - as.matrix(PimaIndiansDiabetes[,1:8]) y - as.matrix(PimaIndiansDiabetes[,9]) # fit model fit - glmnet(x, y, family=“binomial“, alpha=0.5, lambda=0.001) # summarize the fit print(fit) # make predictions predictions - predict(fit, x, type=“class“) # summarize accuracy table(predictions, PimaIndiansDiabetes$diabetes) 方法二: # load libraries library(caret) library(mlbench) library(glmnet) # Load the dataset data(PimaIndiansDiabetes) # train set.seed(7) control - trainControl(method=“cv“, number=5) fit.glmnet - train(diabetes~., data。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.