生活工程体验信仰哲学精神
投稿投诉
精神世界
探索历史
哲学文学
艺术价值
信仰创造
境界审美
体验技术
技能工具
工程信息
医学生产
生活运用
操作能力

FlinkML机器学习算法介绍(二)特征工程

11月3日 失了心投稿
  FeatureEngineering特征工程
  数据与特征工程决定了模型的上限,改进算法只不过是逼近这个上限而已。
  特征工程是机器学习中非常重要的一部分,它是将原始数据转换为模型可理解的形式。一般来说,特征工程包括特征构建、特征提取和特征选择三个部分1其中,特征构建是指从原始数据中构建新的特征,例如,将时间戳转换为小时、星期几等等。特征提取是指从原始数据中提取有用的特征,例如,从文本中提取关键词。而特征选择则是指从所有的特征中选择最有用的一些特征,以便于训练模型。
  特征工程是机器学习中最重要的步骤之一,需要耗费大量时间。目的是准备一个最适合机器学习算法的输入数据集,并增强机器学习模型的性能。
  FlinkML2。2版本中大幅增加了这方面的算法支持,总共有33个特征工程方面的算法,涵盖了各个方面的内容。
  1、Binarizer
  二值化
  顾名思义,Binarizer在机器学习中是一种将连续特征值离散化的方法,通过设置阈值将数据二值化(将特征值设置为0或1)。
  Binarizer算法有许多应用,其中一些应用包括将连续的特征值二值化,如在图像处理中将连续的像素值数据离散化为黑白像素值数据。另一个应用是将多类标签转换为二进制标签的过程,通过将每个类别转换为一个二进制向量,其中只有一个元素为1,其余元素均为0。
  Binarizer可以处理DenseVector、SparseVector或数值类型的连续特征。
  输入
  参数名称
  类型
  默认值
  描述
  inputCols
  NumberVector
  null
  需要进行二值化的NumberVectors
  输出
  参数名称
  类型
  默认值
  描述
  outputCols
  NumberVector
  null
  二值化的NumberVectors
  参数
  名称
  默认值
  类型
  是否必填
  描述
  inputCols
  null
  String〔〕
  yes
  输入列名称
  outputCols
  null
  String〔〕
  yes
  输出列名称
  thresholds
  null
  Double〔〕
  yes
  用于将连续特征二值化的阈值
  示例代码:importorg。apache。flink。ml。feature。binarizer。Bimportorg。apache。flink。ml。linalg。Vimportorg。apache。flink。streaming。api。datastream。DataSimportorg。apache。flink。streaming。api。environment。StreamExecutionEimportorg。apache。flink。table。api。Timportorg。apache。flink。table。api。bridge。java。StreamTableEimportorg。apache。flink。types。Rimportorg。apache。flink。util。CloseableIimportjava。util。ASimpleprogramthatcreatesaBinarizerinstanceandusesitforfeatureengineering。publicclassBinarizerExample{publicstaticvoidmain(String〔〕args){StreamExecutionEnvironmentenvStreamExecutionEnvironment。getExecutionEnvironment();StreamTableEnvironmenttEnvStreamTableEnvironment。create(env);Generatesinputdata。DataStreamRowinputStreamenv。fromElements(Row。of(1,Vectors。dense(1,2),Vectors。sparse(17,newint〔〕{0,3,9},newdouble〔〕{1。0,2。0,7。0})),Row。of(2,Vectors。dense(2,1),Vectors。sparse(17,newint〔〕{0,2,14},newdouble〔〕{5。0,4。0,1。0})),Row。of(3,Vectors。dense(5,18),Vectors。sparse(17,newint〔〕{0,11,12},newdouble〔〕{2。0,4。0,4。0})));TableinputTabletEnv。fromDataStream(inputStream)。as(f0,f1,f2);CreatesaBinarizerobjectandinitializesitsparameters。BinarizerbinarizernewBinarizer()。setInputCols(f0,f1,f2)。setOutputCols(of0,of1,of2)。setThresholds(0。0,0。0,0。0);Transformsinputdata。TableoutputTablebinarizer。transform(inputTable)〔0〕;Extractsanddisplaystheresults。for(CloseableIteratorRowitoutputTable。execute()。collect();it。hasNext();){Rowrowit。next();Object〔〕inputValuesnewObject〔binarizer。getInputCols()。length〕;Object〔〕outputValuesnewObject〔binarizer。getInputCols()。length〕;for(inti0;iinputValues。i){inputValues〔i〕row。getField(binarizer。getInputCols()〔i〕);outputValues〔i〕row。getField(binarizer。getOutputCols()〔i〕);}System。out。printf(InputValues:sOutputValues:s,Arrays。toString(inputValues),Arrays。toString(outputValues));}}}
  2、Bucketizer
  Bucketizer中文意思是数据分桶,是来源于SparkMLlib中的算法,用于将连续的数值型特征转换为离散型特征。例如,将人分为年龄段分为老人、中年人、青年人、儿童,将温度分为高、中、低等几个档次等等。
  输入
  参数名称
  类型
  默认值
  描述
  inputCols
  Number
  null
  要进行数据分桶的连续特征值
  输出
  参数名称
  类型
  默认值
  描述
  outputCols
  Double
  null
  离散化特征
  参数
  名称
  默认值
  类型
  是否必填
  描述
  inputCols
  null
  String〔〕
  yes
  输入列名称
  outputCols
  null
  String〔〕
  yes
  输出列名称
  handleInvalid
  error
  Double
  no
  处理无效条目的策略。支持的值:‘error’,‘skip’,‘keep’。
  splitsArray
  null
  Double〔〕
  yes
  将连续特征映射到数据桶中的分割点数组
  示例代码:importorg。apache。flink。ml。common。param。HasHandleIimportorg。apache。flink。ml。feature。bucketizer。Bimportorg。apache。flink。streaming。api。datastream。DataSimportorg。apache。flink。streaming。api。environment。StreamExecutionEimportorg。apache。flink。table。api。Timportorg。apache。flink。table。api。bridge。java。StreamTableEimportorg。apache。flink。types。Rimportorg。apache。flink。util。CloseableIimportjava。util。ASimpleprogramthatcreatesaBucketizerinstanceandusesitforfeatureengineering。publicclassBucketizerExample{publicstaticvoidmain(String〔〕args){StreamExecutionEnvironmentenvStreamExecutionEnvironment。getExecutionEnvironment();StreamTableEnvironmenttEnvStreamTableEnvironment。create(env);Generatesinputdata。DataStreamRowinputStreamenv。fromElements(Row。of(0。5,0。0,1。0,0。0));TableinputTabletEnv。fromDataStream(inputStream)。as(f1,f2,f3,f4);CreatesaBucketizerobjectandinitializesitsparameters。Double〔〕〔〕splitsArraynewDouble〔〕〔〕{newDouble〔〕{0。5,0。0,0。5},newDouble〔〕{1。0,0。0,2。0},newDouble〔〕{Double。NEGATIVEINFINITY,10。0,Double。POSITIVEINFINITY},newDouble〔〕{Double。NEGATIVEINFINITY,1。5,Double。POSITIVEINFINITY}};BucketizerbucketizernewBucketizer()。setInputCols(f1,f2,f3,f4)。setOutputCols(o1,o2,o3,o4)。setSplitsArray(splitsArray)。setHandleInvalid(HasHandleInvalid。SKIPINVALID);UsestheBucketizerobjectforfeaturetransformations。TableoutputTablebucketizer。transform(inputTable)〔0〕;Extractsanddisplaystheresults。for(CloseableIteratorRowitoutputTable。execute()。collect();it。hasNext();){Rowrowit。next();double〔〕inputValuesnewdouble〔bucketizer。getInputCols()。length〕;double〔〕outputValuesnewdouble〔bucketizer。getInputCols()。length〕;for(inti0;iinputValues。i){inputValues〔i〕(double)row。getField(bucketizer。getInputCols()〔i〕);outputValues〔i〕(double)row。getField(bucketizer。getOutputCols()〔i〕);}System。out。printf(InputValues:sOutputValues:s,Arrays。toString(inputValues),Arrays。toString(outputValues));}}}
  3、CountVectorizer(计数向量化器)
  CountVectorizer是属于常见的特征数值计算类,是一个文本特征提取方法。对于每一个训练文本,它只考虑每种词汇在该训练文本中出现的频率。
  CountVectorizer可以将文本转换为向量,以便进行机器学习和自然语言处理。它可以用于提取文本中的特征,例如单词计数,以便进行分类和聚类。
  输入
  参数名称
  类型
  默认值
  描述
  inputCols
  String〔〕
  input
  字符串数组
  输出
  参数名称
  类型
  默认值
  描述
  outputCols
  SparseVector
  output
  标记计数的向量
  参数
  名称
  默认值
  类型
  是否必填
  描述
  inputCols
  input
  String
  no
  输入列名称
  outputCols
  output
  String
  no
  输出列名称
  minTF
  1。0
  Double
  no
  过滤以忽略文档中的罕见单词。对于每个文档,忽略出现次数计数小于给定阈值的术语。如果这是一个大于等于1的整数,则指定了计数(术语必须在文档中出现的次数);如果这是〔0,1)中的双倍,则指定了分数(文档的标记计数)
  binary
  false
  Boolean
  no
  二进制切换以控制输出向量值。如果为True,则将所有非零计数(应用minTF过滤器后)设置为1。0。
  vocabularySize
  218
  Interger
  no
  词汇表的最大值大小。CountVectorizer将构建一个词汇表,该词汇表仅考虑按语料库中的术语频率排序的前vocabularysize个术语。
  minDF
  1。0
  Double
  no
  指定术语必须出现在不同文档中的最小数量,才能包含在词汇表中。如果这是大于等于1的整数,则指定术语必须出现在的文档数;如果这是〔0,1)中的双倍,则指定文档的分数。
  maxDF
  2631
  Double
  no
  指定术语必须出现在不同文档中的最大数量,才能包含在词汇表中。出现超过阈值的术语将被忽略。如果这是大于等于1的整数,则指定术语可能出现在的文档数的最大值;如果这是〔0,1)中的双倍,则指定术语可能出现在的文档分数的最大值。
  示例代码:importorg。apache。flink。ml。feature。countvectorizer。CountVimportorg。apache。flink。ml。feature。countvectorizer。CountVectorizerMimportorg。apache。flink。ml。linalg。SparseVimportorg。apache。flink。streaming。api。datastream。DataSimportorg。apache。flink。streaming。api。environment。StreamExecutionEimportorg。apache。flink。table。api。Timportorg。apache。flink。table。api。bridge。java。StreamTableEimportorg。apache。flink。types。Rimportorg。apache。flink。util。CloseableIimportjava。util。ASimpleprogramthattrainsa{linkCountVectorizer}modelandusesitforfeatureengineering。publicclassCountVectorizerExample{publicstaticvoidmain(String〔〕args){StreamExecutionEnvironmentenvStreamExecutionEnvironment。getExecutionEnvironment();StreamTableEnvironmenttEnvStreamTableEnvironment。create(env);Generatesinputtrainingandpredictiondata。DataStreamRowdataStreamenv。fromElements(Row。of((Object)newString〔〕{a,c,b,c}),Row。of((Object)newString〔〕{c,d,e}),Row。of((Object)newString〔〕{a,b,c}),Row。of((Object)newString〔〕{e,f}),Row。of((Object)newString〔〕{a,c,a}));TableinputTabletEnv。fromDataStream(dataStream)。as(input);CreatesanCountVectorizerobjectandinitializeitsparametersCountVectorizercountVectorizernewCountVectorizer();TrainstheCountVectorizermodelCountVectorizerModelmodelcountVectorizer。fit(inputTable);UsestheCountVectorizermodelforpredictions。TableoutputTablemodel。transform(inputTable)〔0〕;Extractsanddisplaystheresults。for(CloseableIteratorRowitoutputTable。execute()。collect();it。hasNext();){Rowrowit。next();String〔〕inputValue(String〔〕)row。getField(countVectorizer。getInputCol());SparseVectoroutputValue(SparseVector)row。getField(countVectorizer。getOutputCol());System。out。printf(InputValue:15sOutputValue:s,Arrays。toString(inputValue),outputValue。toString());}}}
  4、DCT
  DCT算法是一种特征工程算法,它可以将1D实向量的离散余弦变换应用于特征提取。在图像处理中,DCT算法可以用于压缩图像,而在音频处理中,DCT算法可以用于压缩音频。在机器学习中,DCT算法可以用于特征提取和数据压缩。
  DCT算法的应用场景包括信号处理、数据压缩、图像处理和音频处理,在信号处理中,DCT算法可以用于降噪和滤波。在数据压缩中,可以用于压缩图像和音频。在图像处理中,可以用于图像压缩、图像增强和图像分析。在音频处理中,可以用于音频压缩、音频增强和音频分析。
  输入
  参数名称
  类型
  默认值
  描述
  inputCols
  Vector
  input
  Inputvectortobecosinetransformed。
  输出
  参数名称
  类型
  默认值
  描述
  outputCols
  Vector
  output
  Cosinetransformedoutputvector。
  参数
  名称
  默认值
  类型
  是否必填
  描述
  inputCols
  null
  String〔〕
  no
  输入列名称
  outputCols
  null
  String〔〕
  no
  输出列名称
  inverse
  false
  Boolean
  no
  这是一个关于DCT的参数,它指示是否执行反向DCT(true)或正向DCT(false)
  示例代码:importorg。apache。flink。ml。feature。dct。DCT;importorg。apache。flink。ml。linalg。Vimportorg。apache。flink。ml。linalg。Vimportorg。apache。flink。streaming。api。environment。StreamExecutionEimportorg。apache。flink。table。api。Timportorg。apache。flink。table。api。bridge。java。StreamTableEimportorg。apache。flink。types。Rimportorg。apache。flink。util。CloseableIimportjava。util。Aimportjava。util。LSimpleprogramthatcreatesaDCTinstanceandusesitforfeatureengineering。publicclassDCTExample{publicstaticvoidmain(String〔〕args){StreamExecutionEnvironmentenvStreamExecutionEnvironment。getExecutionEnvironment();StreamTableEnvironmenttEnvStreamTableEnvironment。create(env);Generatesinputdata。ListVectorinputDataArrays。asList(Vectors。dense(1。0,1。0,1。0,1。0),Vectors。dense(1。0,0。0,1。0,0。0));TableinputTabletEnv。fromDataStream(env。fromCollection(inputData))。as(input);CreatesaDCTobjectandinitializesitsparameters。DCTdctnewDCT();UsestheDCTobjectforfeaturetransformations。TableoutputTabledct。transform(inputTable)〔0〕;Extractsanddisplaystheresults。for(CloseableIteratorRowitoutputTable。execute()。collect();it。hasNext();){Rowrowit。next();VectorinputValuerow。getFieldAs(dct。getInputCol());VectoroutputValuerow。getFieldAs(dct。getOutputCol());System。out。printf(InputValue:sOutputValue:s,inputValue,outputValue);}}}
  5、ElementwiseProduct
  ElementwiseProduct是来源于SparkMLlib中的算法,它执行每个输入向量与提供的权重向量的Hadamard积(Hadamardproduct是矩阵的一种运算,它是将两个矩阵中对应位置的元素相乘得到一个新的矩阵)的输出。ElementwiseProduct函数使用Hadamard乘积将每个输入向量与给定缩放向量相乘。如果输入向量的大小不等于缩放向量的大小,则转换器将抛出IllegalArgumentException异常。
  ElementwiseProduct在机器学习中的应用场景比较广泛,主要用于特征交叉,将两个特征向量进行点乘得到新的特征向量。
  例如,在推荐系统中,可以使用ElementwiseProduct将用户的历史行为和物品的属性进行交叉,得到新的特征向量,从而提高推荐系统的准确性。
  输入
  参数名称
  类型
  默认值
  描述
  inputCols
  Vector
  input
  需要进行缩放的特征
  输出
  参数名称
  类型
  默认值
  描述
  outputCols
  Vector
  output
  缩放过后的特征
  参数
  名称
  默认值
  类型
  是否必填
  描述
  inputCols
  null
  String
  no
  输入列名称
  outputCols
  null
  String
  no
  输出列名称
  scalingVec
  null
  String
  yes
  缩放向量
  示例代码:importorg。apache。flink。ml。feature。elementwiseproduct。ElementwisePimportorg。apache。flink。ml。linalg。Vimportorg。apache。flink。ml。linalg。Vimportorg。apache。flink。streaming。api。datastream。DataSimportorg。apache。flink。streaming。api。environment。StreamExecutionEimportorg。apache。flink。table。api。Timportorg。apache。flink。table。api。bridge。java。StreamTableEimportorg。apache。flink。types。Rimportorg。apache。flink。util。CloseableISimpleprogramthatcreatesanElementwiseProductinstanceandusesitforfeatureengineering。publicclassElementwiseProductExample{publicstaticvoidmain(String〔〕args){StreamExecutionEnvironmentenvStreamExecutionEnvironment。getExecutionEnvironment();StreamTableEnvironmenttEnvStreamTableEnvironment。create(env);Generatesinputdata。DataStreamRowinputStreamenv。fromElements(Row。of(0,Vectors。dense(1。1,3。2)),Row。of(1,Vectors。dense(2。1,3。1)));TableinputTabletEnv。fromDataStream(inputStream)。as(id,vec);CreatesanElementwiseProductobjectandinitializesitsparameters。ElementwiseProductelementwiseProductnewElementwiseProduct()。setInputCol(vec)。setOutputCol(outputVec)。setScalingVec(Vectors。dense(1。1,1。1));Transformsinputdata。TableoutputTableelementwiseProduct。transform(inputTable)〔0〕;Extractsanddisplaystheresults。for(CloseableIteratorRowitoutputTable。execute()。collect();it。hasNext();){Rowrowit。next();VectorinputValue(Vector)row。getField(elementwiseProduct。getInputCol());VectoroutputValue(Vector)row。getField(elementwiseProduct。getOutputCol());System。out。printf(InputValue:sOutputValue:s,inputValue,outputValue);}}}
