精华内容
下载资源
问答
  • 以下数据结构中不属于线性数据结构的是(C) A:线性表 B:队列 C:二叉树 D:栈 解释: 线性结构定义: 如果一个非空的数据结构满足下列两个条件:1、有且只有一个根节点;2、每一个节点最多有一个前驱,也最多有一...

    题目:
    以下数据结构中不属于线性数据结构的是(C)
    A:线性表
    B:队列
    C:二叉树
    D:栈
    解释:
    线性结构定义:
    如果一个非空的数据结构满足下列两个条件:1、有且只有一个根节点;2、每一个节点最多有一个前驱,也最多有一个后继;那就可以说这个数据结构是线性结构;
    线性表:
    线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储,但是把最后一个数据元素的尾指针指向了首位结点)
    队列:
    就和排队一样,晚来的站后面,所以前面最多一个,后面最多一个
    二叉树:
    分为根节点、左子树、右子树,所以后继可能有两个
    栈:
    栈是一种特殊的线性结构,里面的方法也是上面最多一个,下面最多一个
    综上所述:根据线性结构和二叉树的定义可以知道:二叉树不是线性结构

    展开全文
  • String 属于基础的数据类型吗?

    万次阅读 2019-04-16 09:21:47
    String 属于基础的数据类型吗? 不属于。 Java8种基础的数据类型:byte、short、char、int、long、float、double、boolean。 【Java面试题与答案】整理推荐 基础与语法 集合 网络编程 并发编程 Web 安全 ...

    String 属于基础的数据类型吗?

    不属于。
    Java8种基础的数据类型:byte、short、char、int、long、float、double、boolean。

     


    【Java面试题与答案】整理推荐

     

    展开全文
  • 数据挖掘与数据分析

    万次阅读 多人点赞 2018-05-28 13:58:14
    一、数据挖掘和数据分析概述 数据挖掘和数据分析都是从数据中提取一些有价值的信息,二者有很多联系,但是二者的侧重点和实现手法有所区分。 数据挖掘和数据分析的不同之处: 1、在应用工具上,数据挖掘一般要通过...

    一、数据挖掘和数据分析概述

    数据挖掘和数据分析都是从数据中提取一些有价值的信息,二者有很多联系,但是二者的侧重点和实现手法有所区分。 
    数据挖掘和数据分析的不同之处: 
    1、在应用工具上,数据挖掘一般要通过自己的编程来实现需要掌握编程语言;而数据分析更多的是借助现有的分析工具进行。 
    2、在行业知识方面,数据分析要求对所从事的行业有比较深的了解和理解,并且能够将数据与自身的业务紧密结合起来;而数据挖掘不需要有太多的行业的专业知识。 
    3、交叉学科方面,数据分析需要结合统计学、营销学、心理学以及金融、政治等方面进行综合分析;数据挖掘更多的是注重技术层面的结合以及数学和计算机的集合 
    数据挖掘和数据分析的相似之处: 
    1、数据挖掘和数据分析都是对数据进行分析、处理等操作进而得到有价值的知识。 
    2、都需要懂统计学,懂数据处理一些常用的方法,对数据的敏感度比较好。 
    3、数据挖掘和数据分析的联系越来越紧密,很多数据分析人员开始使用编程工具进行数据分析,如SAS、R、SPSS等。而数据挖掘人员在结果表达及分析方面也会借助数据分析的手段。二者的关系的界限变得越来越模糊。

    二、数据挖掘

     

    1 数学预备知识 

    概率论:支撑整个数据挖掘算法和机器学习算法的数学基础,要熟悉常见的一些概率分布。 
    矩阵论:线性代数中对数据挖掘最有用的部分,还有一些线性空间相关知识也很重要。 
    信息论:将信息和数学紧密连接在一起并完美的表达的桥梁,需要掌握信息熵、信息增益等相关知识。 
    统计学:数据分析最早的依赖基础,通常和概率论一起应用,现在的机器学习和数据挖掘很多都是基于统计的,常见的均值、方差、协方差等都要熟练掌握。

     

    2 编程基础 

    数据挖掘需要一定的编程基础,因为要实现模型以及数据的处理很多工作都是需要程序来进行的,数据挖掘常用的编程语言如下: 
    SQL:数据库的熟练使用是任何数据挖掘人员必不可少的技能。 
    C++ :有很多的标准模板库以及机器学习模型库进行调用可以方便编程实现。 
    Python:对字符串处理有极大的优势,是解释型语言,实现简单,而且有很多开源的机器学习模型库的支持,可处理大规模数据。 
    Matlab:拥有强大的矩阵运算,也是解释型语言,有很多发展较成熟库可以直接调用,支持数据结果的可视化表示,但是处理数据量有限。 
    R:近年兴起的数据分析编程语言,数据可视化做的比较好,语法简单,学习成本很低,很多非程序设计人员都可以数量掌握。 
    Java:使用范围最广的编程语言,有很多社区进行交流,进行编程实现具有灵活高效的特点,不足之处就是实现功能的代码量较大(相对于其他数据挖掘编程语言)。 
    Scala: 一种具有面向对象风格、函数式风格、更高层的并发模型的编程语言。同时Scala是大数据处理平台Spark的实现语言。

     

    3 数据挖掘的模型知识 

    机器学习和数据挖掘是紧密相关的,要进行数据挖掘需要掌握一些机器学习所用的方法和模型知识,通过模型的训练可以得到处理数据的最优的模型。数据挖掘常用的模型如下:

     

    3.1 监督学习模型 

    就是人们常说的分类,通过已有的训练样本(即已知数据以及其对应的输出)去训练得到一个最优模型(这个模型属于某个函数的集合,最优则表示在某个评价准则下是最佳的),再利用这个模型将所有的输入映射为相应的输出,对输出进行简单的判断从而实现分类的目的,也就具有了对未知数据进行分类的能力。

     

    3.1.1决策树: 

    决策树是用于分类和预测的主要技术之一,决策树学习是以实例为基础的归纳学习算法,它着眼于从一组无次序、无规则的实例中推理出以决策树表示的分类规则。构造决策树的目的是找出属性和类别间的关系,用它来预测将来未知类别的记录的类别。它采用自顶向下的递归方式,在决策树的内部节点进行属性的比较,并根据不同属性值判断从该节点向下的分支,在决策树的叶节点得到结论。 
    主要的决策树算法有ID3、C4.5(C5.0)、CART、PUBLIC、SLIQ和SPRINT算法等。它们在选择测试属性采用的技术、生成的决策树的结构、剪枝的方法以及时刻,能否处理大数据集等方面都有各自的不同之处。

     

    3.1.2 贝叶斯方法: 

    贝叶斯(Bayes)分类算法是一类利用概率统计知识进行分类的算法,如朴素贝叶斯(Naive Bayes)算法。这些算法主要利用Bayes定理来预测一个未知类别的样本属于各个类别的可能性,选择其中可能性最大的一个类别作为该样本的最终类别。由于贝叶斯定理的成立本身需要一个很强的条件独立性假设前提,而此假设在实际情况中经常是不成立的,因而其分类准确性就会下降。为此就出现了许多降低独立性假设的贝叶斯分类算法,如TAN(Tree Augmented Native Bayes)算法,它是在贝叶斯网络结构的基础上增加属性对之间的关联来实现的。

     

    3.1.3 神经网络 

    神经网络是一种应用类似于大脑神经突触联接的结构进行信息处理的数学模型。在这种模型中,大量的节点(称”神经元”)之间相互联接构成网络,即”神经网络”,以达到处理信息的目的。神经网络通常需要进行训练,训练的过程就是网络进行学习的过程。训练改变了网络节点的连接权的值使其具有分类的功能,经过训练的网络就可用于对象的识别。目前,神经网络已有上百种不同的模型,常见的有BP神经网络、径向基RBF网络、Hopfield网络、随机神经网络(Boltzmann机)、竞争神经网络(Hamming网络,自组织映射网络)等。但是当前的神经网络仍普遍存在收敛速度慢、计算量大、训练时间长和不可解释等缺点。

     

    3.1.4 支持向量机(SVM) 

    支持向量机(SVM,Support Vector Machine)是根据统计学习理论提出的一种新的学习方法,它的最大特点是根据结构风险最小化准则,以最大化分类间隔构造最优分类超平面来提高学习机的泛化能力,较好地解决了非线性、高维数、局部极小点等问题。对于分类问题,支持向量机算法根据区域中的样本计算该区域的决策曲面,由此确定该区域中未知样本的类别。

     

    3.1.5 集成学习分类模型 

    集成学习是一种机器学习范式,它试图通过连续调用单个的学习算法,获得不同的基学习器,然后根据规则组合这些学习器来解决同一个问题,可以显著的提高学习系统的泛化能力。主要采用(加权)投票的方法组合多个基学习器,常见的算法有装袋(Bagging)、提升/推进(Boosting)、随机森林等。集成学习由于采用了投票平均的方法组合多个分类器,所以有可能减少单个分类器的误差,获得对问题空间模型更加准确的表示,从而提高分类器的分类准确度。

     

    3.1.6 其他分类学习模型 

    此外还有logistics回归模型、隐马尔科夫分类模型(HMM)、基于规则的分类模型等众多的分类模型,对于处理不同的数据、分析不同的问题,各种模型都有自己的特性和优势。

     

    3.2 无监督学习模型 

    在非监督式学习中,数据并不被特别标识,学习模型是为了推断出数据的一些内在结构,应用场景包括关联规则的学习以及聚类等。常见的聚类算法如下所示:

     

    3.2.1 K-means聚类 

    K-means算法的基本思想是初始随机给定K个簇中心,按照最邻近原则把待分类样本点分到各个簇。然后按平均法重新计算各个簇的质心,从而确定新的簇心。一直迭代,直到簇心的移动距离小于某个给定的值。

     

    3.2.2 基于密度的聚类 

    根据密度完成对象的聚类。它根据对象周围的密度(如DBSCAN)不断增长聚类。典型的基于密度方法包括:DBSCAN(Densit-based Spatial Clustering of Application with Noise):该算法通过不断生长足够高密度区域来进行聚类;它能从含有噪声的空间数据库中发现任意形状的聚类。此方法将一个聚类定义为一组“密度连接”的点集。OPTICS(Ordering Points To Identify the Clustering Structure):并不明确产生一个聚类,而是为自动交互的聚类分析计算出一个增强聚类顺序。

     

    3.2.3 层次聚类方法 

    层次聚类方法对给定的数据集进行层次的分解,直到某种条件满足为止。层次凝聚的代表是AGNES算法,层次分裂的代表是DIANA算法。具体又可分为凝聚的,分裂的两种方案。 
    凝聚的层次聚类是一种自底向上的策略,首先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直到所有的对象都在一个簇中,或者某个终结条件被满足,绝大多数层次聚类方法属于这一类,它们只是在簇间相似度的定义上有所不同。 
    分裂的层次聚类与凝聚的层次聚类相反,采用自顶向下的策略,它首先将所有对象置于同一个簇中,然后逐渐细分为越来越小的簇,直到每个对象自成一簇,或者达到了某个终止条件。

     

    3.2.4 谱聚类 

    谱聚类(Spectral Clustering, SC)是一种基于图论的聚类方法——将带权无向图划分为两个或两个以上的最优子图,使子图内部尽量相似,而子图间距离尽量距离较远,以达到常见的聚类的目的。其中的最优是指最优目标函数不同,可以是割边最小分割, 也可以是分割规模差不多且割边最小的分割。谱聚类能够识别任意形状的样本空间且收敛于全局最优解,其基本思想是利用样本数据的相似矩阵(拉普拉斯矩阵)进行特征分解后得到的特征向量进行聚类。 
    此外常用的聚类方法还有基于网格的聚类、模糊聚类算法、自组织神经网络SOM、基于统计学的聚类算法(COBWeb、AutoClass)等。

     

    3.3 半监督学习 
    3.3.1 半监督学习概述 

    半监督学习算法要求输入数据部分被标识,部分没有被标识,这种学习模型可以用来进行预测,但是模型首先需要学习数据的内在结构以便合理的组织数据来进行预测。应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测。如图论推理算法(Graph Inference)或者拉普拉斯支持向量机(Laplacian SVM.)等。

     

    3.3.2 Multi-view algorithm(多视角算法) 

    一般多用于可以进行自然特征分裂的数据集中.考虑特殊情况(每个数据点表征两个特征):每一个数据点看成是两个特征的集合,然后利用协同训练(Co-training algorithm)进行处理.协同训练(co-training)算法,此类算法隐含地利用了聚类假设或流形假设,它们使用两个或多个学习器,在学习过程中,这些学习器挑选若干个置信度高的未标记示例进行相互标记,从而使得模型得以更新。

     

    3.3.3 Graph-Based Algorithms(基于图的算法) 

    基于图的算法是基于图正则化框架的半监督学习算法,此类算法直接或间接地利用了流形假设,它们通常先根据训练例及某种相似度度量建立一个图,图中结点对应了(有标记或未标记)示例,边为示例间的相似度,然后,定义所需优化的目标函数并使用决策函数在图上的光滑性作为正则化项来求取最优模型参数。

     

    **3.4 文本处理模型 
    3.4.1 分词模型** 

    分词模型主要在处理文本过程中使用,在此特指中文分词模型。中文分词算法现在一般分为三类:基于字符串匹配,基于理解,基于统计的分词。 
    基于字符串匹配分词: 
    机械分词算法。将待分的字符串与一个充分大的机器词典中的词条进行匹配。分为正向匹配和逆向匹配;最大长度匹配和最小长度匹配;单纯分词和分词与标注过程相结合的一体化方法。所以常用的有:正向最大匹配,逆向最大匹配,最少切分法。实际应用中,将机械分词作为初分手段,利用语言信息提高切分准确率。优先识别具有明显特征的词,以这些词为断点,将原字符串分为较小字符串再机械匹配,以减少匹配错误率;或将分词与词类标注结合。 
    基于理解分词: 
    分词同时进行句法语义分析等模拟人对句子的理解,包括分词子系统,句法语义系统,总控部分。总控部分协调下,分词字系统可以获得有关词,句子等的句法和语义信息对分词歧义进行判断。需要大量的语言知识信息。 
    基于统计分词: 
    相邻的字同时出现的次数越多,越有可能构成一个词语,对语料中的字组频度进行统计,不需要切词字典,但错误率很高。可以考虑:使用基本词典进行关键词分词,使用统计方法识别新词组,两者结合。

     

    3.4.2 TF-IDF模型 

    TF-IDF(term frequency–inverse document frequency)是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。TF-IDF加权的各种形式常被搜寻引擎应用,作为文件与用户查询之间相关程度的度量或评级。除了TF-IDF以外,因特网上的搜寻引擎还会使用基于连结分析的评级方法,以确定文件在搜寻结果中出现的顺序。 
    TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。TFIDF实际上是:TF * IDF,TF词频(Term Frequency),IDF反文档频率(Inverse Document Frequency)。TF表示词条在文档d中出现的频率(另一说:TF词频(Term Frequency)指的是某一个给定的词语在该文件中出现的次数)。IDF的主要思想是:如果包含词条t的文档越少,也就是n越小,IDF越大,则说明词条t具有很好的类别区分能力。如果某一类文档C中包含词条t的文档数为m,而其它类包含t的文档总数为k,显然所有包含t的文档数n=m+k,当m大的时候,n也大,按照IDF公式得到的IDF的值会小,就说明该词条t类别区分能力不强。(另一说:IDF反文档频率(Inverse Document Frequency)是指果包含词条的文档越少,IDF越大,则说明词条具有很好的类别区分能力。)但是实际上,如果一个词条在一个类的文档中频繁出现,则说明该词条能够很好代表这个类的文本的特征,这样的词条应该给它们赋予较高的权重,并选来作为该类文本的特征词以区别与其它类文档。这就是IDF的不足之处.

     

    3.4.3 LDA模型 

    LDA(Latent Dirichlet Allocation)是一种文档主题生成模型,也称为一个三层贝叶斯概率模型,包含词、主题和文档三层结构。所谓生成模型,就是说,我们认为一篇文章的每个词都是通过“以一定概率选择了某个主题,并从这个主题中以一定概率选择某个词语”这样一个过程得到。文档到主题服从多项式分布,主题到词服从多项式分布。 
    LDA是一种非监督机器学习技术,可以用来识别大规模文档集(document collection)或语料库(corpus)中潜藏的主题信息。它采用了词袋(bag of words)的方法,这种方法将每一篇文档视为一个词频向量,从而将文本信息转化为了易于建模的数字信息。但是词袋方法没有考虑词与词之间的顺序,这简化了问题的复杂性,同时也为模型的改进提供了契机。每一篇文档代表了一些主题所构成的一个概率分布,而每一个主题又代表了很多单词所构成的一个概率分布。

     

    4 模型评价指标 
    4.1 模型评价概述 

    建模构建过程中会得出一系列的分析结果、模式或模型。同一个采样数据可以利用多种数据分析方法和模型进行分析,模型评价的目的之一就是从这些模型中自动找出一个最好的模型出来,另外就是要针对业务对模型进行解释和应用。 
    模型效果评价通常分两步,第一步是直接使用原来建立模型的样本数据来进行检验。假如这一步都通不过,那么所建立的决策支持信息价值就不太大了。一般来说,在这一步应得到较好的评价。这说明你确实从这批数据样本中挖掘出了符合实际的规律性。第一步通过后,第二步是另外找一批数据,已知这些数据是反映客观实际的、规律性的。这次的检验效果可能会比前一种差,差多少是要注意的,若是差到所不能容忍程度,那就要考虑第一步构建的样本数据是否具有充分的代表性,或是模型本身是否够完善。这时候可能要对前面的工作进行反思了。若这一步也得到了肯定的结果时,那所建立的数据挖掘模型应得到很好的评价了。

     

    4.2 常用的模型评价方法 
    4.2.1 预测准确率 

    预测准确率又称作精度是检索出相关文档数与检索出的文档总数的比率,衡量的是检索系统的查准率。取值在0和1之间,数值越接近1,查准率就越高。 
    计算公式:正确率 = 提取出的正确信息条数 / 提取出的信息条数

     

    4.2.2 召回率 

    召回率是指检索出的相关文档数和文档库中所有的相关文档数的比率,衡量的是检索系统的查全率。取值在0和1之间,数值越接近1,查全率就越高。 
    计算公式:召回率 = 提取出的正确信息条数 / 样本中的信息条数

     

    4.2.3 综合指标F值 

    F值为正确率和召回率的调和平均值,能够综合平衡的去表示模型的性能效果。 
    计算公式:F值 = 正确率 * 召回率 * 2 / (正确率 + 召回率)

     

    4.2.4 ROC曲线 

    受试者工作特性(Receiver Operating Characteristic,ROC)曲线是一种非常有效的模型评价方法,可为选定临界值给出定量提示。将灵敏度(Sensitivity)设在纵轴,1-特异性(1-Specificity)设在横轴,就可得出ROC曲线图。该曲线下的积分面积(Area)大小与每种方法优劣密切相关,反映分类器正确分类的统计概率,其值越接近1说明该算法效果越好。

     

    4.2.5 数据相似度 

    聚类分群效果可以通过向量数据之间的相似度来衡量,向量数据之间的相似度定义为两个向量之间的距离(实时向量数据与聚类中心向量数据),距离越近则相似度越大,即该实时向量数据归为某个聚类。常用的相似度计算方法有:欧几里得距离法(Euclidean Distance)、皮尔逊相关系数法(Pearson Correlation Coefficient)、Cosine相似度和Tanimoto系数法。

     

    4.2.6 其他的模型评价方法 

    除上述的模型评价方法外,还有一些较为详细的模型评价方法。如可以用相对绝对误差、平均绝对误差、根均方差、相对平方根误差等指标来衡量。此外模型的鲁棒性和容错性以及处理数据的速度、能够处理数据的规模等都是衡量一个模型的重要指标。

    5 数据挖掘开发平台

     

    5.1 单机模型开发平台 

    直接在单机上部署数据挖掘开发环境,比如说安装mysql+python就可以搭建一个数据挖掘环境。

     

    5.2分布式集群开发平台 
    5.2.1 Hadoop集群环境 

    Hadoop 是一个通过分布式集群技术,将多个物理机或虚拟机(VMware等厂商的虚拟化技术在一个物理机上运行多个虚拟机)当作一台机器运行。基于Hadoop的数据挖掘数据挖掘一旦完成,就会生成挖掘结果即模式。

     

    5.4.2 Spark集群环境 

    Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。 
    6 数据挖掘的开发流程 
    6.1 数据获取 
    6.2 数据清洗 
    6.3 数据变换 
    6.4 特征工程 
    6.5 模型训练 
    6.6 模型优化 
    6.7 结果分析

    三、数据分析

    相比于数据挖掘,数据分析更多在于利用一定的工具和一定的专业知识分析数据。最初的数据分析来源于统计学家和经济学家的一些理论,进而结合一定的实际应用场景解决问题。数据分析更多的是偏重于业务层次的,对于大多数非计算机相关专业人士来说,掌握一般的数据分析方法是十分有用的,入门上手也相对简单。

    1 数学和专业的预备知识

    概率论:数据分析的重要数学基础,要熟悉常见的一些概率分布。 
    统计学:数据分析最早的依赖基础,通常和概率论一起应用,数据分析要掌握常见的均值、方差、协方差等。 
    心理学:数据分析往往要结合不同的学科知识进行分析,在数据分析的过程中,分析人员往往要结合用户的心理进行结果的调整和分析。 
    专业知识:一般来说,数据分析人员是对某一特定领域进行分析,这就要求分析人员具备一定的行业的专业知识。

    2 使用数据分析软件

    SPSS:功能非常强大非常专业的数据统计软件,界面友好,输出结果美观漂亮。SPSS软件具有信息的采集、处理、分析进行全面评估和预测等功能。包含广义线性混合模型、自动线性模型、一个统计网页入口portal和直复营销direct marketing功能。 
    SAS: 是一个模块化、集成化的大型应用软件系统,由数十个专用模块构成,功能包括数据访问、数据储存及管理、应用开发、图形处理、数据分析、报告编制、运筹学方法、计量经济学与预测等等。 
    Excel:办公套件中最能胜任数据分析的软件,简单实用。 
    Sql:非计算机专业的数据分析人员要操作数据必备的数据库语言。 
    R: 近年兴起的数据分析编程语言,数据可视化做的比较好,语法简单,学习成本很低,很多非程序设计人员都可以数量掌握。

     

    3 数据分析模型选取 

    数据分析人员可以借助一些现场的分析软件进行分析,这些软件集成了一些良好的分析模型,分析人员可以根据自己的实际应用场景进行合适的模型选择。基本的分析方法有:对比分析法、分组分析法、交叉分析法、结构分析法、漏斗图分析法、综合评价分析法、因素分析法、矩阵关联分析法等。高级的分析方法有:相关分析法、回归分析法、聚类分析法、判别分析法、主成分分析法、因子分析法、对应分析法、时间序列等。

     

    4 分析结果展示 

    数据分析的结果通过一些可视化图形或者报表形式进行展示能够增强对分析结果的理解。常用的的分析结果展示方法有: 
    图表展示:用一些柱状图、饼图、盒图等进行展示。 
    曲线展示:运用走势曲线或者ROC曲线进行展示。 
    文字展示:通过语言文字描述进行结果的分析展示,但是不够直观。

     

    5 数据分析的流程 

    5.1 数据获取 
    5.2 数据清洗 
    5.3 分析工具选取 
    5.4 数据分析模型选择 
    5.5 数据处理 
    5.6 处理结果展示 
    5.7 结果数据分析


    DrugAI
    展开全文
  • UCI数据集整理(附论文常用数据集)

    万次阅读 多人点赞 2018-08-30 18:02:32
    摘要:UCI数据集作为标准测试数据集经常出现在许多机器学习的论文中,为了更方便使用这些数据集有必要对其进行整理,这里整理了论文中经常出现的数据集,并详细介绍如何使用MATLAB将数据集文件整理成自己需要的格式...

    摘要:UCI数据集作为标准测试数据集经常出现在许多机器学习的论文中,为了更方便使用这些数据集有必要对其进行整理,这里整理了论文中经常出现的数据集,并详细介绍如何使用MATLAB将数据集文件整理成自己需要的格式以及如何使用数据集文件。要点如下,博主另一篇博文UCI数据集详解及其数据处理(附148个数据集及处理代码)有更加详细的介绍。

    点击跳转至UCI数据集下载页

    下载链接:博主在面包多网站上的完整资源下载页


    1. 前言

    UCI数据集是一个常用的机器学习标准测试数据集,是加州大学欧文分校(University of CaliforniaIrvine)提出的用于机器学习的数据库。机器学习算法的测试大多采用的便是UCI数据集了,其重要之处在于“标准”二字,新编的机器学习程序可以采用UCI数据集进行测试,类似的机器学习算法也可以一较高下。其官网地址如下:
    website: UCI Machine Learning Repository

    尽管从UCI数据集官网可以很容易找到许多想要的数据集,但要将其提供给自己的程序使用还需要了解数据的详细信息。UCI数据集中并非所有数据集都是以相同格式存于文件中的,读取和使用文件方式不一,因此有必要对数据文件稍作整理,特此总结。


    2. UCI数据集介绍

    2.1 简要认识

    要使用数据集中的数据首先需要分清标记和属性值。如点击进入数据集官网:UCI数据集官网选取数据集Iris

    该数据集详情页面如下,从表中数据显示该数据集的数据量为150,属性数为4

    而再往下的Data Set information 中则介绍了该数据集的详细信息,下面的Attribute Information(属性信息)是我们需要关注的,如下图

    其中1-4分别说明了四个属性所代表的实际意义,而5则说明了该数据集分为三类:Iris Setosa、Iris VersicolourIris Virginica。认识到这些,再去看具体的Iris文件中的数据便清楚明了了,点击标题Iris Data Set下方的Data Folder进入文件位置页面,选择iris.data(该文件为Iris数据集数据存放文件)

    进入到数据详情页面,如下图。可以看到文本的排列:每行5个数以逗号分隔,共150行,每行的前4列(红框内的数)分别对应4个属性值,而最后一列(绿色框内)为每个数据所属类别(或称标记)。当前看到的都是“Iris-setosa”一类的数据,往下翻则可看到”Iris-versicolour“和”Iris-virginica

    • 其他的数据集的情况与iris相似,而各个数据集属性数或类别数各有差异。值得注意的是,有些数据集每行数据中间的分隔符并非都是“ ,”(逗号),还有可能是“ ”(空格);有些数据集的标记可能是用数字表示的,如1,2,… 其位置也可能出现在第1列(也可能文件中未给出标记,需自行加上);还有的可能属性值都是英文字符,分别如下所示的wine数据集heart-disease数据集adult数据集。要想以统一的程序使用这样内部格式不一的数据集,就需要在程序使用前根据实际情况对数据集进行调整了。
      总之,各数据集可能各有差异,按照上面的步骤了解了各自的注释信息,找到属性数、分类数、标记等重要信息使用起来便顺利得多。

    2.2 下载数据

    要保存网站上的数据文件,可以进入某个数据集的文件位置页面,如Iris文件位置,选择“iris.data”,右键,链接另存为,即可下载该数据集文件。如下所示,当前保存的文件格式为“.data”文件。

    • 如若想保存文本文件(.txt),可先自行新建一个文本文件,直接点击iris.data进入数据详情页面,直接全选所有数据将数据粘贴到自己新建的文本文件中。至于其他文件格式如.mat,.xls则可借助MATLAB先读取文件数据然后转存为其他格式,在后面章节也会介绍。

    3. 用程序整理数据集

    本节介绍如何使用MATLAB对数据集进行整理,下面以对Iris数据集的整理为例介绍。

    首先从官网下载数据集,例如前面下载的iris.data或者自行复制的txt文件(自命名iris.txt),在文件所在文件夹新建一个.m文件。整理程序的功能是读取原文件数据将最后一列的英文标记按每类改为1-3的数字并将标记放在第一列,重新存储到新的txt文件,顺便另存为.mat以及.xls文件。

    从前面可知,iris文件的最后列为英文字母,如果直接采用MATLABload( )函数将导致最后一列文本未知错误,所以这里采用textscan( )函数。textscan( )函数调用方式如下

    textscan( ): 读取任意格式的文本文件。通过此函数,能够以一次读取一个块的方式读取文件,并且每个块可以具有不同的格式。
    使用方法:首先打开文本文件以进行读取,fopen 返回文件标识符。
    fileID = fopen('test80211.txt','r');
    读取 4 个简介行,这些行是由换行符分隔的字符串。
    Intro = textscan(fileID,'%s',4,'Delimiter','\n')
    Intro = 1x1 cell array{4x1 cell} textscan 返回一个 1x1 元胞数组,其中包含由字符串组成的一个 4×1 元胞数组。
    然后读取每个块的内容即可取出数据了,最后关闭文件。
    fclose(fileID);
    —— 引自 《MATLAB中文文档》

    Iris数据集进行整理的MATLAB程序如下。首先利用textscan()读取数据data为 1 * 5 cell 的元胞数组,每个元素是150*1 double 的数组,存储了一列上的所有数据。明显地,最后一个元素就是全部的标记数组,我们遍历这些标记并把带同一类标记的数据的索引记录下来。根据记录下的每类所有数据的索引便可取出每一类的数据并重新加上数字的标记。

    • textscan()也可以读取txt的文件数据,所以第6行的代码中的文件名同样可以是txt文件,如第5行代码所示。
    clear
    clc
    % 整理iris数据集
    
    % f=fopen('iris.txt');
    f=fopen('iris.data');% 打开文件
    data=textscan(f,'%f,%f,%f,%f,%s'); % 读取数据
    
    D=[];% D中存放属性值
    for i=1:length(data)-1
        D=[D data{1,i}];
    end
    fclose(f);
    
    
    lable=data{1,length(data)};
    n1=0;n2=0;n3=0;
    % 找到每类数据的索引
    for j=1:length(lable)
       if strcmp(lable{j,1},'Iris-setosa')
           n1=n1+1;
           index_1(n1)=j;% 记录下属于“Iris-setosa”类的索引
           
       elseif strcmp(lable{j,1},'Iris-versicolor')
           n2=n2+1;
           index_2(n2)=j;
           
       elseif strcmp(lable{j,1},'Iris-virginica')
           n3=n3+1;
           index_3(n3)=j;
           
       end
    end
    
    % 按照索引取出每类数据,重新组合
    class_1=D(index_1,:);
    class_2=D(index_2,:);
    class_3=D(index_3,:);
    Attributes=[class_1;class_2;class_3];
    
    I=[1*ones(n1,1);2*ones(n2,1);3*ones(n3,1)];
    Iris=[I Attributes];% 为各类添加数字标记
    
    
    save Iris.mat Iris % 保存.mat文件
    save Iris -ascii Iris; % 保存data文件
    
    
    f=fopen('iris1.txt','w');
    [m,n]=size(Iris);
    for i=1:m
        for j=1:n
            if j==n
                fprintf(f,'%g \n',Iris(i,j));
            else
                 fprintf(f,'%g,',Iris(i,j));
            end
        end
    end
    
    fclose(f);
    
    
    % save iris.txt -ascii Iris 
    % dlmwrite('iris.txt',Iris);
    

    经过代码1-42行的操作,原来带有的英文标记的数据便由相应的数字标记代替了并放在了第一列的位置上。这里原来标记为Iris-setosa的数据重新标记为1,Iris-versicolor标记为2,Iris-virginica标记为3。

    代码45行和46行分别将整理好的数据保存为.mat文件和.data文件;第49-61行是通过文件操作的方式利用循环逐行逐列将数据打印到txt文件中,每个数据中间由逗号分隔,每行5个数据打印完则回车至下一行。

    当然也可以采用64行或65行的方式保存txt文件,不过里面数据的格式稍有不同,读者可以自行尝试一下。整理前后的文件对比情况如下图所示。参照以上代码对于其他数据集的整理程序可在此之上根据实际需要稍作修改。

    4. 如何使用数据集文件

    整理好了数据文件,使用起来就比较简单了,其实前面的代码中已经读取过文件中的数据了。经过整理现在文件中的数据都是数字形式,在MATLAB中可以通过load( )函数直接读取了,如下代码

    iris_data=load('iris1.txt');
    lable_iris=iris_data(:,1);
    attributes_iris=iris_data(:,2:end);
    

    iris_data包含了标记和属性值的全部数据,lable_irisiris_data的第一列所有元素,即每个数据的标记,attributes_iris取自其后的所有列上的元素,即所有属性值的数组。具体的使用UCI数据集的机器学习算法实例可参考本人前面一篇博文Kmeans聚类算法详解,后面也会继续介绍。


    • 论文中经常出现的数据集本人已经按照以上方法整理完成,现将其一并分享给大家。整理好的数据集如下表所示,每个数据集文件都保存了.mat、.data、.txt三种文件格式方便大家选择下载,以下是下载链接

    【下载链接】

    下载链接1:论文中常见UCI数据集txt版
    下载链接2:论文中常见UCI数据集mat版
    下载链接3:论文中常见UCI数据集data版

    另外在整理过程中搜集了许多其他的UCI数据集,文件都是mat格式方便使用,下图是压缩包内的文件详情,有需要的可以下载,下载链接如下

    下载链接4:43个mat格式的UCI数据集

        同时本资源已上传至面包多网站,如果您没有积分或C币或者没有会员,可以点击以下链接获取。完整文件下载链接如下:

    下载链接:博主在面包多网站上的完整资源下载页

    公众号获取
        本人微信公众号已创建,扫描以下二维码并关注公众号“AI技术研究与分享”,后台回复“UC20180830”即可获取全部资源文件信息。


    5. 结束语

    由于博主能力有限,博文中提及的方法与代码即使经过测试,也难免会有疏漏之处。希望您能热心指出其中的错误,以便下次修改时能以一个更完美更严谨的样子,呈现在大家面前。同时如果有更好的实现方法也请您不吝赐教。

    展开全文
  • 结构化数据、半结构化数据和非结构化数据

    万次阅读 多人点赞 2017-02-04 18:23:03
    结构化数据、半结构化数据和非结构化数据结构化数据结构化的数据是指可以使用关系型数据库表示和存储,表现为二维形式的数据。一般特点是:数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的。...
  • 数据脱敏——什么是数据脱敏

    万次阅读 多人点赞 2017-08-29 23:20:54
     数据脱敏(Data Masking),又称数据漂白、数据去隐私化或数据变形。    百度百科对数据脱敏的定义为:指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。在涉及客户安全数据或者一些商业...
  • 什么是数据仓库?

    万次阅读 多人点赞 2019-04-24 19:44:14
    为什么需要数据仓库? 传统的数据库中,存放的数据都是一些定制性数据较多,表是二维的,一张表可以有很多字段,字段一字排开,对应的数据就一行一行写入表中,特点就是利用二维表表现多维关系。 但这种表现关系...
  • 为什么说数据是资产 何为数据资产,首页我们先了解一下数据到底是什么?按照一般的定义,数据就是数值,是通过我们的观察、实验和计算得出的结果。数据其实有很多种,最简单的无非就是数字,但也可以是文字、图像、...
  • 数据结构

    万次阅读 2018-02-07 00:47:38
    数据结构是由数据和结构两方面组成,下面举一个例子可以让大家很快地理解数据结构:比如我们实验楼的课程管理系统,每一门课程由课程号、课程名、类别、作者等组成,每门课的课程号是唯一的,但不同的课程可能属于同...
  • 数据挖掘:数据清洗——数据噪声处理

    万次阅读 多人点赞 2020-02-19 14:43:42
    数据挖掘:数据预处理——数据噪声处理...观测量(Measurement) = 真实数据(True Data) + 噪声 (Noise):而离群点(Outlier)属于观测量,既有可能是真实数据产生的,也有可能是噪声带来的,但是总的来说是和大部分观测...
  • 什么是数据结构?什么是算法

    万次阅读 多人点赞 2018-05-04 00:35:22
    记得是大一大二的时候学习了数据结构。时间过的好快,现在实现了,现在感觉自己的基础好差很多都不会。欠的帐还是要还的! 什么是数据结构?什么是算法? 呃呃呃呃 哎….不会。 多次参加了MOOC姥姥的数据结构...
  • java 中String 是个对象,是引用类型 ,基础类型与引用类型的区别是,基础类型只表示简单的字符或数字,引用类型可以是任何复杂的数据结构 ,基本类型仅表示简单的数据类型,引用类型可以表示复杂的数据类型,还...
  • 什么是栅格数据

    千次阅读 2019-06-26 21:52:10
    对于地理空间数据而言,GIS有两大基本存储模型,一种是矢量数据模型,一种是栅格数据模型。栅格数据模型与矢量数据模型是地理信息系统中空间数据组织的两种最基本的方式。 同样信息的表达,在矢量数据模型中,我们...
  • 数据驱动?什么是数据驱动??

    万次阅读 热门讨论 2018-12-09 20:57:44
    前几天和一个博士师兄聊天,师兄说:“你毕设做什么题目?...可能各有各的说法,但是都是属于人工智能的领域。 让我们通过一个小例子来简单理解一下什么是数据驱动 假设有A和B两家订票网站: A公司将从网...
  • 2010年左右,还是在上学的时候,学过一门课程叫《数据仓库与数据挖掘》,那还是属于传统数据的时代,我们会讨论什么是数据仓库?什么是数据集市?数据仓库和数据库有什么区别?等等,当我还在苦苦学习这些之时,...
  • 数据结构——什么是数据结构?

    千次阅读 多人点赞 2018-01-23 18:27:01
    什么是数据结构 1.数据结构的有关定义  (1)数据结构:是带有结构数据元素的集合  (2)数据:是客观事物的数值、字符以及能输入机器且能被处理的各种符号的集合  编译 链接  源程序(.c)--------->...
  • 数据仓库之元数据管理

    万次阅读 2020-08-21 16:29:27
    数据是数据仓库管理系统的重要组成部分,元数据管理是企业级数据仓库中的关键组件,贯穿了数据仓库的整个生命周期,使用元数据驱动数据仓库的开发,使数据仓库自动化,可视化。 构建数据仓库的主要步骤之一是 ...
  • 点击进入_更多_Java千百问1、null属于哪种数据类型首先,在java中,null本身不是对象,也不是Objcet的实例。那么他属于哪种数据类型呢? 了解数据类型看这里:java中数据类型是什么 java基本数据类型看这里:[java...
  • 数据库, 数据仓库, 数据集市,数据湖,数据中台

    千次阅读 多人点赞 2019-02-22 16:21:47
    数据仓库和数据集市的区别 作者:修鹏李 出处:CSDN 大数据:数据仓库和数据库的区别 作者:南宫蓉 出处:简书 第一篇:数据仓库概述 第二篇:数据库关系建模 作者:穆晨 出处:CNBLOS 摘要 本文简要介绍...
  • 什么是数据标注?

    万次阅读 多人点赞 2019-07-30 16:16:00
    这个是IT互联网公司的一个职位,数据标注员就是使用自动化的工具从互联网上抓取、收集数据包括文本、图片、语音等等,然后对抓取的数据进行整理与标注。相当于互联网上的”专职编辑“。 这个岗位工作任务简单的,没...
  • 什么是数据分层,数据分层的作用!

    万次阅读 多人点赞 2018-08-25 11:04:36
    大数据环境下该如何优雅地设计数据分层 0x00 前言 最近出现了好几次同样的对话场景: 问:你是做什么的? 答:最近在搞数据仓库。...问:哦,你是传统行业的吧,我是...数据仓库更多代表的是一种对数据的管理和使...
  • 数据仓库元数据介绍

    千次阅读 2018-12-04 20:56:56
    当需要了解某地企业及其提供的服务时,电话黄页的重要性就体现出来了。元数据(Metadata)类似于这样的电话黄页。 元数据的定义 ...元数据是数据仓库管理系统的重要组成部分,元数据管理器是企业级数据仓...
  • 数据挖掘面试 150 道题(附答案)

    万次阅读 多人点赞 2019-09-21 13:50:38
    1. 某超市研究销售纪录数据后发现,买啤酒的人很大概率也会购买尿布,这种属于数据挖掘的哪类问题?(A) A. 关联规则发现 B. 聚类 C. 分类 D. 自然语言处理 2. 以下两种描述分别对应哪两种对分类算法的评价标准...
  • 到底什么是数据中台?

    万次阅读 多人点赞 2019-07-22 21:00:00
    最近可能大家听到“数据中台”这个词越来越频繁了,有时候我跟一些朋友聊起来,也是都在说这个,但是一直不知道这到底是个什么。最近就看到这篇文章,觉得说的还挺好的,分享给大家看...
  • 以下数据结构中,()是非线性数据结构A:树(二叉树) B:字符串 C:队列 D:栈 E:线性表 F:二维数组 G:多维数组数据的逻辑结构分为线性结构和非线性结构。 常用的线性结构有:线性表,栈,队列,双队列,...
  • 数据预处理——数据清洗

    万次阅读 2018-05-10 20:46:04
    数据挖掘中,海量的原始数据中存在着大量不完整、不一致、有异常的数据,严重影响到数据挖掘建模的执行效率,甚至可能导致挖掘结果的偏差,所以进行数据清洗就显得尤为重要,数据清洗完成后接着进行或者同时进行...
  • 数据治理系列1:数据治理框架【解读分析】

    万次阅读 多人点赞 2019-05-08 14:58:56
    作者:石秀峰,多年来一直从事企业数据资源规划、企业数据资产管理、数据治理,欢迎关注。 一、什么是数据治理?...笔者认为:所有为提高数据质量而展开的业务、技术和管理活动都属于数据治理范畴。...
  • Java 判断数据是哪种数据类型

    万次阅读 2019-08-09 12:00:52
    关键字:A instanceof 基础数据类型包装类 如: String name = "如意"; System.out.print(name instanceof String);//判断name类型是否为String,返回true或false
  • 什么是企业数据

    千次阅读 热门讨论 2021-05-07 23:53:44
    写在前面 ...企业数据对企业具有很高的价值,包括财务数据、业务数据、员工个人数据等,企业花费了大量时间和金钱来保证数据在各方面的安全和质量。 然而,所谓的企业数据从当前状态变得日渐陈旧,虽然

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,571,090
精华内容 628,436
关键字:

属于数据的是