当前位置: 首页 > news >正文

简单的网站设计开发深圳 电子商务网站开发

简单的网站设计开发,深圳 电子商务网站开发,wordpress新增管理员,广州电力建设有限公司本节介绍了用于处理特征的算法#xff0c;大致可以分为以下几组#xff1a; 提取#xff08;Extraction#xff09;#xff1a;从“原始”数据中提取特征。转换#xff08;Transformation#xff09;#xff1a;缩放、转换或修改特征。选择#xff08;Selection…本节介绍了用于处理特征的算法大致可以分为以下几组 提取Extraction从“原始”数据中提取特征。转换Transformation缩放、转换或修改特征。选择Selection从更大的特征集中选择一个子集。局部敏感哈希Locality Sensitive Hashing, LSH这类算法结合了特征转换的方面与其他算法。 本章节主要讲转换1 Feature Transformers Tokenizer分词 分词是将文本如一个句子拆分成单独词汇通常是单词的过程。一个简单的Tokenizer类提供了这项功能。下面的例子展示了如何将句子分割成单词序列。 RegexTokenizer允许基于正则表达式regex匹配进行更高级的分词。默认情况下参数“pattern”正则表达式默认值“\s”被用作分隔符来分割输入文本。或者用户可以将参数“gaps”设置为false表示正则表达式“pattern”指的是“tokens”而不是分割间隙并找到所有匹配的情况作为分词结果。 import org.apache.spark.ml.feature.{RegexTokenizer, Tokenizer} import org.apache.spark.sql.SparkSession import org.apache.spark.sql.functions._object TokenizerExample {def main(args: Array[String]): Unit {val spark SparkSession.builder.master(local[*]).appName(TokenizerExample).getOrCreate()// 数据样本val sentenceDataFrame spark.createDataFrame(Seq((0, Hi I heard about Spark),(1, I wish Java could use case classes),(2, Logistic,regression,models,are,neat))).toDF(id, sentence)val tokenizer new Tokenizer().setInputCol(sentence).setOutputCol(words)val regexTokenizer new RegexTokenizer().setInputCol(sentence).setOutputCol(words).setPattern(\\W) // 或者 .setPattern(\\w).setGaps(false)val countTokens udf { (words: Seq[String]) words.length }val tokenized tokenizer.transform(sentenceDataFrame)tokenized.select(sentence, words).withColumn(tokens, countTokens(col(words))).show(false)val regexTokenized regexTokenizer.transform(sentenceDataFrame)regexTokenized.select(sentence, words).withColumn(tokens, countTokens(col(words))).show(false)spark.stop()} }StopWordsRemover停用词 停用词是那些应该从输入中排除的词通常是因为这些词出现频率高而且不携带太多意义。 StopWordsRemover接受一个字符串序列作为输入例如Tokenizer的输出并丢弃输入序列中的所有停用词。停用词的列表由stopWords参数指定。可以通过调用StopWordsRemover.loadDefaultStopWords(language)获取一些语言的默认停用词列表可选的语言有“danish”丹麦语、“dutch”荷兰语、“english”英语、“finnish”芬兰语、“french”法语、“german”德语、“hungarian”匈牙利语、“italian”意大利语、“norwegian”挪威语、“portuguese”葡萄牙语、“russian”俄语、“spanish”西班牙语、“swedish”瑞典语和“turkish”土耳其语。一个布尔参数caseSensitive指示匹配是否应该区分大小写默认为false。 示例 假设我们有以下DataFrame包含列id和raw idraw0[I, saw, the, red, balloon]1[Mary, had, a, little, lamb] 应用StopWordsRemover以raw作为输入列以filtered作为输出列我们应该得到以下结果 idrawfiltered0[I, saw, the, red, balloon][saw, red, balloon]1[Mary, had, a, little, lamb][Mary, little, lamb] 在filtered中停用词“I”、“the”、“had”和“a”已经被过滤掉了。 import org.apache.spark.ml.feature.StopWordsRemover // $example off$ import org.apache.spark.sql.SparkSessionobject StopWordsRemoverExample {def main(args: Array[String]): Unit {val spark SparkSession.builder.master(local[*]).appName(StopWordsRemoverExample).getOrCreate()//创建停用词移除器val remover new StopWordsRemover().setInputCol(raw).setOutputCol(filtered)val dataSet spark.createDataFrame(Seq((0, Seq(I, saw, the, red, balloon)),(1, Seq(Mary, had, a, little, lamb)))).toDF(id, raw)remover.transform(dataSet).show(false)spark.stop()} }n-gram n-gram是n个连续词条通常是单词的序列其中n是某个整数。NGram类可以用来将输入特征转换成n-grams。 NGram接受一系列字符串作为输入例如Tokenizer的输出。参数n用于确定每个n-gram中的词条数。输出将包括一系列n-grams其中每个n-gram由n个连续单词组成的以空格分隔的字符串表示。如果输入序列包含的字符串少于n个则不会产生输出。 import org.apache.spark.ml.feature.NGram // $example off$ import org.apache.spark.sql.SparkSessionobject NGramExample {def main(args: Array[String]): Unit {val spark SparkSession.builder.master(local).appName(NGramExample).getOrCreate()val wordDataFrame spark.createDataFrame(Seq((0, Array(Hi, I, heard, about, Spark)),(1, Array(I, wish, Java, could, use, case, classes)),(2, Array(Logistic, regression, models, are, neat)))).toDF(id, words)//NGram 的输出是一个数组每个元素都是一个 n-gram。//如果输入数组的长度小于 n则不会生成 n-grams。//NGram 主要用于文本数据但理论上它可以用于任何序列化的特征。val ngram new NGram().setN(2).setInputCol(words).setOutputCol(ngrams)val ngramDataFrame ngram.transform(wordDataFrame)ngramDataFrame.select(ngrams).show(false)spark.stop()} }Binarizer 二值化是将数值特征阈值化为二进制0/1特征的过程。 二值化器Binarizer接受常见的参数inputCol和outputCol以及用于二值化的阈值。特征值大于阈值的将被二值化为1.0等于或小于阈值的值将被二值化为0.0。对于inputCol既支持Vector类型也支持Double类型。 import org.apache.spark.ml.feature.Binarizer // $example off$ import org.apache.spark.sql.SparkSessionobject BinarizerExample {def main(args: Array[String]): Unit {val spark SparkSession.builder.master(local).appName(BinarizerExample).getOrCreate()val data Array((0, 0.1), (1, 0.8), (2, 0.2))val dataFrame spark.createDataFrame(data).toDF(id, feature)val binarizer: Binarizer new Binarizer().setInputCol(feature).setOutputCol(binarized_feature).setThreshold(0.5)val binarizedDataFrame binarizer.transform(dataFrame)println(sBinarizer output with Threshold ${binarizer.getThreshold})binarizedDataFrame.show()spark.stop()} }PCA PCA主成分分析是一种统计程序它使用正交变换将一组可能相关的变量的观测值转换为一组线性无关的变量值这些变量值称为主成分。PCA类训练一个模型使用PCA将向量投影到低维空间中。下面的例子展示了如何将5维特征向量投影到3维主成分中。 import org.apache.spark.ml.feature.PCA import org.apache.spark.ml.linalg.Vectors import org.apache.spark.sql.SparkSessionobject PCAExample {def main(args: Array[String]): Unit {val spark SparkSession.builder.master(local).appName(PCAExample).getOrCreate()val data Array(Vectors.sparse(5, Seq((1, 1.0), (3, 7.0))),Vectors.dense(2.0, 0.0, 3.0, 4.0, 5.0),Vectors.dense(4.0, 0.0, 0.0, 6.0, 7.0))val df spark.createDataFrame(data.map(Tuple1.apply)).toDF(features)// 初始化PCA设置降维到3维val pca new PCA().setInputCol(features).setOutputCol(pcaFeatures).setK(3).fit(df)val result pca.transform(df).select(pcaFeatures)result.show(false)spark.stop()} }PolynomialExpansion 多项式展开是将特征扩展到多项式空间的过程这个空间是由原始维度的n次组合构成的。PolynomialExpansion类提供了这个功能。下面的例子展示了如何将特征扩展到3次多项式空间。 import org.apache.spark.ml.feature.PolynomialExpansion import org.apache.spark.ml.linalg.Vectorsimport org.apache.spark.sql.SparkSessionobject PolynomialExpansionExample {def main(args: Array[String]): Unit {val spark SparkSession.builder.appName(PolynomialExpansionExample).getOrCreate()val data Array(Vectors.dense(2.0, 1.0),Vectors.dense(0.0, 0.0),Vectors.dense(3.0, -1.0))val df spark.createDataFrame(data.map(Tuple1.apply)).toDF(features)val polyExpansion new PolynomialExpansion().setInputCol(features).setOutputCol(polyFeatures).setDegree(3)val polyDF polyExpansion.transform(df)polyDF.show(false)spark.stop()} }Discrete Cosine Transform (DCT) 离散余弦变换Discrete Cosine Transform简称DCT将时域中长度为N的实数序列转换为频域中另一长度为N的实数序列。一个DCT类提供了这个功能实现了DCT-II并通过1/2的平方根来缩放结果。转换后的序列不会应用位移例如变换序列的第0个元素是第0个DCT系数而不是第N/2个。 import org.apache.spark.ml.feature.DCT import org.apache.spark.ml.linalg.Vectors // $example off$ import org.apache.spark.sql.SparkSessionobject DCTExample {/*** 离散余弦变换Discrete Cosine Transform简称DCT是一种用于信号和图像处理的变换它类似于离散傅立叶变换Discrete Fourier Transform简称DFT但只使用实数。DCT在多个领域非常有用尤其是在压缩技术中比如JPEG图像压缩就广泛使用了DCT。*/def main(args: Array[String]): Unit {val spark SparkSession.builder.appName(DCTExample).getOrCreate()val data Seq(Vectors.dense(0.0, 1.0, -2.0, 3.0),Vectors.dense(-1.0, 2.0, 4.0, -7.0),Vectors.dense(14.0, -2.0, -5.0, 1.0))val df spark.createDataFrame(data.map(Tuple1.apply)).toDF(features)val dct new DCT().setInputCol(features).setOutputCol(featuresDCT).setInverse(false)val dctDf dct.transform(df)dctDf.select(featuresDCT).show(false)spark.stop()} }StringIndexer StringIndexer 将包含标签的字符串列编码为标签索引列。StringIndexer 可以编码多个列。索引位于 [0, numLabels) 范围内并支持四种排序选项“frequencyDesc”按标签频率降序频率最高的标签分配索引0、“frequencyAsc”按标签频率升序频率最低的标签分配索引0、“alphabetDesc”按字母表降序和“alphabetAsc”按字母表升序默认为“frequencyDesc”。注意在“frequencyDesc”/“frequencyAsc”下如果频率相同字符串会进一步按字母表排序。 如果用户选择保留未见过的标签这些标签将被放置在索引 numLabels 处。如果输入列是数值型我们会将其转换为字符串并对这些字符串值进行索引。当下游的管道组件如 Estimator 或 Transformer 使用这个字符串索引的标签时你必须将该组件的输入列设置为这个字符串索引的列名。在许多情况下你可以使用 setInputCol 来设置输入列。 示例 假设我们有以下包含 id 和 category 列的 DataFrame idcategory0a1b2c3a4a5c category 是一个字符串列包含三个标签“a”、“b”和“c”。应用 StringIndexer并将 category 设置为输入列categoryIndex 设置为输出列我们应该得到以下结果 idcategorycategoryIndex0a0.01b2.02c1.03a0.04a0.05c1.0 “a” 获得索引0因为它是最频繁的其次是“c”获得索引1“b”获得索引2。 此外关于当你在一个数据集上训练了 StringIndexer然后用它来转换另一个数据集时StringIndexer 将如何处理未见过的标签有三种策略 抛出一个异常这是默认行为完全跳过包含未见标签的行将未见标签放在一个特殊的额外桶中索引为 numLabels 让我们回到我们之前的例子但这次在以下数据集上重用我们之前定义的 StringIndexer idcategory0a1b2c3d4e 如果你没有设置 StringIndexer 如何处理未见过的标签或者将其设置为“error”那么将会抛出一个异常。然而如果你之前调用了 setHandleInvalid(“skip”)那么将会生成以下数据集 idcategorycategoryIndex0a0.01b2.02c1.0 请注意包含“d”或“e”的行不会出现。 如果你调用 setHandleInvalid(“keep”)那么将会生成以下数据集 idcategorycategoryIndex0a0.01b2.02c1.03d3.04e3.0 请注意包含“d”或“e”的行被映射到索引“3.0”。 import org.apache.spark.ml.feature.StringIndexer import org.apache.spark.sql.SparkSessionobject StringIndexerExample {def main(args: Array[String]): Unit {val spark SparkSession.builder.master(local).appName(StringIndexerExample).getOrCreate()val df spark.createDataFrame(Seq((0, a), (1, b), (2, c), (3, a), (4, a), (5, c))).toDF(id, category)val indexer new StringIndexer().setInputCol(category).setOutputCol(categoryIndex).setHandleInvalid(skip) //# error 或 keepval indexed indexer.fit(df).transform(df)indexed.show()spark.stop()} }
http://www.zqtcl.cn/news/839550/

