精华内容
下载资源
问答
  • 商标TM和R有什么区别

    2015-02-06 11:51:00
    在中国,商标上的TM也有其特殊含义,其实TM标志并非对商标起到保护作用,它与R不同,TM表示的是该商标已经向国家商标局提出申请,并且国家商标局也已经下发了《受理通知书》,进入了异议期,这样就可以防止其他人...

      在中国,商标上的TM也有其特殊含义,其实TM标志并非对商标起到保护作用,它与R不同,TM表示的是该商标已经向国家商标局提出申请,并且国家商标局也已经下发了《受理通知书》,进入了异议期,这样就可以防止其他人提出重复申请,也表示现有商标持有人有优先使用权。     

      用圆圈R,是“注册商标”的标记,意思是该商标已在国家商标局进行注册申请并已经商标局审查通过,成为注册商标。圆圈里的R是英文register注册的开头字母。  注册商标具有排他性、独占性、唯一性等特点,属于注册商标所有人所独占,受法律保护,任何企业或个人未经注册商标所有权人许可或授权,均不可自行使用,否则将承担侵权责任。

      用TM则是商标符号的意思,即标注TM的文字、图形或符号是商标,但不一定已经注册(未经注册的不受法律保护)。TM是英文trademark的缩写。

    展开全文
  • 分词之后,便是创建文档-词条矩阵了。...语料库是一个概要性的概念,在这里分为动态语料库(Volatile Corpus,作为R 对象保存在内存中)静态语料库(Permanent Corpus,R 外部保存)。所对应的函数分别是V...

    分词之后,便是创建文档-词条矩阵了。

    本文便是针对于此。正式学习tm(text mining)包

    数据读入

    在tm 中主要的管理文件的结构被称为语料库(Corpus),代表了一系列的文档集合。语料库是一个概要性的概念,在这里分为动态语料库(Volatile Corpus,作为R 对象保存在内存中)和静态语料库(Permanent Corpus,R 外部保存)。所对应的函数分别是 VCorpus() 和 PCorpus() 。此外,还有一个 Corpus() 的函数,跟Vcorpus或simpleCorpus的简便版,取决于参数

    我们可以看一下tm 中Corpus(或VCorpus)函数的用法,对于动态语料库:

     VCorpus(x, readerControl = list(reader = reader(x), language = "en")) 

    在tm 中静态语料库也是可以处理的,但需要使用filehash 包来支持:

    PCorpus(x,
         readerControl = list(reader = reader(x), language = "en"),
         dbControl = list(dbName = "", dbType = "DB1"))

    下面来具体介绍以下他们的参数:

      x  :说明资料来源(input location)的源对象(Source Object)。对于这些资料来源(即x),tm 包提供了  一些相关的函数,比如

    • DirSource:处理目录
    • VectorSource:由文档构成的向量
    • DataframeSource:数据框,就像CSV 文件

     readerControl :必须声明reader 和language 两个内容。reader是指从资料源创立的文本文件。tm 包提供了一系列的函数支持(比如,readPlain(),readGmane(), readRCV1(), readReut21578XMLasPlain(), readPDF(), readDOC() 等)。可以使用getReaders() 获得这些函数的列表。对于每一类源,都会有自己默认的reader。比如对DirSource 来说,默认读入输入文件并把内容解释为文本。第二个language 就比较简单了,即字符集,比如可能是UTF-8 字符集。

     dbControl :在使用静态语料库(Pcorpus)条件下,会有此参数。它用来声明R 内存对象外的资料来源(比如数据库)。dbType 控制了包filehash 支持的数据库类型。数据库支持可以有效的减少对内存的要求,但数据的访问会受到硬盘的读写能力限制。

    小实例:

    #1、读取包tm目录下的texts/txt目录下的文本文件
    txt <- system.file("texts", "txt", package = "tm")
    ovid <- Corpus(DirSource(txt),readerControl = list(language = "lat"))
    ovid
    #<<SimpleCorpus>>
    #Metadata:  corpus specific: 1, document level (indexed): 0
    #Content:  documents: 5
    
    #2、从字符向量创建语料库
    docs <- c("This is a text.", "This another one.")
    Corpus(VectorSource(docs))
    #<<SimpleCorpus>>
    #Metadata:  corpus specific: 1, document level (indexed): 0
    #Content:  documents: 2
    
    #3、读取路透社文档创建一个语料库(用于后续示例)
    reut21578 <- system.file("texts", "crude", package = "tm")
    reuters <- Corpus(DirSource(reut21578), readerControl = list(reader = readReut21578XML))
    reuters
    #<<VCorpus>>
    #Metadata:  corpus specific: 0, document level (indexed): 0
    #Content:  documents: 20

    数据输出

    数据输出,也就是保存语料库。可用writeCorpus()函数

    例如,上面实例1中保存: writeCorpus(ovid)   此时,在工作目录下会生成与语料库对应的多个纯文本文件

    语料库的提取

    对于print() 和summary() 函数依然有效,但源信息被隐藏(可以想象一下每个语料库包含了大量的文本,就像数据库一样)。meta() 函数会提供更多的元数据(meta data)信息,完整信息的提取需要使用inspect(),比如:

    对于单个文档的提取此处使用 [[ ,当然既可以通过位置也可以通过名称  ovid[["ovid_1.txt"] 

    此外,查看单个文档内容也可用 as.character(ovid[[1]]) 

    查看多个文档内容: lapply(ovid[1:2],as.character) 

    变换(transformation)

    一旦创建了语料库,后续文档修改则不可避免,比如填充、停止词去除。在tm 包里,这些函数都归到信息转化里面,其主要函数就是tm_map(),这个函数可以通过maps 方式将转化函数实施到每一个语料上。

    转化为纯文本:在reuters 这个语料库中保存的是XML 格式的文本,XML 格式文本没有分析的意义,我们只需要使用其中的文本内容。这个操作可以使用as.PlainTextDocument() 函数来实现:

     reuters <- tm_map(reuters, PlainTextDocument)

    注意,另外一种方式就是使用readReut21578XMLasPlain 读取方式,那么在第一步即为纯文本格式。

    去除多余空白 :  reuters <- tm_map(reuters, stripWhitespace) 

    小写变化:  reuters <- tm_map(reuters, tolower)   更广泛的字符操作可参考gsub

    停止词去除:  reuters <- tm_map(reuters, removeWords, stopwords("english")) 

    填充:  tm_map(reuters, stemDocument)  (需要Snowball 包(并行计算)支持)

    过滤

    过滤器可以移除不感兴趣的(或者感兴趣的)文档。tm提供了tm_filter函数,这个函数的原型为

    • tm_filter(x, FUN,...)
    • tm_index(x,FUN,...)

    其中的FUN函数出入为一片文档,输出为一个bool值。表示是否接受该文档。第二个版本tm_index只是返回满足条件的index,前者返回一个文集,下面是一个使用示例:

     还有一种方法: query <- "id == '237' & heading == 'INDONESIA SEEN AT CROSSROADS OVER ECONOMIC CHANGE'"   tm_filter(reuters, FUN = sFilter, query) 

    但是很遗憾,报错 Error in match.fun(FUN) : object 'sFilter' not found 

    各种百度谷歌无果,没有直接解决的办法。最后都是自定义函数匹配函数实现的。

     元数据管理

    元数据分为两个层次,一个是文集级别的元数据,一个是文档级别的元数据。获得元数据最简单的方式是调用meta()函数,除了meta() 函数外,DublinCore() 函数提供了一套介于Simple Dublin Core 元数据和tm 元数据之间的映射机制,用于获得或设置文档的元数据信息。

    修改文档级别的元数据:A.  DublinCore(crude[[1]], "Creator") <- "Ano Nymous" 

    B.  meta(crude[[1]], "author") <- "Jiang Hang" 

    修改文集级别的元数据:

    创建词条-文档关系矩阵

    创建词条-文档关系矩阵的核心思想就是通过把所有文档所用到的词提取出来,然后行(或列)代表文档,列(或行)代表词,若该文档中该词出现n次,则此处的矩阵元素为n,反之为0。从而构造出一个稀疏矩阵。

    在tm包中提供了两个函数来构造此矩阵,TermDocumentMatrix 和 DocumentTermMatrix,分别以词条文档为行列、文档词条为行列

     

    其他操作:

    • 查找一定频数范围的词。findFreqTerms() 函数, findFreqTerms(x, lowfreq = 0, highfreq = Inf) 找出出现次数高于lowfreq并低于highfreq的条目。例如,findFreqTerms(dtm, 5)找出出现5次以上的条目
    • 查找与某个词相关性高于一定范围的词。 findAssocs(x, terms, corlimit) ,其中tems,corlimit可以是一个向量。例如,findAssocs(tdm,"recent",0.5),找出与recent相关性大于0.5的词,返回的是一个列表。
    • 删减稀疏度大于指定数值的条目。 removeSparseTerms(x, sparse) ,sparse是指稀疏度,0为最大,1为最小。

    字典

    字典是字符串的集合,通常用一个字符串向量表示,可以在DocumentTermMatrix函数中指定一个 字典,这样生成的矩阵中,就只有字典中出现的词语,不在字典中的词语不会出现

     DocumentTermMatrix(reuters,list(dictionary = c("prices", "crude", "oil"))) 

     

    此外,标准的操作符  [, [<-, [[, [[<-, c(), lapply()  ,可以直接作用在语料库上

    本文参考:刘思喆《R语言环境下的文本挖掘》

     

    转载于:https://www.cnblogs.com/Hyacinth-Yuan/p/8253692.html

    展开全文
  • 撸了今年阿里、头条美团的面试,我有一个重要发现.......>>> ...

    #清除内存空间
    rm(list=ls()) 
    #导入tm包
    library(tm)
    library(SnowballC)
    #查看tm包的文档
    #vignette("tm")


    ##1.Data Import  导入自带的路透社的20篇xml文档
    #找到/texts/crude的目录,作为DirSource的输入,读取20篇xml文档
    reut21578 <- system.file("texts", "crude", package = "tm") 
    reuters <- Corpus(DirSource(reut21578), readerControl = list(reader = readReut21578XML))

    ##2.Data Export  将生成的语料库在磁盘上保存成多个纯文本文件
    writeCorpus(reuters)

    ##3.Inspecting Corpora 查看语料库 
    #can use inspect(),print(),summary()
    #由于是从xml读取过来,所以现在的corpus还是非常杂乱
    inspect(reuters)
    print(reuters) 
    summary(reuters)


    ##4.Transformations 
    #对于xml格式的文档用tm_map命令对语料库文件进行预处理,将其转为纯文本并去除多余空格,
    #转换小写,去除常用词汇、合并异形同意词汇,如此才能得到类似txt文件的效果
    #可以用inspect(reuters)查看此时的效果,明显好很多
    reuters <- tm_map(reuters, as.PlainTextDocument)#将reuters转化为纯文本文件,去除标签
    reuters <- tm_map(reuters, stripWhitespace)#去掉空白
    reuters <- tm_map(reuters, tolower)#转换为小写
    reuters <- tm_map(reuters, removeWords, stopwords("english"))#去停用词
    #采用Porter's stemming 算法 提取词干
    #Stem words in a text document using Porter's stemming algorithm
    #install.packages("SnowballC")
    tm_map(reuters, stemDocument)


    ##5.Creating Term-Document Matrices
    #将处理后的语料库进行断字处理,生成词频权重矩阵(稀疏矩阵)也叫词汇文档矩阵
    dtm <- DocumentTermMatrix(reuters)
    #查看词汇文档矩阵
    inspect(dtm[1:5, 100:105])
    #Non-/sparse entries: 1990/22390     ---非0/是0 
    #Sparsity           : 92%            ---稀疏性  稀疏元素占全部元素的比例
    #Maximal term length: 17             ---切词结果的字符最长那个的长度
    #Weighting          : term frequency (tf)
    #如果需要考察多个文档中特有词汇的出现频率,可以手工生成字典,
    #并将它作为生成矩阵的参数
    d<-c("price","crude","oil","use")
    inspect(DocumentTermMatrix(reuters,control=list(dictionary=d)))


    ##6.Operations on Term-Document Matrices
    #找出次数超过5的词
    findFreqTerms(dtm, 5)
    #找出与‘opec’单词相关系数在0.8以上的词
    findAssocs(dtm,"opec",0.8)


    #因为生成的矩阵是一个稀疏矩阵,再进行降维处理,之后转为标准数据框格式
    #我们可以去掉某些出现频次太低的词。
    dtm1<- removeSparseTerms(dtm, sparse=0.6)
    inspect(dtm1)
    data <- as.data.frame(inspect(dtm1))


    #再之后就可以利用R语言中任何工具加以研究了,下面用层次聚类试试看
    #先进行标准化处理,再生成距离矩阵,再用层次聚类
    data.scale <- scale(data)
    d <- dist(data.scale, method = "euclidean")
    fit <- hclust(d, method="ward.D")
    #绘制聚类图
    #可以看到在20个文档中,489号和502号聚成一类,与其它文档区别较大。
    plot(fit,main ="文件聚类分析")


    #主成分分析
    ozMat <- TermDocumentMatrix(makeChunks(reuters, 50),
                                list(weighting = weightBin))
    k <- princomp(as.matrix(ozMat), features = 2)
    screeplot(k,npcs=6,type='lines')
    windows()
    biplot(k)

    展开全文
  • 7 相应R包简介 8 文本处理 词干化stemming snowball包 记号化Tokenization RWeka包 中文分词 Rwordseg包 9 tm包常用操作介绍 tm包具体操作 建立语料库 导出语料库 语料库检索查看 元数据


    文本挖掘相关介绍

    1、什么是文本挖掘

    文本挖掘是抽取有效、新颖、有用、可理解的、散布在文本文件中的有价值知识,并且利用这些知识更好地组织信息的过程。

    在文本挖掘领域中,文本自动分类,判同,情感分析是文本挖掘比较常见的应用文本分类技术主要应用在百度新闻,谷歌新闻等新闻网站,对新闻内容进行自动分类,并且实现根据用户专业倾向的文档推荐;搜索引擎去重,论文抄袭判别系统等。情感分析技术主要应用在电商评论分析系统,政府和媒体舆情监测系统等。语意理解技术应用在机器翻译、聊天机器人等。

    2、NLP

    文本挖掘可以视为NLP(Natural language processing,自然语言处理)的一个子领域,目标是在大量非结构化文本中整理析取出有价值的内容。由于人类语言具有很高的复杂性,例如不同语言间语法不同,组成方式不同,还有语言种类的多样性,使得NLP是目前机器学习领域最困难的技术之一,里面的难点大部分成为各个应用领域(搜索引擎,情感识别,机器写作等等)的核心障碍,是实现高度智能机器人的关键技术。NLP大部分方法适用于不同的语种,也有部分只适合特定语种。

    NLP通常包含两方面内容:词法、语法。词法的经典问题为分词、拼写检查、语音识别等;语法的经典问题有词类识别、词义消歧、结构分析等;语音识别领域经典问题有语言识别、语音指令、电话监听、语音生成等。

    3、 分词

    在英语等语言中,词与词之间存在着空格,因此在进行处理过程中不需要对其进行分词处理,但由于汉语等语言中词与词之间没有存在分隔,因此需要对其进行分词处理。分词处理能够避免不分词所引发的全表扫描,全表扫描效率低且内存消耗大。

    4、 OCR

    OCR : optional character recognition 印刷体识别和手写体识别、字形析取
    应用:车牌识别、名片识别等

    5、 常用算法

    (算法需要一定的数学和统计学基础)
    贝叶斯分类器
    隐马尔科夫过程
    有限状态自动机(FSA):用于文本判同等

    6、 文本挖掘处理流程

    文本挖掘处理流程

    7、 相应R包简介

    语音与语音处理: emu包
    词库数据库: wordnet包(英文库)
    关键字提取和通用字符串操作: RKEA包;gsubfn包,tau包
    自然语言处理: openNLP包,RWeka包;snowball包(分词);Rstem包;KoNLP包
    文本挖掘: tm包(相对完整和综合);lsa包;topicmodels包;RTextTools包;textact包;zipfR包;……

    8、 文本处理

    1.词干化stemming snowball包

    2.记号化Tokenization RWeka包

    3.中文分词 Rwordseg包

    Rwordseg包需下载安装,网址:
    https://r-forge.r-project.org/R/?group_id=1054
    在上面网址中下载Rwordseg 如果是64位的话就要下载.zip文件
    中文分词比较有名的包非Rwordseg和jieba莫属,他们采用的算法大同小异,但有一个地方有所差别:Rwordseg在分词之前会去掉文本中所有的符号,这样就会造成原本分开的句子前后相连,本来是分开的两个字也许连在一起就是一个词了。
    而jieba分词包不会去掉任何符号,而且返回的结果里面也会有符号。

    9、 tm包常用操作介绍

    1.DirSource:处理目录
    2.VectorSource:由文档构成向量
    3.DataframeSource:数据框,就像CSV 文件
    4.Map操作:对文档内容应用转换函数
    5.Xml转化为纯文本
    6.去除多余空白
    7.去除停用词
    8.填充
    9.Reduce操作:将多个转换函数的输出合并成一个

    tm包具体操作

    tm包版本问题:代码基于tm包0.6版本
    关于版本差异问题,详见:https://cran.r-project.org/web/packages/tm/news.html

    1.建立语料库

    建立动态语料库 Corpus(x,……)
    Corpus(x, readerControl = list(reader=x$DefaultReader,language="en"),|…… )
    建立静态语料库 Pcorpus(x,……)
    PCorpus(x, readerControl = list(reader=x$DefaultReader,language="en"),dbControl = list(dbName="",dbType="DB1"),…… )

    x参数有如下三种选择:
    DirSource
    VectorSource
    DataframeSource
    (可以在readercontrol中的language中改变参数,建立各种语言的语料库,详见https://zh.wikipedia.org/zh/ISO_639-1%E4%BB%A3%E7%A0%81%E8%A1%A8)
    另外,reader中可选参数如下,可以通过选择不同的参数读取不同形式的文件:
    这里写图片描述

    例:

    #利用DirSource
    ovid1<-Corpus(DirSource("d:/Program Files/R/R-3.3.3/library/tm/texts/txt"), 
                  readerControl = list(language = "lat"))
    inspect(ovid1)
    #inspect可输出语料库的内容
    #利用VectorSource
    docs <- c("This is a text.", "This another one.")
    ovid2 <- Corpus(VectorSource(docs))
    inspect(ovid2)
    #利用DataframeSource
    data <- read.csv("D:/data/Finance Report 2012.csv")
    ovid3 <- Corpus(DataframeSource(data),readerControl=list(language="zh"))
    inspect(ovid3)

    2.导出语料库

    方法:writeCorpus(x, path = ".", filenames = NULL)
    例:

    #将语料库保存为txt,并按序列命名语料库
    writeCorpus(ovid1, path = "E:",filenames = paste(seq_along(ovid1), ".txt", sep = ""))

    3.语料库检索和查看

    ovid[] 查找语料库的某篇文档
    ovid[[]] 文档内容
    c(ovid,ovid) 语料库拼接
    lapply() 函数
    length() 语料库文档数目
    show()/print() 语料库信息
    summary() 语料库信息(详细)
    inspect(ovid1[n:m]) 查找语料库第n至m个文档
    meta(ovid[[n]], "id") 查看第n个语料库的id
    identical(ovid[[2]], ovid[["ovid_2.txt"]])查看第二个语料库名称是否为某个值
    inspect(ovid[[2]]) 查看第二个文档的详细内容
    lapply(ovid[1:2], as.character)分行查看内容

    例1 按照文档的属性进行检索

    #根据id和heading属性进行检索
    reut21578 <- system.file("texts", "crude", package = "tm")
    reuters <- Corpus(DirSource(reut21578), readerControl = list(reader = readReut21578XML))
    #注意使用readReut21578XML时需要安装xml包,否则出错:Error in loadNamespace(name) : there is no package called ‘XML’
    
    idx <- meta(reuters, "id") == '237' &  meta(reuters, "heading") == 'INDONESIA SEEN AT CROSSROADS OVER ECONOMIC CHANGE'
    reuters[idx] #查看搜索结果
    inspect(reuters[idx][[1]])

    例2 全文检索

    #检索文中含有某个单词的文档
    data("crude")
    tm_filter(crude, FUN = function(x) any(grep("co[m]?pany", content(x))))

    tm_filter也可以换作tm_index,区别在于tm_filter返回结果为语料库形式而tm_index返回结果则为true/false。

    例3 语料库转换

    #大小写转换
    lapply(ovid,toupper)
    inspect(tm_map(ovid,toupper))

    4.元数据查看与管理

    元数据(core data)用于标记语料库的附件信息,它具有两个级别:一个为语料库元数据,一个为文档元数据。Simple Dublin Core是一种带有以下15种特定的数据元素的元数据。元数据只记录语料库或文档的信息,与文档相互独立,互不影响。

    –标题(Title)
    –创建者(Creator)
    –主题(Subject)
    –描述(Description)
    –发行者(Publisher)
    –资助者(Contributor)
    –日期(Date)
    –类型(Type)
    –格式(Format)
    –标识符(Identifier)
    –来源(Source)
    –语言(Language)
    –关系(Relation)
    –范围(Coverage)
    –权限(Rights)

    对core data或者Simple Dublin Core查看和管理方法如下:
    meta(crude[[1]])查看语料库元数据信息
    meta(crude)查看语料库元数据的格式

    #修改语料库元数据的值
    DublinCore(crude[[1]], "Creator") <- "Ano Nymous"
    #查看语料库元数据信息
    meta(crude[[1]])
    #查看语料库元数据的格式
    meta(crude)
    #增加语料库级别的元数据信息
    meta(crude, tag = "test", type = "corpus") <- "test meta"
    meta(crude, type = "corpus")
    meta(crude, "foo") <- letters[1:20]

    5.词条-文档关系矩阵

    1、创建词条-文档关系矩阵

    为了后续建模的需要,一般需要对语料库创立词条-文档关系矩阵,创建词条-文档关系矩阵所用到的函数为:
    TermDocumentMatrix(x, control = list())
    DocumentTermMatrix(x, control = list())
    它们创建的矩阵互为转置矩阵。
    control = list()中的可选参数有:removePunctuation,stopwords,weighting,stemming等,其中weighting可以计算词条权重,有 weightTf, weightTfIdf, weightBin, 和weightSMART4种。

    #创建词条-文本矩阵
    tdm <- TermDocumentMatrix(crude,
                              control = list(removePunctuation = TRUE,
                                             stopwords = TRUE))
    dtm <- DocumentTermMatrix(crude,
                              control = list(weighting =function(x) weightTfIdf(x, normalize =FALSE),
                                             stopwords = TRUE))
    
    dtm2 <- DocumentTermMatrix(crude,
                               control = list(weighting =weightTf,
                                              stopwords = TRUE))                                        
    #查看词条-文本矩阵
    inspect(tdm[202:205, 1:5])
    inspect(tdm[c("price", "texas"), c("127", "144", "191", "194")])
    inspect(dtm[1:5, 273:276])
    
    inspect(dtm2[1:5,273:276])
    
    #频数提取
    findFreqTerms(dtm, 5)
    #相关性提取
    findAssocs(dtm, "opec", 0.8)
    inspect(removeSparseTerms(dtm, 0.4))

    2、文档距离计算

    使用方法:

    dist(rbind(x, y), method = "binary"  )   
    dist(rbind(x, y), method = "canberra"  ) 
    dist(rbind(x, y), method = "maximum")    
    dist(rbind(x, y), method = "manhattan") 

    有的时候,不同量级间的数据进行距离计算时,会受量级的影响,为了使到各个变量平等地发挥作用,我们需要对数据进行中心化和标准化的变换。

    scale(x, center = TRUE, scale = TRUE)

    6.文本聚类

    1.层次聚类法

    算法主要思想
    1. 开始时,每个样本各自作为一类
    2. 规定某种度量作为样本之间的距离及类与类之间的距离,并计算之
    3. 将距离最短的两个类合并为一个新类
    4. 重复2-3,即不断合并最近的两个类,每次减少一个类,直至所有样本被合并为一类

    代码实现

    data(crude)
    crudeDTM <- DocumentTermMatrix(crude, control = list(stopwords = TRUE))
    #crudeDTM <- removeSparseTerms(crudeDTM, 0.8) #可以选择去除权重较小的项
    crudeDTM.matrix <- as.matrix(crudeDTM)  
    d <- dist(crudeDTM.matrix,method="euclidean")
    hclustRes <- hclust(d,method="complete")  
    hclustRes.type <- cutree(hclustRes,k=5)   #按聚类结果分5个类别  
    length(hclustRes.type) 
    hclustRes.type  #查看分类结果
    plot(hclustRes, xlab = '')  #画出聚类系谱图

    1.png

    2.Kmeans聚类

    算法主要思想
    1. 选择K个点作为初始质心
    2. 将每个点指派到最近的质心,形成K个簇(聚类)
    3. 重新计算每个簇的质心
    4. 重复2-3直至质心不发生变化

    代码实现

    k <- 5  
    kmeansRes <- kmeans(crudeDTM.matrix,k) #k是聚类数  
    mode(kmeansRes) #kmeansRes的内容 
    names(kmeansRes)
    kmeansRes$cluster #聚类结果
    kmeansRes$size #每个类别下有多少条数据
    #sort(kmeansRes$cluster) #对分类情况进行排序
    '''
    "cluster"是一个整数向量,用于表示记录所属的聚类  
    "centers"是一个矩阵,表示每聚类中各个变量的中心点
    "totss"表示所生成聚类的总体距离平方和
    "withinss"表示各个聚类组内的距离平方和
    "tot.withinss"表示聚类组内的距离平方和总量
    "betweenss"表示聚类组间的聚类平方和总量
    "size"表示每个聚类组中成员的数量
    '''

    2.png

    kmeans算法优缺点

    • 有效率,而且不容易受初始值选择的影响
    • 不能处理非球形的簇
    • 不能处理不同尺寸,不同密度的簇
    • 离群值可能有较大干扰(因此要先剔除)

    3.K中心法聚类

    算法主要思想
    1. 随机选择k个点作为“中心点”
    2. 计算剩余的点到这k个中心点的距离,每个点被分配到最近的中心点组成聚簇
    3. 随机选择一个非中心点Or,用它代替某个现有的中心点Oj,计算这个代换的总代价S
    4. 如果S<0,则用Or代替Oj,形成新的k个中心点集合
    5. 重复2,直至中心点集合不发生变化

    代码实现

    library(cluster)
    pa<-pam(d,2)  #分两类
    summary(pa)

    k中心法优缺点:

    • K中心法的优点:对于“噪音较大和存在离群值的情况,K中心法更加健壮,不像Kmeans那样容易受到极端数据影响
    • K中心法的缺点:执行代价更高

    4.Knn算法

    算法主要思想
    1. 选取k个和待分类点距离最近的样本点
    2. 看1中的样本点的分类情况,投票决定待分类点所属的类

    代码实现

    library("class")
    library("kernlab")
    data(spam)
    train <- rbind(spam[1:1360, ], spam[1814:3905, ])
    trainCl <- train[,"type"]
    
    test <- rbind(spam[1361:1813, ], spam[3906:4601, ])
    trueCl <- test[,"type"]
    
    knnCl <- knn(train[,-58], test[,-58], trainCl)
    (nnTable <- table("1-NN" = knnCl, "Reuters" = trueCl))
    sum(diag(nnTable))/nrow(test)   #查看分类正确率

    5.支持向量机SVM

    算法主要思想
    它是针对线性可分情况进行分析,对于线性不可分的情况,通过使用非线性映射算法将低维输入空间线性不可分的样本转化为高维特征空间使其线性可分,从而 使得高维特征空间采用线性算法对样本的非线性特征进行线性分析成为可能。

    算法实现

    ksvmTrain <- ksvm(type ~ ., data = train)
    svmCl <- predict(ksvmTrain, test[,-58])
    (svmTable <- table("SVM" = svmCl, "Reuters" = trueCl))
    sum(diag(svmTable))/nrow(test)
    展开全文
  • time_t和tm互换

    2011-11-23 17:00:05
    time_t mktime(struct tm *tm); struct tm *gmtime(const time_t *timep);...struct tm *gmtime_r(const time_t *timep, struct tm *result); struct tm *localtime(const time_t *timep); struct tm *localtime_r
  • R:文本挖掘学习笔记1 - tm Package

    千次阅读 2015-01-06 14:02:30
    1. 文件读取查看 DirSource() Corpus() inspect() tm 提供五种资源读取的方式: > getSources() [1] "DataframeSource" "DirSource" "URISource" "VectorSource" "XMLSource" 仅就.txt文件而言,学习初期...
  • 采用了先进的英特尔(R)酷睿TM 微体系架构技术,提供超凡的节能高效性能,台式机的运算速度提升最高达40%,能效方面的提升也在40% 以上,功耗反而降低40%,真正意义上提升了单线程多线程应用的系统响应能力;...
  • 今天我的计算机从1903手动更新到了1909,然后出现了一个很奇怪的现象,公司的D430(用D435修好的)变成了D431,我没有改动过驱动的INI注册表,但是设备名称的确是变化了,好在是VID PID相对于D430并没有变化,SN号...
  • 今天用I3-8100 CPU华硕H310M-K R2.0主板配了一台电脑,安装的WIN7 64位专业版系统,找到了一个好用的UHD 630显卡驱动,安装后一切正常,这个驱动应该可以适用于大部分八代桌面CPU,特地来分享一下这个驱动。
  • Dynamic C 10.21 版包括新的 MEGABYTE CODE SUPPORT (TM) (MCS) 系统,支持超过 1MB 的静态存储器来存储程序代码数据。RCM4300 所有 RCM4000 系列核心模块的产品接脚兼容,支持其它任何 Rabbit 核心模块两倍的...
  • #上一篇基本一样,只是聚类对象不同##连接数据库,将数据库中的文件读取出来 #加载包 library(RMySQL) #建立连接 conn <- dbConnect(dbDriver("MySQL"), dbname = "eswp", user="root", password="root") ...
  • Judd-Ofelt(JO)理论用于计算强度参数(Omega(2),Omega(4),Omega(6)),辐射跃迁速率(A(r))辐射跃迁寿命(tau(rad ))的Tm3 +。 基于Inokuti-Hirayama模型,研究了能量转移过程,结果表明电偶极子...
  • HIC)Q345R(HIC)介绍HIC是抗氢致开裂的意思,它的指标是CLR、CTR、CSR,检验标准是NACE TM0284R指的是SSCC,抗硫化物应力腐蚀性能,检验标准是NACE TM0177二、Q345R(HIC)Q345RR-HIC) 基本试验:Q345R(HIC...
  • time_t tm timeval 时间字符串的转换

    千次阅读 2019-01-09 10:42:39
    1、time_t 精确到秒,timeval精确到...2、如果想把整数的时间转为时分秒,就要用tm这个结构体。 有两个转换方法localtime(线程不安全,容易被覆盖)与localtime_r(线程安全),具体看下文 time_t time_seconds ...
  • 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息本声明。否则将追究法律责任。http://blog.csdn.net/topmvp - topmvpAll over the world, Windows gurus have been working ...
  • 氟锆酸盐玻璃中Tm

    2021-02-10 21:52:14
    给出了ZNLAN中Tm3+离子的一些光谱参量(Ar,β,τm,τr,Δλ,σr)的实验计算结果。报道了不同波长激发下Tm3+离子的发射光谱(UV-NIR)。荧光寿命发射强度随掺杂Tm3+浓度的变化。着重讨论了Tm3+离子之间的能量转移...
  • 这是自2000年左右开始从事MAME以来我创建的所有Guru-Readme(tm)(c)(r)的存档。我认为适当时,这些自述文件将不时更新,恕不另行通知。 这里的Guru自述文件是可用的最新版本,并取代了其他Github存储库中找到的...
  • 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息本声明。否则将追究法律责任。http://blog.csdn.net/topmvp - topmvpDiscover JBoss Seam: the Unified Framework for Simpler...
  • localtimelocaltime_r

    2013-02-24 12:32:00
    在写代码的时候,经常会用到读取系统时间的函数。... 多线程应用里面,应该用localtime_r函数替代localtime函数,因为localtime_r是线程安全的。 struct tm *localtime(const time_t *clock); struct tm* lo...
  • 本文档重点介绍了 FX3 的技术参数应用程序,并且提供了有关各种设计资源的指引,以帮助 FX3 的开发。本文档还引导您使用具有 Eclipse 集成开发环境(IDE)特性的赛普拉斯免费工具,开始开发 FX3 固件。最后,它还...
  • 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息本声明。否则将追究法律责任。...
  • 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息本声明。否则将追究法律责任。http://blog.csdn.net/topmvp - topmvpCompared with the other Linux books out there, A ...
  • 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息本声明。否则将追究法律责任。...
  • fdkernel:FreeDOS内核-实现与MS-DOSPC-DOS(R)兼容的核心操作系统。 它源自Pat Villani的DOS-C内核,并在GPL v2下发布。 有关FreeDOS(TM)项目的更多详细信息,请访问http://www.freedos.org。 !!! 该派生不再是...
  • localtime localtime_r

    2015-10-27 16:37:28
    #include #include #include #include using namespace std; int main(int argc, char *argv[]) { time_t tNow =time(NULL); time_t tEnd = tNow + 1800; //注意下面两行的区别 struct tm* ptm = local

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 597
精华内容 238
关键字:

tm和r