投诉 评论

薰衣草要注意防止哪些病虫害相对其他植物来说,薰衣草的病虫害较少,以防为主,但是了解薰衣草的病虫害症状及其防治方法是必不可少的。那么薰衣草的主要病虫害种类有什么呢?应该如何防治呢?薰衣草要注意防止哪……假怀孕是什么症状早孕试纸也有不靠谱的时候大家都知道,怀孕的症状会有恶心、呕吐、嗜睡、停经,但是并不是出现这些症状都是怀孕哦,也有假性怀孕的情况存在的。毕竟早孕试纸也有不靠谱的时候,所以一般推荐女性在用早孕试纸进行初步……撸起袖子加油干唐山市发布凤凰英才政策4。0推动人才工作从三个方面深化拓展唐山市发布凤凰英才政策4。0河北日报讯(记者刘禹彤)日前,唐山市发布凤凰英才政策4。0(下文称政策4。0),共分为三部分18条,明确从……赚钱金点子集锦点子即主意、诀窍,一种没有说破时令人难以置信,一旦说破又觉得非常简单,而不点破您却想不出来的主意。一个金点子、一个新创意、一个妙招数,就是挣钱的好绝招,往往能出奇制胜,往往能改……我国出生人口首次跌破1000万!参考别国,儒学或有助于提高出近几年,我国出生人口以及生育率都出现了一定程度的下滑,根据国家统计局17日发布的数据,我国的出生人口首次跌破1000万人,2022年全国出生人口只有956万人。尽管已经出台了一……致闺蜜的新婚祝福语随着结婚之日的到来,空气里都充满了醉人的甜蜜,下面是美文阅读网小编精心整理的闺蜜新婚祝福语大全,希望能给大家带来帮助!1。两情相悦的最高境界是相对两无厌,祝福一对新人真心……FlinkML机器学习算法介绍(二)特征工程FeatureEngineering特征工程数据与特征工程决定了模型的上限,改进算法只不过是逼近这个上限而已。特征工程是机器学习中非常重要的一部分,它是将原始数据转……苏珊米勒每日星座运势苏珊米勒每日星座运势2017。11。1白羊座由于木星位于天蝎座,因此你的感情关系会成为最关注的点,而万圣节这一天,你会参加一些社交活动。在感情当中,无论是私人感情还……里去造句用里去造句大全(121)始终觉得,一个姑娘坐晚公交回家时的表情恬淡,要美过坐在卡宴里去开房时的故作娇憨。(122)爱美的小虫子在梳装打扮着,不料被天敌:鸟,发现了,结果被小鸟一口吞下肚……脑出血中医辩证论治出血性中风属血瘀证范畴。中医认为凡出血必离经,离经之血则为血瘀。血在血管内的结、滞和在血管外的出血,均称为血瘀证。中风属本虚标实之证,本虚为气虚,标实为血瘀。其后医家张景岳在《……李晓继续操练主要内容简介及赏析作者简介1950年生于上海。1966年初中毕业时适逢文化大革命爆发,1969年作为知识青年去安徽农村插队,在那里生活了7年。1976年因父母身边无子女调回上海,在食品厂当工人。……没有牙齿的翼龙中国翼龙早已灭绝但探索从未停止恐龙这种生物,早已经灭绝。可对于恐龙化石的追寻,考古和生物学家们却从未停止探索。但凡是发现一些蛛丝马迹,对于他们以及我们来说,都增加了新的知识。就像中国翼龙化石的发现,也给大家……
经验之谈延长夫妻性爱的持久时间让女人疯狂逗人糗事非常非常的火大换手机必须要知道的五点注意事项,你知道几个?野河里常见的小鱼有哪些天秤座男生爱你的表现个怪异行为读懂天秤男的爱得人心造句用得人心造句大全白云肌肉减少影响老年人生活质量这就是法国,带你看看最真实的法国现状平胸龟好养吗怎么养最新中长发设计赏析甜蜜时尚发型变身潮女亚洲8大震撼地标!中国就占了3个新时期人口与计划生育思想政治工作的艺术研究车内吸尘器多少钱车载吸尘器使用的注意事项详解柠檬枸杞茶的泡法如果穷是使用盗版软件的理由,那多穷才会觉得Office365四五十岁的女人,别扮嫩也别浮夸,低调朴素的穿搭才更优雅滥用职权罪主体是什么?24英寸的电脑有多大24英寸的电脑具体尺寸项目太热怕失败?创业别急,推荐你几个冷门项目听十大禁曲真的会让人轻生吗?死亡的背后不可告人的秘密!触动心灵的史诗湖人球场上的魔兽,球场下的老男孩,蜕变只需坚持,仅此而已贩毒一人多次怎么判刑?

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找