Spark mllib API- feature

本贴最后更新于 3367 天前,其中的信息可能已经斗转星移

spark 中大部分的向量转换采用训练(fit)-转化(transform)形式,因此会有对应的训练类和模型类。
该模块主要包括了,标准化、归一化、分词、特征选择

##pyspark.mllib.feature.Normalizer(p=2.0)
使用 Lp 范式对样本进行归一化。
若 1<=p<float('inf'),使用 sum(abs(vector)^p)^(1/p)范式。
若 p=float('inf'),使用 max(abs(vector))范式。

  • transform(vector)
    • 参数:vector - 需要正则化的 RDD
    • 返回: 正则化的向量 RDD

##pyspark.mllib.feature.StandardScaler(withMean=False, withStd=True)
使用训练集的列统计信息,通过修改均值和范围进行标准化

  • fit(dataset):StandardScalerModel
    计算均值和方差,并以模型保存,以便后续使用。相当于训练模型。

pyspark.mllib.feature.StandardScalerModel(java_model)

表示可以把特征转化为正态分布的 StandardScaler 模型

  • setWithMean(withMean)
    参数为 boolean,决定是否使用均值
  • setWithStd(withStd)
    参数为 boolean,决定是否使用 std
  • transform(vector)
    对特征进行标准变换

##pyspark.mllib.feature.HashingTF(numFeatures=1048576)
使用 hash 建立起 项-频度 映射。

  • numFeatures:向量维度
  • indexOf(term):返回指定项的索引
  • transform(document):将输入转化为项-频度向量

##pyspark.mllib.feature.IDF(minDocFreq=0)
IDF 为逆向文件频率,公式如下:

idf = log((m + 1) / (d(t) + 1))

其中 m 为文件总数,d(t)为出现项 t 的文件数。

  • 参数:minDocFreq
    通过 minDocFreq 参数,可以利用 IDF 过滤掉一些在文档中出现次数过少的词。若设置为 0,则返回 TF-IDF
  • 方法:fit(dataset)
    计算数据集的 IDF

##pyspark.mllib.feature.IDFModel(java_model)
IDF 模型

  • IDF():返回当前 IDF 向量
  • transform(x):将 TF 向量转化为 TF-IDF 向量

##pyspark.mllib.feature.Word2Vec

Word2Vec 创建了一个表示语料库中词语的的向量。算法首先从语料库中创建一个词汇表,然后创建对应到词汇表中单词的向量。在自然语言处理和机器学习算法中,该向量可以直接使用。

我们使用 skip-gram 模型实现,并且使用分层 softmax 方法来训练模型。

  • fit(data):使用 data 进行训练,计算向量
  • setLearningRate(learningRate):设置初始学习率
  • setMinCount(minCount):设置最少出现的 token 次数,默认 5
  • setNumIterations(numIterations):设置迭代次数,默认 1
  • setNumPartitions(numPartitions):设置分区个数,默认 1
  • setSeed(seed):设置随机种子
  • setVectorSize(vectorSize):设置向量维度,默认 100

##pyspark.mllib.feature.Word2VecModel(java_model)
Word2Vec fit 得到的模型

  • findSynonyms(word, num):找到指定 word 的 num 个同义词
  • getVectors():返回代表向量的单词表
  • transform(word):将单词转化为向量

pyspark.mllib.feature.ChiSqSelector(numTopFeatures)

创建一个卡方向量选择器,用于特征选择

  • 参数:numTopFeatures 保留的卡方较大的特征的数量。
  • fit(data):对 LabeledPoint 格式的 RDD 进行训练,返回 ChiSqSelectorModel,这个类将输入数据转化到降维的特征空间。

##pyspark.mllib.feature.ChiSqSelectorModel(java_model)
由 ChiSqSelector 训练得到的模型

  • transform(vector),对 RDD 进行转换,转化到降维的特征空间。

##pyspark.mllib.feature.ElementwiseProduct(scalingVector)
使用输入的 scalingVector 作为每一列的权值,对每一列进行扩展。

  • transform(vector):对向量进行 Hadamard 卷积。
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 564 关注
  • 数据挖掘
    17 引用 • 32 回帖 • 3 关注
  • 归一化
    1 引用 • 1 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • zempty

    感动ing 好久没有看到这么优质的文章!请容我小小的激动一下

推荐标签 标签

  • 倾城之链
    23 引用 • 66 回帖 • 167 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖 • 2 关注
  • Pipe

    Pipe 是一款小而美的开源博客平台。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    134 引用 • 1127 回帖 • 109 关注
  • 智能合约

    智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。

    1 引用 • 11 回帖
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    326 引用 • 1395 回帖
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3202 引用 • 8217 回帖 • 1 关注
  • Netty

    Netty 是一个基于 NIO 的客户端-服务器编程框架,使用 Netty 可以让你快速、简单地开发出一个可维护、高性能的网络应用,例如实现了某种协议的客户、服务端应用。

    49 引用 • 33 回帖 • 44 关注
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    86 引用 • 165 回帖
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1062 引用 • 3455 回帖 • 152 关注
  • 又拍云

    又拍云是国内领先的 CDN 服务提供商,国家工信部认证通过的“可信云”,乌云众测平台认证的“安全云”,为移动时代的创业者提供新一代的 CDN 加速服务。

    20 引用 • 37 回帖 • 573 关注
  • OneDrive
    2 引用 • 4 关注
  • AngularJS

    AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。

    12 引用 • 50 回帖 • 522 关注
  • 外包

    有空闲时间是接外包好呢还是学习好呢?

    26 引用 • 233 回帖
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    336 引用 • 324 回帖 • 3 关注
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    89 引用 • 1251 回帖 • 394 关注
  • Openfire

    Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。

    6 引用 • 7 回帖 • 119 关注
  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 82 关注
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    125 引用 • 74 回帖
  • 开源中国

    开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。

    7 引用 • 86 回帖
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    107 引用 • 127 回帖 • 345 关注
  • 职场

    找到自己的位置,萌新烦恼少。

    127 引用 • 1708 回帖 • 2 关注
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    500 引用 • 1396 回帖 • 253 关注
  • SQLServer

    SQL Server 是由 [微软] 开发和推广的关系数据库管理系统(DBMS),它最初是由 微软、Sybase 和 Ashton-Tate 三家公司共同开发的,并于 1988 年推出了第一个 OS/2 版本。

    21 引用 • 31 回帖 • 2 关注
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 446 关注
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    188 引用 • 319 回帖 • 238 关注
  • V2Ray
    1 引用 • 15 回帖 • 4 关注