《R语言程序设计》 课件 第7-9章 数据挖掘、高级性能、应用拓展_第1页
《R语言程序设计》 课件 第7-9章 数据挖掘、高级性能、应用拓展_第2页
《R语言程序设计》 课件 第7-9章 数据挖掘、高级性能、应用拓展_第3页
《R语言程序设计》 课件 第7-9章 数据挖掘、高级性能、应用拓展_第4页
《R语言程序设计》 课件 第7-9章 数据挖掘、高级性能、应用拓展_第5页
已阅读5页,还剩259页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据挖掘目录数据科学相关概念模型评估分类与回归:决策树分类与回归:KNN聚类分析:K均值聚类可视化挖掘工具Rattle数据科学相关概念什么是数据科学?基于传统的数学、统计学的理论和方法,运用计算机技术进行大规模数据计算、分析和应用的一门学科(摘录自大数据导论)用数据的方法研究科学,用科学的方法研究数据(摘录自鄂维南院士“数据科学的基本内容”)数据科学的提出1974年,丹麦计算机科学家PeterNaur(图灵奖得主)提出了“数据学”概念,建议计算机学界不仅要关注科学计算,也要关注数据处理1996年,数据科学(DataScience)这一名称(主要是从统计学领域)开始出现2007年,JimGray提出数据密集型科学发现(科学研究的第四范式)2013年,有些媒体称为中国的大数据元年国外的著名高校设立了大数据科学相关专业和机构数据科学的提出1998年度的图灵奖得主:数据库学者JamesGray(JimGray)2021年3月31日,2020年图灵奖重磅出炉,颁给了哥伦比亚大学教授AlfredVainoAho和斯坦福大学教授JeffreyDavidUllman。几十年间,Aho和Ullman奠定了编程语言理论与实现、算法设计和分析的基础,通过技术创新和影响甚广的教材做出了重大贡献。2020年度图灵奖数据科学JeffUllman还是数据科学领域的巨擘,他的研究兴趣包括数据库理论、数据库集成、数据挖掘等。/~ullman/Ullman对于数据科学的见解2020年版《海量数据挖掘》2020年《数据科学》

DataScience(TheMITPressEssentialKnowledge)

By作者:JohnD.Kelleher-BrendanTierney

ISBN-10书号:0262535432

ISBN-13书号:9780262535434

ReleaseFinelybook出版日期:2018-04-13

Pages页数:280数据科学,结合了诸多领域中的理论和技术,包括应用数学、统计、模式识别、机器学习、数据可视化、数据仓库以及高性能计算。数据科学通过运用各种相关的数据来帮助非专业人士理解问题。数据科学现阶段人工智能的核心是对大数据进行的特征抽取与机器学习算法。人工智能—机器学习机器学习软件工程师

数据工程师

数据科学家数据科学家使用原型、算法、预测模型和自定义分析设计和构建新的数据建模和生产流程。数据科学家

应具备的综合能力更前沿的研究领域:Nature,Science,IEEE/ACMTransactions等期刊及其子刊KDD,AAAI,IJCAI,SIGIR,WWW,NIPS,ICML,ICDM,CIKM等国际会议各种科技论坛、公众号、在线课程比赛平台DF竞赛平台:

天池:/competitionKaggle:/competitionsBiendata:/相关研究途径模型评估模型评估(modelassessment)模型评估指使用一些指标和方法来评价模型的泛化能力。常用评估指标:分类:精确率Precision、召回率Recall、准确率Accuracy、ROC曲线、PR曲线,等。回归:平均绝对误差MAE、均方误差MSE、均方根误差RMSE,

等。模型评估混淆矩阵(ConfusionMatrix)频数表,用n行n列的矩阵来判断分类好坏程度的方法。经典二分类问题的混淆矩阵:混淆矩阵

TFTF精确率Precision查准率,表示被分为正例的示例中实际为正例的比例。召回率Recall查全率,表示所有正例中被分对的比例,衡量了分类器对正例的识别能力。准确率Accuracy表示分对的样本数除以所有的样本数,最常见的直观的评价指标。但在正负样本不平衡的情况下,准确率有很大的缺陷。精确率Precision、召回率Recall、准确率AccuracyF1-ScoreP和R指标有时候会出现矛盾,F1-Score兼顾了两者,最大值是1,最小值是0。ROC曲线(受试者工作特征曲线)以假正率和真正率为轴的曲线,ROC曲线下的面积称为AUC,AUC越大性能越好。PR曲线(Precision-Recall曲线)以R和P为轴的曲线,在正样本较少的不平衡情况下较好。F1-Score、ROC曲线、PR曲线平均绝对误差(MAE)、均方误差(MSE)等R-Squared越大,表示模型拟合效果越好平均绝对误差:MAE(MeanAbsoluteError)均方误差:MSE(MeanSquaredError)均方根误差:RMSE(RootMeanSquardError)决定系数:R2(R-Square)table()函数建立混淆矩阵caret包中confusionMatrix()函数,得到混淆矩阵及相关指标结果。通过公式计算,或使用第三方包中的函数,得到评估指标结果。R语言与模型评估>table(c(1,0,1,1,1,0,0,1),c(0,0,1,1,1,0,1,1))