相关文章:

  • 电子商城网站开发流程wordpress 文章发布时间
  • 莆田建网站公司盱眙县住房和城乡建设局网站
  • 2018年的网站制作室内设计网站哪些号
  • 做网站有包括哪些东西抖音seo关键词优化排名
  • 网站建设费无形资产做招聘网站需要什么
  • 长沙企业做网站网页制作教程免费下载
  • 重庆北碚网站建设空包网站分站怎么做
  • 北京神州网站建设湖北响应式网站建设费用
  • 环保网站设计价格建设网站对公司起什么作用
  • 做乒乓球网站的图片大全学网页设计哪个培训学校好
  • 婚礼做的好的婚庆公司网站用手机能创建网站吗
  • 广州网站开发平台.net做的网站代码
  • 地图网站设计建立公司网站视频
  • 哪个网站可以做销售记录仪中国电子商务中心官网
  • 学校网站建设厂家云上铺会员管理系统
  • 手机网站源码大全空间设计公司
  • 公司做哪个网站比较好招聘网站企业招聘怎么做
  • 北仑网站推广用c 做网站
  • 做网站怎么赚钱 注册网站环境配置
  • 阿里企业网站建设重庆移动网站制作
  • 织梦 网站栏目管理 很慢北票市建设工程安全管理站网站
  • 天津网站建设方案托管网站风格对比信息表
  • 如何做美发店网站wordpress会员登录查询
  • 建设外贸国外站点网站商业网站设计制作公司
  • 长沙哪个公司做网站优化seo多少钱
  • html基础标签昆明做网站优化哪家好
  • 网站制作公司全域营销获客公司wordpress+用户组
  • 中文网站建设工具WordPress相册插件pro
  • 网站建设收获与不足站中站网站案例
  • 做运营必看的网站今天重大新闻2022