01021114决策树决策树是一种树形结构,每个内部节点表示一个属性,每个分支代表属性的输出,每个叶子节点代表一种类别。决策树是一种常用的分类方法,属于监督学习方法。决策树列:属性行:样本类别什么样的人群购买电脑?决策树非叶节点:属性分支:属性的不同取值叶节点:类别构造决策树的核心问题如何选择适当的属性拆分样本?决策树最有区分能力的属性是首选的拆分属性信息增益、熵的计算熵(Entropy)若一变量有k种类别,每种类别对应的概率为p1,p2,p3,……,pk,则该变量的信息量I(视为Entropy)为:热力学:表示分子运动的杂乱程度,越大越杂乱。信息科学:借用它来表示信息的多少,越大信息越多。决策树:表示数据的纯度,0表示完全纯,越大表示越不纯。数据比例Purity纯度熵Yes:100%No:0%完全纯0Yes:0%No:100%完全纯0Yes:50%No:50%最不纯1信息增益(InformationGain)决策树的目的是使一个不纯的数据集逐渐变纯。使拆分后的熵要尽可能小。使拆分前的熵减去拆分后的熵尽可能的大。信息增益:拆分前的熵和拆分后的熵的差值。GenderFemaleMaleYes:30%No:70%Yes:0%No:100%Yes:100%No:0%Student?StudentNon-StudentYes:30%No:70%Yes:30%No:70%Yes:30%No:70%拆分后的熵的计算拆分前的熵的计算熵的降低信息增益Age<=30:5>40:5Yes:9No:5Yes:2No:3Yes:3No:231-40:4Yes:4No:0I=0.9709506I=0I=0.8112781I=0.940286变量拆分前的熵拆分后的熵信息增益Age0.9402860.57856180.3617242Income0.9402860.91106340.0292226Student0.9402860.78845050.1518355CreditRating0.9402860.9056390.0346469信息增益的计算第一个属性的确定:第一个属性的第一个分支的下一个属性的确定:信息增益的计算如何选择适当的属性拆分样本?信息增益、熵的计算如何终止树的增长?都已经归类到同一类别,已经没有办法再找到新的属性来进行节点分割,已经没有任何尚未处理的数据…特点对数据没有分布的要求。结果容易解释。模型可以自动不包含无意义的自变量。决策树的特点决策树的R语言包使用party包中的ctree()建立模型使用predict()函数实现模型结果的预测C4.5算法决策树-实验案例(鸢尾花)数据集iris4个数值属性:Sepal.Length萼片长度、Sepal.Width萼片宽度、Petal.Length花瓣长度、Petal.Width花瓣宽度1个类别属性:Species种类数据集预处理分为两个子集:训练集(70%)和测试集(30%)可以使用随机种子设置固定的随机数ctree():基于训练集建立一个决策树predict():基于测试集进行预测决策树—实验案例party包的安装要求:

/web/packages/party/index.html查看已经安装的包:library()installed.packages()构建决策树绘制决策树图实验案例#载入party包library("party")#查看数据文件的结构str(iris)#构建决策树iris_ctree<-ctree(Species~.,data=iris)#查看决策树信息print(iris_ctree)#绘制决策树图plot(iris_ctree)#载入party包library("party")#查看数据文件的结构str(iris)#构建决策树iris_ctree<-ctree(Species~.,data=iris)#查看决策树信息print(iris_ctree)#构建决策树图plot(iris_ctree)#数据集随机抽取70%为训练数据集,30%为测试数据集ind<-sample(2,nrow(iris),replace=TRUE,prob=c(0.7,0.3))traindata<-iris[ind==1,]testdata<-iris[ind==2,]#构建决策树iris_ctree<-ctree(Species~.,data=traindata)plot(iris_ctree,type="simple")#预测结果train_predict<-predict(iris_ctree)test_predict<-predict(iris_ctree,newdata=testdata)#输出测试数据的分类结果test_predictdata<-cbind(testdata,predictedclass=test_predict)#输出训练数据的混淆矩阵(train_confusion<-table(actual=traindata$Species,predictedclass=train_predict))#输出测试数据的混淆矩阵(test_confusion<-table(actual=testdata$Species,predictedclass=test_predict))划分训练集和测试集(30%),构建决策树、预测、并评估plot(iris_ctree,type="simple")#输出训练数据的混淆矩阵(train_confusion<-table(actual=traindata$Species,predictedclass=train_predict))#输出测试数据的混淆矩阵(test_confusion<-table(actual=testdata$Species,predictedclass=test_predict))小结决策树构造决策树的核心问题如何选择适当的属性拆分样本?如何结束一个决策树?R语言与决策树决策树-实验案例K-近邻算法(KNN)目录什么是K-近邻算法如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则判断该样本也属于这个类别K-近邻算法的实现class程序包kknn程序包caret程序包K-近邻算法实验案例Iris数据集进行分析k的取值K-近邻算法判别一个人,可以看其身边的朋友,所谓观其友而识其人。K近邻算法,即未标记样本的类别由距离其最近的k个样本决定。对新的输入样本,在训练数据集中找到与该样本最邻近的K个样本(也就是K个邻居),这K个样本的多数属于某个类,就把该样本分类到这个类中。K近邻算法的核心思想:当无法判定当前待分类点是从属于已知分类中的哪一类时,可以依据统计学理论根据该点所处的位置特征,衡量它周围邻居的权重,而把它归为(或分配)到权重更大的那一类。有两类不同的样本数据,分别用蓝色正方形和红色三角形表示,而图正中间的那个绿色圆点所标示的数据是待分类数据,下面我们给绿色圆点(即待分类点)分类:原理示例如果K=3,离绿色圆点最近的3个点为2个红色三角形和1个蓝色正方形,少数从属于多数,判定绿色的待分类点属于红色三角形一类。如果K=5,离绿色圆点最近的5个点为2个红色三角形和3个蓝色正方形少数从属于多数,判定绿色的待分类点属于蓝色正方形一类。待分类点K-近邻算法

优点:1、简单,易于理解,易于实现

2、适合对稀有事件进行分类

3、适于多分类问题

缺点:1、可理解性差

2、计算量大

3、依赖于数据集维度的大小

K-近邻算法基本原理:选取k个最邻近的点,这k个点属于哪类个数最多,则该点就属于哪类。计算测试数据到每个训练数据的距离(一般采用欧氏距离)按照距离从小到大排列选取距离最小的k个点统计这k个点在各个类别中的频率选取k个点所在类别频率最高的作为测试数据

的预测类别K-近邻算法常用距离欧氏(Euclidean)距离平方欧氏(SquaredEuclidean)距离明氏(明科夫斯基Minkowski)距离切比雪夫(Chebychev)距离兰氏(Lance和Willianms)距离马氏(Mahalanobis)距离斜交空间距离1.欧氏距离

3.马氏距离2.曼哈顿距离KNN的实现方式

在R语言中,KNN算法的实现方式有三种:

1.通过class包中的knn()函数实现2.通过kknn包中kknn()函数实现3.通过caret包中的train()函数实现程序包:class·knn()函数格式:knn(train,test,cl,k=1,l=0,prob=FALSE,use.all=TRUE)train为训练集中的自变量;test为测试集中的自变量;cl为训练集中的预测变量;k为邻近值个数;prob是否计算预测组别的概率,默认为FALSE,即不计算,如果为TRUE,则结果中的prob属性可以存放该概率的数值。

程序包:kknn·kknn()函数格式:kknn(formula=formula(train),train,test,na.action=na.omit(),k=7,distance=2,…)formula为建模的公式,格式为“预测变量~因变量1+因变量2+…”;train为训练数据集,test为测试数据集。na.action设置对缺失值的处理方式,默认等于na.omit(),即删除含有缺失数据的行;k设置邻近值的个数,默认为7;distance为闵可夫斯基距离,默认为2时该距离为欧氏距离。需要注意的是,该算法只能输出测试数据集的预测结果,不输出训练数据集的预测结果。

程序包:caret·train()函数格式:train(x,y,method=“knn",preProcess=NULL,weights=NULL,...)x为训练集中的自变量;y为训练集中的预测变量;method指定使用的分类或回归模型;method="knn"时就是k近邻算法;weights设定权重变量,默认为空。

K近邻算法—实验案例鸢尾花数据集iris(包含150个样本):4个数值属性:Sepal.Length(萼片长度)、Sepal.Width(萼片宽度)、Petal.Length(花瓣长度)、Petal.Width(花瓣宽度)1个类别属性:Species(种类)setosa,versicolor,和virginica。使用训练集构建模型,利用混淆矩阵将测试集的预测结果和原数据集中分类属性作比较。使用class包中的knn()函数#从iris数据集中随机取100个数据作为样本赋值给index>index<-sample(1:nrow(iris),100)#训练集>iris.train<-iris[index,]#测试集>iris.test<-iris[-index,]#载入包class>library(class)sample()函数:用于抽样>#利用kNN算法对测试集进行分类>result.KNN<-knn(train=subset(iris.train,select=-Species),test=subset(iris.test,select=-Species),cl=iris.train$Species)#生成混淆矩阵>table(result.KNN,iris.test$Species)knn()函数中的参数

训练集中的自变量:train=subset(iris.train,select=-Species)测试集中的自变量:test=subset(iris.test,select=-Species)训练集中的预测变量:cl=iris.train$Species

生成的混淆矩阵:每次运行的结果不相同,但可以从混淆矩阵中看出拟合的效果较好k的取值k为邻近值个数,k值的选择会对结果产生重大影响。当选择较小的k值时,相当于用一个较小领域中的数据进行预测,近似误差减小,估计误差增大,预测结果对近邻的数据非常敏感,容易发生过拟合。当选择较大的k值时,近似误差变大,估计误差变小。判断k的取值k一般小于数据集中数据数目的平方根。k的具体值通常难以直接确定,但可以根据结果预测的准确程度确定k的最优取值。可以通过比较测试集的图像和预测结果的图像判断预测准确率,也可以使用混淆矩阵和列联表。k=2测试集预测结果k=7测试集预测结果预测结果小结什么是K-近邻算法如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则判断该样本也属于这个类别。K-近邻算法的实现class程序包kknn程序包caret程序包K-近邻算法实验案例Iris数据集进行分析k的取值这两种算法之间的根本区别是:Kmeans是聚类算法,KNN是分类算法。Kmeans算法把一个数据集分割成簇,使得形成的簇是同构的,每个簇里的点相互靠近。该算法试图维持这些簇之间有足够的可分离性。由于无监督的性质,这些簇没有任何标签。KNN算法尝试基于其K(可以是任何数目)个周围邻居来对未标记的观察进行分类。它也被称为懒惰学习法,因为它涉及最小的模型训练。因此,它不用训练数据对未看见的数据集进行泛化。拓展Kmeans算法与KNN算法的区别聚类分析目录什么是聚类聚类(clustering)是对大量未知标注的数据集,按数据的内在相似性将数据集划分为多个类别,使类别内的数据相似度较大而类别间的数据相似度较小,其过程被称为聚类。K-Means聚类分析K-均值算法是最早出现的聚类分析算法之一,它是一种快速聚类方法,对于异常值或极值敏感,稳定性差,适合处理分布集中的大样本数据集。聚类分析-实验案例Iris数据集进行K-均值聚类分析其他聚类分析函数主要有4个软件包:stats、cluster、fpc和mclust,其中有相关聚类函数。聚类“物以类聚,人以群分”。将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类。聚类(clustering)是对大量未知标注的数据集,按数据的内在相似性将数据集划分为多个类别,使类别内的数据相似度较大而类别间的数据相似度较小,其过程被称为聚类。在自然科学和社会科学中,存在着大量的分类问题。聚类分析起源于分类学,但是不等于分类,不同在于聚类所要求划分的类未知。聚类分析是一种建立分类的多元统计分析方法,它能将一批样本数据根据其诸多特征,按照在性质上的亲疏程度在没有先验知识的情况下进行自动分类,产生多个分类结果。聚类聚类分析定义:聚类分析是将样品或变量按照他们性质上的亲疏程度进行分类的多元统计分析方法。进行聚类分析时,用来描述物品或变量的亲疏程度通常有两个途径:把每个样品或变量看成是多维空间上的一个点,在多维坐标中,定义点与点、类与类之间的距离,用点与点间距离来描述样品或变量的亲疏程度;计算样品或变量的相似系数,用相似系数来描述样品或变量之间的亲疏程度。编号购物环境服务质量A商厦7368B商厦6664C商厦8482D商厦9188E商厦9490把商厦分成两类:把商厦分为三类:没有指定分类标准,大家为什么会这么分呢?从数据出发,根据性质上的亲疏程度进行分类。A、B为一类,C、D、E为一类A、B为一类,C为一类,D、E为一类样本变量亲疏程度的度量也叫相似性度量,方法主要有两个:(1)距离常用来度量样品之间的相似性;(2)相似系数常用来度量变量之间的相似性。距离欧氏(Euclidean)距离平方欧氏(SquaredEuclidean)距离明氏(明科夫斯基Minkowski)距离切比雪夫(Chebychev)距离兰氏(Lance和Willianms)距离马氏(Mahalanobis)距离斜交空间距离其他K-均值聚类(K-Means)层次聚类(系谱聚类HierarchicalClustering,HC)K-中心点聚类(K-Medoids)密度聚类(Densit-basedSpatialClusteringofApplicationwithNoise,DBSCAN)期望最大化聚类(ExpectationMaximization,EM)

这些算法本身无所谓优劣,而最终运用于数据的效果却存在差异,这在很大程度上取决于数据使用者对于算法的选择是否得当。聚类算法聚类算法种类繁多,且其中绝大多数可以用R实现。普及性最广、最实用、最具有代表性的5种聚类算法:K-均值聚类K-均值算法是最早出现的聚类分析算法之一,它是一种快速聚类方法,对于异常值或极值敏感,稳定性差,适合处理分布集中的大样本数据集。思路:以随机选取的k(预设类别数)个样本作为起始中心点,将其余样本归入相似度最高中心点所在的簇(cluster),再确立当前簇中样本坐标的均值为新的中心点,依次循环迭代下去,直至所有样本所属类别不再变动。算法的计算过程直观,下图将10个点聚为3类为例展示算法步骤。kmeans函数kmeans(x,centers,iter.max=10,nstart=1, algorithm=c(“Hartigan-ong”,“Lloyd”,“Forgy”,“MacQueen”), trace=FALSE)其中x为进行聚类分析的数据集;

centers为预设类别数k;iter.max为迭代的最大值,且默认值为10;nstart为选择随机起始中心点的次数,默认取1;

参数algorithm提供了4种算法选择,默认为Hartigan-Wong算法。K-均值算法在R语言中实现的核心函数为kmeans(),来源于stats软件包。该函数的基本格式为:(鸢尾花)数据集iris:属性:Sepal.Length(萼片长度)、Sepal.Width(萼片宽度)、Petal.Length(花瓣长度)、Petal.Width(花瓣宽度)分类:Species(种类)使用数据集iris的4个属性进行聚类,结果和Species作比较聚类实验例>Data<-iris[,1:4]>library(stats)>km<-kmeans(Data,center=3)>print(km)>Data.camp<-data.frame(iris,km$cluster)>Data_confusion=table(actual=Data.camp$Species, clustered=Data.camp$km.cluster)>print(Data_confusion)>library(ggplot2)>ggplot(Data.camp,aes(Species,km$cluster))+geom_count()>#将聚类以及中心点打印(Sepal)>plot(Data$Sepal.Length,Data$Sepal.Width,col=km$cluster,pch="*")>points(km$centers[,1:2],pch="X",cex=1.5,col=4)>#将聚类以及中心点打印(Petal)>plot(Data$Petal.Length,Data$Petal.Width,col=km$cluster,pch="*")>points(km$centers[,3:4],pch="X",cex=1.5,col=4)>library(RColorBrewer)>library(gridExtra)>col<-brewer.pal(3,"Set1")>p1<-ggplot(data=iris,aes(Sepal.Length,Sepal.Width,colour=Species))+

geom_point(size=5,alpha=.6)+scale_color_manual(values=col)>p2<-ggplot(data=iris,aes(Petal.Length,Petal.Width,colour=Species))+

geom_point(size=5,alpha=.6)+scale_color_manual(values=col)>km$cluster=factor(km$cluster)>p3<-ggplot(data=Data.camp,aes(Sepal.Length,Sepal.Width,

colour=km$cluster))+geom_point(size=5,alpha=.6)+

scale_color_manual(values=col)>p4<-ggplot(data=Data.camp,aes(Petal.Length,Petal.Width,

colour=km$cluster))+geom_point(size=5,alpha=.6)+

scale_color_manual(values=col)>grid.arrange(p1,p2,p3,p4,nrow=2,ncol=2)K=3的情况K=6的情况stats主要包含一些基本的统计函数,如用于统计计算和随机数生成等。cluster专用于聚类分析,含有很多聚类相关的函及数据集。fpc含有若干聚类算法函数,如固定点聚类、线性回归聚类、DBSCAN聚类等。mclust则主要用来处理基于高斯混合模型,通过EM算法实现的聚类,分类以及密度估计等问题。其他聚类分析方法相关软件包:stats、cluster、fpc和mclust。层次聚类层次聚类(系谱聚类):其聚类的过程可以通过类似于系谱图的形式呈现出来。相比K-均值算法与K-中心点算法,系谱算法的突出特点在于,不需事先设定类别数k,这是因为它每次迭代过程仅将距离最近的两个样本/簇聚为一类,其运作过程将自然得到k=n至k=1(n为待分类样本总数)个类别的聚类结果。小结什么是聚类聚类(clustering)是对大量未知标注的数据集,按数据的内在相似性将数据集划分为多个类别,使类别内的数据相似度较大而类别间的数据相似度较小,其过程被称为聚类。K-Means聚类分析K-均值算法是最早出现的聚类分析算法之一,它是一种快速聚类方法,对于异常值或极值敏感,稳定性差,适合处理分布集中的大样本数据集。聚类分析-实验案例Iris数据集进行K-均值聚类分析其他聚类分析函数主要有4个软件包:stats、cluster、fpc和mclust,其中有相关聚类函数。数据挖掘工具RattleRattle介绍功能安装数据分析过程数据导入数据探索算法模型模型评估目录Rattle是什么?基于图形交互界面(GUI)的数据挖掘算法包。包括数据预处理、探索、模型应用和评价,快速处理常见的数据挖掘问题。使用RGtk2包提供的Gnome图形用户界面,适用多种系统。Rattle的安装和调用以WINDOWS为例: >install.packages(“RGtk2”) >install.packages(“rattle”) >library(rattle) >rattle()Rattle简介及安装Rattle的界面:菜单栏,工具栏和标签栏。功能预览Data:选择数据源/输入数据Explore:数据探索,理解数据分布情况Test:统计检验Transform:数据变换Cluster:数据聚类,包括k-均值聚类,系统聚类和双聚类Associate:关联规则方法Model:包括多种算法:决策树,随机森林,组合算法,支持向量机,线性模型,人工神经网络,生存分析Evaluate:模型评估:混淆矩阵、模型风险表、模型ROC曲线、得分表等各类模型评估指标Log:数据挖掘过程的纪录,记录以上功能的具体执行(R代码)功能预览标签栏:利用R语言强大的内置数据集和数据导入能力,处理多种来源数据。最常用格式:分隔符文件(CSV或TXT文件)。使用Data标签中的Spreadsheet,选择需要导入的CSV文件。导入CSV数据ARFF(TheAttribute-RelationFileFormat)文件,Weka默认文件。格式特点:由文件头和数据组成,各个记录相互独立、没有顺序要求,同时各个记录间不存在关系。通过Data标签导入ARFF格式文件。导入ARFF数据Rattle通过ODBC选项,获取有ODBC驱动的数据库。建立ODBC连接,例如配置MySQL的ODBC驱动,使用RODBC包的函数进行数据库连接。在Rattle的DSN中输入连接的数据库名,选中导入的表,可将该表导入到Rattle中。导入ODBC数据>library(RODBC)>odbcConnect("ids_user_action",“userDaniel",“pass@123456") RODBCConnection1 Details: case=tolower DSN=ids_user_action UID=userDaniel PWD=******Rattle包自带weather,dvdtransandaudit等数据集,通过Library选项把这些数据集导入到Rattle。例如:导入boot扩展包中的acme数据集导入Library数据Rattle中的Explore界面:

数据总体概况(Summary)

数据分布情况(Distributions)

数据相关分析(Correlation)

主成分分析(PrincipalComponents)

各变量之间的交互(Interactive)数据探索利用基础base包中的summary()函数获取描述统计量。对数值型变量:最小值、四分位数、中位数、均值和最大值;对因子型或逻辑型变量:频数。数据探索-总体利用Hmisc包中的describe()函数返回变量和观测值的缺失值和唯一值的频数、平均值、分位数,以及五个最大的值和最小值,等信息。数据探索-总体利用fBasics包中的basicsStats()函数,对数值型变量提供更详细的描述性统计:记录数、缺失值个数、最小值、最大值、四分位数、均值、中位数、求和、均值标准误、均值95%置信区间的上下限、方差、偏度和峰度。数据探索-总体利用Rattle的Distributions选项,给出各个变量的分布特征可视化显示。对于数值型变量:箱线图、直方图、累积分布图等;对于类别变量:条形图,点图和马赛克图等。数据探索-分布直方图数据分布探索累积分布图箱线图直方图柱状图、点图、马赛克图相关系数采用Pearson、Kendall、Spearman三种方法,默认是Pearson,可绘制相关系数图。数据探索-相关主成分分析有两种方法:计算样本协方差矩阵的特征值和特征向量(Eigen);对数据矩阵进行奇异值分解(SVD)。输出结果:标准差,主成分系数、贡献率,累计贡献率。两种计算结果有差异,绘制碎石图和biplot图。数据探索-主成分使用latticist和GGobi两种方法,以交互方式探索数据。latticist依赖R的lattice作图系统,latticist包可通过栅栏图方式探索数据集。GGobi需要安装GGobi软件和相应的rggobi包。包括:交互式散点图、柱状图、平行坐标图、时间序列图、散点图矩阵和三维旋转的综合使用。数据探索-交互Rattle通过Cluster选项可以建立K-Means和层次聚类,默认是K-Means聚类。聚类分析关联规则数据挖掘算法(Apriori算法)该算法具体分为以下两步进行:生成所有频繁项目集,一个频繁项目集是一个支持度高于最小支持度阈值的项目集。从频繁项目集中生成所有的可信关联规则,这里可信关联规则是指置信度大于最小置信度阈值的规则。Rattle中的Associate选项可以实现Apriori算法。默认最小支持度阈值(min-sup)是0.100,最小置信度阈值(min-conf)是0.100,每个项集所含项数的最小值是2。关联规则可以通过Rattle的Tree按钮实现决策树建模,它基于rpart算法包中的rpart函数实现。决策树可以通过Rattle的Forest按钮实现随机森林建模,它基于randomForest算法包中的randomForest函数实现。随机森林可以点击OOBROC按钮,生成OOBROC曲线;可以生成每棵树的OOB、因变量为Yes、No时的误差率。随机森林在Rattle程序包中,Evaluate的默认评估标准即为混淆矩阵。在单击“执行”按钮后得出相应所选模型的混淆矩阵。例如:利用天气数据集所建立的随机森林模型的混淆矩阵。混淆矩阵模型的风险图通常也被称为累计增益图,该图像主要提供了二分类模型评估中的另一种透视图,该图像可以通过Evaluate界面中的Risk选项直接生成。风险图模型的ROC图像同样也是一种比较常见的用于机器学习的模型评估图。此外,与ROC图像相关且类似的图像还有敏感度与特异性图像、增益图、精确度与敏感度图像。ROC图及相关图表在Evaluate界面中,Rattle提供了一个得分数据集,能够将模型分析预测结果保存为文件的形式。例如利用决策树生成的模型对测试集进行预测,Type选择Score,Data选择Testing:点击“执行”按钮出现文件保存对话框。模型得分数据集Rattle介绍安装与主要功能数据分析过程数据导入,数据探索,数据建模,模型评估小结思考与讨论高级特性目录R语言与面向对象面向对象基础知识:封装、多态、继承R语言与面向对象编程:泛型函数,S3,S4R语言的程序调试R语言性能提升通过向量化方式优化代码将消耗资源部分用编译型语言编写并行方式编写并运行使用GPU加速R语言与面向对象目录面向对象基础知识概念:对象、类特点:封装、多态、继承R语言与面向对象编程基础函数:class(),mode(),typeof()函数:unclass(),attributes()泛型函数:plot(),print()面向对象类型:S3,S4函数:setClass(),new(),slot()对象的管理:ls(),rm(),save(),load(),exists()…对象(Object)现实世界中,对象指客观世界存在的任何事物。面向对象程序中,对象由数据和操作封装而成。对象的构成标识:对象的名称属性(数据):描述对象的状态方法(操作):对象的行为类(Class)具有相同属性和方法的对象的集合。类是对象的抽象,对象是类的实例。面向对象基础面向对象的特性面向对象程序设计(OOP)的特点:“封装”、“多态”、“继承”。封装:把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(对象)。尽可能隐蔽对象的内部细节(信息隐藏)。多态:相同的函数使用不同类的对象时可以调用不同的操作。继承:允许把一个给定的类的性质自动赋予为其下属的更特殊化的类。继承性是父类和子类之间共享数据和方法的机制,继承性具有传递性。R语言是一种函数式语言,但同样支持面向对象编程。提高软件的重用性,灵活性和扩展性。R基本的数据类型:数值(numeric)、逻辑(logical)、字符(character)等,在此基础上构成了一些复合型的数据类型或数据结构:矩阵(matrix)、数组(array)、数据框(dataframe)等。除此用户还可以自定义新的类型。所有的类型都是建立在基本数据类型之上的。数据类型,可以看做是类。R的面向对象特性由类创建的对象中包含了很多属性(Attribute),其中一种重要的属性就是它所属的类(Class)。R的面向对象特性x<-c(1,2,3)y<-c(1,3,8)class(x)lmot<-lm(y~x)class(lmot)mode(x)mode(lmot)typeof(x)typeof(lmot)R语言class()mode()typeof()函数的区别函数class()返回R对象的类:基本类、复合型的类、其他类(例如lm函数)、自定义类。如果要消除对象的类,则可用unclass()。R的面向对象特性。。。。。。查看类的属性值:attributes()。向量是最基本的数据结构,没有属性,返回空值。

R的面向对象特性多态:相同的函数使用不同类的对象时,R自动匹配调用不同的操作。具有多态性的函数,称为泛型函数,如plot()和print()。泛型函数#输入lmot就能将lmot的内容自动打印出来,是由于R的解释器发现lmot是lm类的对象,自动调用了print.lm()继承R的面向对象特性R语言有多种面向对象的方式:S3类型、S4类型和RC等S3和S4是基于泛型函数,而RC是完全的面向对象。S3类型:和大多数面向对象的语言(C#、JAVA、C++等)不一样,是一种基于泛型函数的面向对象方式。泛型函数可以根据传入对象的类型决定调用哪种具体的方法。容易理解和使用。S4类型:结构更加丰富,更加严格。使用setClass()函数来定义新的S4类型,用new()函数新建某个类的对象。谷歌R语言风格指南支持使用S3,S4。R语言的S3和S4类型S4编程特点setClass(Class="Person",representation(name="character",age="numeric"))setClass(Class="Reporter",representation(title="character"),contains="Person")chen<-new("Reporter",name="chen",age=20,title="RandOOP")chen在S3中使用$来访问一个对象的属性。在S4中使用@来访问属性,或使用slot()来查看属性。S4编程特点chen@nameslot(chen,"name")一个典型的R语言会话中,会产生大量的对象。使用一些函数用来管理这些对象。对象的管理ls()rm()save()load()exists()小结面向对象基础知识概念:对象、类特点:封装、多态、继承R语言与面向对象编程基础函数:class(),mode(),typeof()函数:unclass(),attributes()泛型函数:plot(),print()面向对象类型:S3,S4函数:setClass(),new(),slot()对象的管理:ls(),rm(),save(),load(),exists()…程序调试程序调试程序调试:是程序投入实际运行前进行测试,修正语法错误和逻辑错误的过程,是保证程序正确运行必不可少的步骤。各种原因都会导致程序运行结果和预期不符,根据测试时发现的错误,可进一步诊断,找出出错原因和具体的位置并进行修正。调试函数R语言的核心调试工具由“调试浏览器”构成,可以逐行运行代码并在运行过程中进行检查。调试浏览器可以通过debug()和browser()函数打开。R语言的调试工具针对单个函数,调用debug(f)来设置函数f()的调试状态,此后每次调用f()函数都将自动在函数入口处进入调试浏览器,调用undebug(f)可以取消函数的调试状态。另外,如果在f函数中的某一行加入一条browser()语句,那么浏览器只会在程序执行到这一行时才被打开,继而逐步调试代码,直到退出这个函数。R语言如何调试程序调试浏览器命令进入调试浏览器时,命令提示符将从>变为Browse[d]>(此处d表示函数调用链的深度)。在命令提示符之后可以输入以下命令:n(next):执行下一行,然后暂停,和“ENTER”键效果相同。c(continue):与n类似,但在下次暂停前可能会执行若干条语句。例如在循环中这条命令将会执行剩余的循环,直到退出循环才再次暂停。任意的R命令:浏览器仍然处于R的交互模式,因此可以任意地查看变量的取值,例如要查看变量x的取值,只需要输入x进行查看。where:输出一份栈跟踪路径,显示到达当前位置过程中的函数调用序列。Q:退出调试浏览器,回到R的主交互模式。R语言如何调试程序设置断点使用debug(f)函数会将browser()语句插入到f()的开始位置。然而在有些情况下程序错误发生在函数的中间位置,那么将代码从头到尾调试一遍会非常复杂,在此情况下可在代码的关键行设置断点,让程序暂停到预期的地方。设置断点主要有两种方法:一种是直接调用browser()函数:将browser函数设置在待检测代码前的某个位置,就可以达到设置断点的目的;另一种是使用setBreakpoint()函数:用于设置断点,会在源文件的第某行调用browser()函数。

R语言如何调试程序性能提升目录R语言:R中一些函数命令用C语言编写,编译型,可用机器代码快速运行。但对于有些函数,包括自编代码,是用纯粹的R语言编写,是解释型。R的会话中所有对象保存在内存中,一些大对象使用受限。R语言性能提升:通过向量化方式优化代码将消耗资源部分用编译型语言编写(如C)并行方式编写并运行使用GPU加速用向量化提升速度通过向量化方式,避免使用for循环循环中的函数调用:for,

“:”。调用函数可能会牵涉到创建堆栈帧等过程。若在每次循环中都有消耗,则费时较多。“用户”时间指运行此程序使用CPU的时间;“系统”时间指程序中执行系统指令等CPU时间;“流逝”时间则指实际执行时间。用向量化提升速度例:P147代码运行报告Rprof函数,是R语言核心包自带的性能数据日志函数,显示各函数的调用关系和CPU耗时的数据。summaryRprof函数,分析Rprof生成的日志数据,获得性能报告。profr库的plot函数,对报告进行可视化。file<-"1.out"Rprof(file)x<-runif(10000000)y<-runif(10000000)z<-vector(length=10000000)system.time(z<-x+y)system.time(for(iin1:length(x))z[i]<-x[i]+y[i])Rprof(NULL)summaryRprof()library(profr)plot(parse_rprof(file))编写能被R语言调用的C/C++代码使用C/C++代码的目的:提升程序的性能,特殊的I/O操作P149C代码编译运行编写能被R语言调用的C/C++代码P150writeLines("#include<math.h>#include<stdlib.h> voidadd(double*x,double*y,double*z){ inti=0; for(i=0;i<10000000;i++){ z[i]=x[i]+y[i]; }}","add.c")system("RCMDSHLIBadd.c")dyn.load(sprintf(“add%s”,.Platform$dynlib.ext))#加载system.time(.C(“add”,x,y,z)[[3]])#.C函数用来执行dyn.unload("add.dll")R语言的并行计算方式P151允许在多核单机或者是集群上,利用mpi,socket等消息传递进行并行snowfall基于MPI,即信息传递接口进行并行信息传递Rmpi通过类似lapply()将任务进行拆分,自动的分配到不同的cpu进行计算中Multicore并行计算P152GPU计算P153小结R语言特点:R中一些函数命令用C语言编写,编译型,可用机器代码快速运行。但对于有些函数,包括自编代码,是用纯粹的R语言编写,是解释型。R的会话中所有对象保存在内存中,一些大对象使用受限。R语言性能提升:通过向量化方式优化代码将消耗资源部分用编译型语言编写(如C)并行方式编写并运行使用GPU加速思考与讨论应用拓展R语言与数学R语言应用拓展时间序列分析关联规则分析R与Spark的结合目录R语言与数学大数据具备的特征:不是随机样本,而是全体数据不是精确性,而是混杂性不是因果关系,而是相关关系大数据时代在大数据的研究和应用中,数学是其坚实的理论基础。在数据预处理、分析与建模、模型评价与优化等过程中,数学方法扮演着至关重要的角色。微积分、统计学、线性代数、数值计算、多元统计分析…数学在大数据领域的作用微积分是研究变化规律的方法。微积分是整个近代数学的基础。微积分的基础—极限论,在概率论中运用广泛。随机变量的数字特征、概率密度与分布函数的关系、连续型随机变量的计算等等,是微积分现有成果的直接应用。数学—微积分统计学是一门基于数据的科学,是一种研究数据搜集、整理、分析与应用的方式和方法。数据需要通过统计的方法和原理来整理和分析,这样的数据在精确度和适用度方面才会有较高的提升,才会实现数据的真正价值。大数据的分析与挖掘等工作,从数据预处理开始,至建模得出结论,无不存在着统计学的身影。数学—统计学线性代数领域的矩阵、秩、向量、正交矩阵、向量空间、特征值与特征向量等概念在大数据分析、建模中发挥着巨大的作用。在大数据中,许多应用场景的分析对象都可以抽象表示为矩阵。矩阵代表了某种变换或映射,以矩阵为基础的各种运算,是分析对象、特征提取的重要途径。数学—线性代数数值计算主要研究如何利用计算机更好解决各种数学问题。数值计算是求解工程实际问题的重要方法之一,随着工程问题规模的不断增大,相比理论研究和实验研究,其实用价值更大。在大数据时代的背景下,数据分析、数据挖掘、机器学习等算法中常见的插值、数值逼近、非线性方程求解等,都属于数值计算的范畴,数值运算几乎涵盖了所有涉及复杂数学运算的计算机程序。数学—数值计算多元统计分析,是数理统计学中的一个重要的分支学科,是一种综合分析方法。多元分析在大数据分析中有非常广泛的应用,能够在多个对象和多个指标互相关联的情况下,分析它们的统计规律。多元分析的主要内容包括回归分析、判别分析、聚类分析、主成分分析(PCA)、因子分析、典型相关分析等,这些分析方法在大数据领域都有着非常广泛的应用。数学—多元统计分析数学思维:理性、客观统计思维:描述、概括、分析逻辑思维:概念、判断、推理、比较、分析、综合、抽象、概括计算思维:泛化、分解、抽象、算法、调试、迭代工程思维:系统、具体、限制……数据科学中的思维观166时间序列分析时间序列分析模型时间序列分解模型ARIMA模型时间序列分析与R语言实现实验案例目录统计数据的分类横截面(crosssection)数据:和时间无关,不同对象观测值组成的数据时间序列(timeseries)数据:不同时间的对象观测值形成的数据时间序列分析目的:找寻变化发展的规律,预测将来走势方法:用过去的观测值来预测同一变量的未来值,即时间序列分析的因变量为变量未来的可能值,自变量是包含该变量的一系列历史观测值常用模型:时间序列分解模型、AR、MA、ARMA、ARIMA…时间序列分析时间序列数据

某地从1995年1月到2005年7月的税收(单位:万元)。该数据按照时间顺序按月记录,共127个观测值。特点:总增长趋势,但增长并不是单调上升的,有涨有落。升降和季节或月份的周期有关系。除增长趋势和季节影响之外,还有些无规律的随机因素的作用。时间序列的构成因素在观测量变化发展过程中,每一时期都受到各种因素的影响,包括:趋势变动影响因素,季节变动影响因素,周期(循环)变动影响因素,和随机不规则变动影响因素。时间序列预测值是这些因素共同作用的结果。长期趋势变动(T)指时间序列在一个相当长时期内持续发展变化的总趋势。季节变动(S)由于季节的更换而引起时间序列按一定的季节更替而呈现周期性的明显变化。周期循环变动(C)指时间序列出现以若干年为周期的涨落起伏的波动变化。随机变动(I)由于临时性、偶然性的因素引起时间序列的非周期性或趋势性的随机变动。加法模型和乘法模型(1)乘法模型:假定四种因素存在着某种相互影响关系,总变动是各影响因素相乘之积,适用于相对数时间序列总变动的计算

Y=T·S·C·I(2)加法模型:假定四种变动因素是互相独立的,总变动是各个影响因素相加的总和,适用于总量指标总变动的计算

Y=T+S+C+I时间序列的分解分析时间序列的分解,是将各种变动因素的具体数值测定出来,更好认识和掌握现象变化发展的规律性。Y—动态总变动T—长期趋势变动S—季节变动C—周期循环变动I—随机不规则变动例如:含有T、S和I乘法模型:Y=T·S·I

加法模型:Y=T+S+I1.先分析和测定现象变动的长期趋势,求出T2.然后消除序列中包含的趋势值T乘法模型:Y/T=S·I

加法模型:Y-T=S+I3.对上一步结果进行分析,消除随机变动的影响,得到季节变动的测定值S时间序列的分解分析测定长期趋势(T)的主要方法:时距扩大法、移动平均法、数学模型法等时距扩大法:对原来时距较短的时间序列,变化为时距较长的时间序列,以消除原序列因时距过短受偶然因素和季节变动影响所引起的波动,使现象的发展趋势和规律性明显地表现出来移动平均法:将时间数列的时距扩大,在数列中按一定项数逐项移动计算平均数,达到对原始数列进行修匀的目的,从而形成一个趋势值时间数列。以消除偶然因素的影响,显示出现象发展的趋势数学模型法:用适当的数学模型对时间序列进行分析修匀的方法,测定长期趋势广泛使用这种方法长期趋势(T)分析测定长期趋势(T)的主要方法有:时距扩大法、移动平均法、数学模型法等时距扩大法长期趋势(T)分析测定长期趋势(T)的主要方法有:时距扩大法、移动平均法、数学模型法等移动平均法长期趋势(T)分析

—时间序列的趋势值

t—时间

a—趋势线在Y轴上的截距

b—趋势线的斜率表示时间t变动一个单位时观察值的平均变动数量测定长期趋势(T)的主要方法有:时距扩大法、移动平均法、数学模型法等数学模型法以线性趋势拟合为例:长期趋势(T)分析季节指数描述时间序列在一个年度内各月或季的典型季节特征季节变动的程度是根据各季节指数与其平均数(100%)的偏差程度来测定,如果没有季节变动,则各期的季节指数应等于100%,如果某月份或季度有明显的季节变化,则季节指数应大于或小于100%季节指数的计算-方法1计算移动平均值

中心化移动平均值(CMA)计算移动平均的比值

季节比率季节指数调整

季节比率的平均值除以它们的总平均值季节变动(S)分析【例】下表是一家啤酒生产企业1997~2002年各季度的啤酒销售量数据。试计算各季的季节指数季节指数(例题分析)1CMA=((25+32+37+26)/4+(32+37+26+30)/4)/2=30.625Y/CMA=37/30.625=1.20822季节指数=0.7893/((0.7893+1.0385+1.2704+0.8869)/4)=0.79223季节指数的计算-方法2计算出各年同月(季)的平均水平计算各年所有月(季)的总平均水平季节比率季节指数调整:各季节指数的平均数应等于1或100%,若不则需要进行调整,具体方法是:将每个季节比率的平均值除以总平均值季节变动(S)分析周期性变动特点近乎规律性的从低至高、再从高至低的周而复始的变动不同于趋势变动,它不是朝着单一方向的持续运动,而是涨落相间的交替波动不同于季节变动,其变化无固定规律,变动周期多在一年以上,且常与不规则波动交织在一起,很难单独加以描述和分析

周期波动C=MA(C×I)周期循环变动(C)分析移动平均(MA)

以消除不规则波动周期性分析(例题分析)

时间序列的分解模型:乘法模型,加法模型小结长期趋势变动(T)时距扩大法、移动平均法、数学模型法季节变动(S)计算季节指数:移动平均值

季节比值

季节指数周期循环变动(C)剩余法随机不规则变动(I)移动平均时间序列分析:ARIMA模型对时间序列数据进行分析和预测比较完善和精确的算法是博克思-詹金斯(Box-Jenkins)方法,其常用模型包括:自回归模型(AR模型)、滑动平均模型(MA模型)、自回归-滑动平均混合模型(ARMA模型)、差分整合滑动平均自回归模型(ARIMA模型)ARIMA:AutoregressiveIntegratedMovingAveragemodel

ARIMA(p,d,q):p为自回归项数,q为滑动平均项数,d为使之成为平稳序列所做的差分次数(阶数)ARIMA模型ARIMA模型建模过程ARIMA模型建模过程平稳性检验:若存在增长或下降趋势,需要进行差分处理,进行平稳性检验直至平稳为止,确定差分的阶数d白噪声检验:白噪声是独立分布的正态序列,无相关性,无趋势性,有随机性。白噪声序列说明时间序列中有用的信息已经被提取完,剩下的全是随机扰动,白噪声没有研究的意义,建模终止确定参数:通过自相关系数ACF图、偏自相关系数PAC图,AIC准则(赤道信息量准则)和BIC准则(贝叶斯准则)等相结合的方式,确定模型的阶数p和qARIMA(p,d,q)差分整合滑动平均自回归模型p为自回归项数q为滑动平均项数d为差分次数(阶数)常用时间序列模型在R中,使用时间序列建模前需要先将数据存储到一个时间序列对象中使用函数ts()将数值类型的观测对象存储为时间序列对象ts(data=NA,start=1,end=numeric(),frequency=1,…)

其中:data:时间序列观测值对象,必须为数值类型的向量、矩阵或数据框 start:指定时间序列观测值对象的第一个时间点,如2000年1月为start=c(2000,1) end:指定时间序列的终止时间点 frequency:指定数据在一年中的频数

R语言中的时间序列对象函数ts()、as.ts()将对象转换成时间序列函数is.ts()

判断是否为时间序列函数plot.ts()绘制图形(1)自相关性检验自相关图中的两条虚线标示置信界限是自相关系数的上下界。如果自相关系迅速衰减落入置信区间内,就可能是白噪声;如果自相关系数超出置信区间,那么表示存在相关关系,而且从哪一阶落在置信区间内,就表示自相关的阶数是几阶。acf(x,lag.max=NULL,type=c(correlation,covariance,partial)

acf()为观测值序列自相关函数。参数x为观测值序列,lag.max为与acf对应的最大延迟,type为计算acf的形式,默认为correlation。当没有输出,即为acf(Series)时,画观测值序列的自相关系数图。pacf(x,lag.max,plot,na.action,…)

pacf()为偏自相关函数。输入参数与输出参数的含义同acf()函数的类似。在acf()和pacf()中设定plot=FALSE可以得到自相关和偏自相关的真实值。时间序列检验分析时序图显示该序列具有明显的单调递增趋势,可以判断为是非平稳序列;自相关图显示自相关系数长期大于零,说明序列间具有很强的长期相关性,可以判断为非平稳序列;时间序列检验分析原始序列时序图原始序列的自相关图平稳性检验通常使用单位根检验的方法。在R中,使用fUnitRoots包中的unitrootTest()函数实现单位根检验:

unitrootTest(x,lags=,type=,title=...)时间序列检验分析对于非平稳时间序列,需要进行差分得到平稳时间序列。在R软件中,可以使用diff()函数对时间序列进行差分运算:diff(x,lag=,diff

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论