pyspark.ml package
ML Pipeline APIs
基于DataFrame的機(jī)器學(xué)習(xí)API脯丝,使用戶可以快速組裝和配置實(shí)用的機(jī)器學(xué)習(xí)管道。
class pyspark.ml.Transformer
將一個(gè)數(shù)據(jù)集轉(zhuǎn)換為另一個(gè)數(shù)據(jù)集的變換器抽象類尺栖。
- copy(extra=None)
使用相同的uid和一些額外的參數(shù)創(chuàng)建此實(shí)例的副本狰住。 默認(rèn)實(shí)現(xiàn)使用copy.copy()創(chuàng)建一個(gè)淺拷貝,然后復(fù)制嵌入的和額外的參數(shù)并返回拷貝仲翎。 如果默認(rèn)方法不夠壶辜,子類應(yīng)該重寫此方法悯舟。
Parameters: extra – 額外的參數(shù)復(fù)制到新的實(shí)例
Returns: 這個(gè)實(shí)例的副本 - explainParam(param)
解釋單個(gè)參數(shù),并以字符串形式返回其參數(shù)的名稱砸民、文檔和可選的默認(rèn)值以及用戶提供的值抵怎。 - explainParams()
返回所有參數(shù)的文檔及其可選的默認(rèn)值和用戶提供的值。 - extractParamMap(extra=None)
提取嵌入的默認(rèn)參數(shù)值和用戶提供的值阱洪,然后將它們與來自輸入的額外值合并到平坦參數(shù)映射中便贵,其中在存在沖突時(shí)使用后者的值,即冗荸,在排序時(shí)使用:默認(rèn)參數(shù)值<用戶提供值<extra承璃。
Parameters: extra – 額外的參數(shù)值
Returns: merged param map - getOrDefault(param)
獲取參數(shù)的值從用戶提供的參數(shù)映射或其默認(rèn)值。 如果沒有設(shè)置蚌本,則會(huì)引發(fā)錯(cuò)誤盔粹。 - getParam(paramName)
通過名字得到一個(gè)參數(shù)。 - hasDefault(param)
檢查該參數(shù)是否有默認(rèn)值程癌。 - hasParam(paramName)
試此實(shí)例是否包含具有給定(字符串)名稱的參數(shù)舷嗡。 - isDefined(param)
檢查參數(shù)是否由用戶明確設(shè)置或具有默認(rèn)值。 - isSet(param)
檢查參數(shù)是否由用戶明確設(shè)置嵌莉。 - params
返回按名稱排序的所有參數(shù)进萄。 默認(rèn)實(shí)現(xiàn)使用dir()來獲取Param類型的所有屬性。 - transform(dataset, params=None)
使用可選參數(shù)來轉(zhuǎn)換輸入的數(shù)據(jù)集。
Parameters:
- dataset – 輸入數(shù)據(jù)集中鼠,它是pyspark.sql.DataFrame的一個(gè)實(shí)例
- params – 一個(gè)可選的參數(shù)映射可婶,覆蓋嵌入?yún)?shù)。
Returns: 轉(zhuǎn)換后的數(shù)據(jù)集
class pyspark.ml.Estimator
適合數(shù)據(jù)模型的估計(jì)器抽象類援雇。
- copy(extra=None)
- explainParam(param)
- explainParams()
- extractParamMap(extra=None)
- fit(dataset, params=None)
使用可選參數(shù)將模型擬合到輸入數(shù)據(jù)集矛渴。
Parameters:
- dataset – 輸入數(shù)據(jù)集,它是pyspark.sql.DataFrame的一個(gè)實(shí)例
- params – 一個(gè)可選的參數(shù)映射惫搏,覆蓋嵌入?yún)?shù)具温。 如果給出了參數(shù)映射的列表/元組,則調(diào)用每個(gè)參數(shù)映射上的擬合并返回模型列表筐赔。
Returns: 擬合模型
- getOrDefault(param)
- getParam(paramName)
- hasDefault(param)
- hasParam(paramName)
- isDefined(param)
- isSet(param)
- params
class pyspark.ml.Model
用估計(jì)量擬合的模型抽象類铣猩。
- copy(extra=None)
- explainParam(param)
- explainParams()
- extractParamMap(extra=None)
- getOrDefault(param)
- getParam(paramName)
- hasDefault(param)
- hasParam(paramName)
- isDefined(param)
- isSet(param)
- params
- transform(dataset, params=None)
class pyspark.ml.Pipeline(self, stages=None)
一個(gè)簡(jiǎn)單的管道(pipeline),作為一個(gè)估計(jì)器(estimator)川陆。 管道由一系列階段(stage)組成剂习,每個(gè)階段是估算器(Estimator)或變換器(Transformer)。 當(dāng)調(diào)用Pipeline.fit()時(shí)较沪,階段按順序執(zhí)行。 如果一個(gè)階段是估算器失仁,那么將在輸入數(shù)據(jù)集上調(diào)用Estimator.fit()方法來擬合模型尸曼。 然后,將使用作為變換器的模型將數(shù)據(jù)集轉(zhuǎn)換為下一階段的輸入萄焦。 如果一個(gè)階段是一個(gè)Transformer控轿,它的Transformer.transform()方法將被調(diào)用來產(chǎn)生下一個(gè)階段的數(shù)據(jù)集。 Pipeline擬合的模型是一個(gè)PipelineModel拂封,它由擬合的模型和變換器組成茬射,與管道階段相對(duì)應(yīng)。 如果階段是一個(gè)空列表冒签,那么這個(gè)管道就像一個(gè)身份轉(zhuǎn)換器在抛。
- copy(extra=None)
- explainParam(param)
- explainParams()
- extractParamMap(extra=None)
- fit(dataset, params=None)
- getOrDefault(param)
- getParam(paramName)
- getStages()
獲取pipeline的階段(stages)。 - hasDefault(param)
- hasParam(paramName)
- isDefined(param)
- isSet(param)
- classmethod load(path)
從輸入路徑讀取ML實(shí)例萧恕,read().load(path)的快捷方式刚梭。 - params
- classmethod read()
返回此類的MLReader實(shí)例。 - save(path)
將這個(gè)ML實(shí)例保存到給定的路徑票唆,write().save(path)的快捷方式朴读。 - setParams(self, stages=None)
設(shè)置管道的參數(shù)。 - setStages(value)
設(shè)置管道的階段走趋。 - stages = Param(parent='undefined', name='stages', doc='a list of pipeline stages')
- write()
為這個(gè)ML實(shí)例返回一個(gè)MLWriter實(shí)例衅金。
class pyspark.ml.PipelineModel(stages)
表示一個(gè)帶有變形器和擬合模型的編譯管道。
- copy(extra=None)
- explainParam(param)
- explainParams()
- extractParamMap(extra=None)
- getOrDefault(param)
- getParam(paramName)
- hasDefault(param)
- hasParam(paramName)
- isDefined(param)
- isSet(param)
- classmethod load(path)
- params
- classmethod read()
- save(path)
- transform(dataset, params=None)
- write()
pyspark.ml.param module
class pyspark.ml.param.Param(parent, name, doc, typeConverter=None)
具有自包含文檔的參數(shù)。
class pyspark.ml.param.Params
需要參數(shù)的組件氮唯。 還提供了一個(gè)內(nèi)部參數(shù)映射來存儲(chǔ)附加到實(shí)例的參數(shù)值鉴吹。
- copy(extra=None)
- explainParam(param)
- explainParams()
- extractParamMap(extra=None)
- getOrDefault(param)
- getParam(paramName)
- hasDefault(param)
- hasParam(paramName)
- isDefined(param)
- isSet(param)
- params
class pyspark.ml.param.TypeConverters
- Note: DeveloperApi
Param.typeConverter常用類型轉(zhuǎn)換函數(shù)的工廠方法。
- static identity(value)
只是返回值的虛擬轉(zhuǎn)換器您觉。 - static toBoolean(value)
如果可能拙寡,將值轉(zhuǎn)換為布爾值。 - static toFloat(value)
如果可能琳水,將值轉(zhuǎn)換為浮點(diǎn)數(shù)肆糕。 - static toInt(value)
如果可能,將值轉(zhuǎn)換為int在孝。 - static toList(value)
如果可能诚啃,將值轉(zhuǎn)換為列表。 - static toListFloat(value)
如果可能的話私沮,將值轉(zhuǎn)換為浮點(diǎn)型列表始赎。 - static toListInt(value)
如果可能,將值轉(zhuǎn)換為整數(shù)列表仔燕。 - static toListString(value)
如果可能造垛,將值轉(zhuǎn)換為字符串列表。 - static toString(value)
如果可能晰搀,將值轉(zhuǎn)換為字符串五辽。 - static toVector(value)
如果可能,將值轉(zhuǎn)換為MLlib向量外恕。
pyspark.ml.feature module
class pyspark.ml.feature.Binarizer(self, threshold=0.0, inputCol=None, outputCol=None)
對(duì)給定閾值的一列連續(xù)特征進(jìn)行二值化杆逗。
Binarizer(ML提供的二元化方法)二元化涉及的參數(shù)有inputCol(輸入)、outputCol(輸出)以及threshold(閥值)鳞疲。(輸入的)特征值大于閥值將映射為1.0罪郊,特征值小于等于閥值將映射為0.0。(Binarizer)支持向量(Vector)和雙精度(Double)類型的輸出
>>> df = spark.createDataFrame([(0.5,)], ["values"])
>>> binarizer = Binarizer(threshold=1.0, inputCol="values", outputCol="features")
>>> binarizer.transform(df).head().features
0.0
>>> binarizer.setParams(outputCol="freqs").transform(df).head().freqs
0.0
>>> params = {binarizer.threshold: -0.5, binarizer.outputCol: "vector"}
>>> binarizer.transform(df, params).head().vector
1.0
>>> binarizerPath = "/user/root/binarizer"
>>> binarizer.save(binarizerPath)
>>> loadedBinarizer = Binarizer.load(binarizerPath)
>>> loadedBinarizer.getThreshold() == binarizer.getThreshold()
True
- copy(extra=None)
- explainParam(param)
- explainParams()
- extractParamMap(extra=None)
- getInputCol()
獲取inputCol的值或其默認(rèn)值尚洽。 - getOrDefault(param)
- getOutputCol()
- getParam(paramName)
- getThreshold()
獲取閾值或其默認(rèn)值悔橄。 - hasDefault(param)
- hasParam(paramName)
- inputCol = Param(parent='undefined', name='inputCol', doc='input column name.')
- isDefined(param)
- isSet(param)
- classmethod load(path)
- outputCol = Param(parent='undefined', name='outputCol', doc='output column name.')
- params
- classmethod read()
- save(path)
- setInputCol(value)
設(shè)置inputCol的值。 - setOutputCol(value)
設(shè)置outputCol的值翎朱。 - setParams(self, threshold=0.0, inputCol=None, outputCol=None)
設(shè)置這個(gè)Binarizer的參數(shù)橄维。 - setThreshold(value)
設(shè)置閾值的值。 - threshold = Param(parent='undefined', name='threshold', doc='threshold in binary classification prediction, in range [0, 1]')
- transform(dataset, params=None)
- write()
返回此ML實(shí)例的MLWriter實(shí)例拴曲。
class pyspark.ml.feature.BucketedRandomProjectionLSH(self, inputCol=None, outputCol=None, seed=None, numHashTables=1, bucketLength=None)
- Note Experimental
歐幾里德距離度量的LSH類争舞。 輸入是密集的(dense)或稀疏的(sparse)矢量,每個(gè)矢量表示歐幾里德距離空間中的一個(gè)點(diǎn)澈灼。 輸出將是可配置維度的向量竞川。 相同維度中的哈希值由相同的哈希函數(shù)計(jì)算店溢。
LSH(Locality Sensitive Hashing)翻譯成中文,叫做“局部敏感哈衔冢”床牧,它是一種針對(duì)海量高維數(shù)據(jù)的快速最近鄰查找算法。
>>> from pyspark.ml.linalg import Vectors
>>> from pyspark.sql.functions import col
>>> data = [(0, Vectors.dense([-1.0, -1.0 ]),),
... (1, Vectors.dense([-1.0, 1.0 ]),),
... (2, Vectors.dense([1.0, -1.0 ]),),
... (3, Vectors.dense([1.0, 1.0]),)]
>>> df = spark.createDataFrame(data, ["id", "features"])
>>> brp = BucketedRandomProjectionLSH(inputCol="features", outputCol="hashes",
... seed=12345, bucketLength=1.0)
>>> model = brp.fit(df)
>>> model.transform(df).head()
Row(id=0, features=DenseVector([-1.0, -1.0]), hashes=[DenseVector([-1.0])])
>>> data2 = [(4, Vectors.dense([2.0, 2.0 ]),),
... (5, Vectors.dense([2.0, 3.0 ]),),
... (6, Vectors.dense([3.0, 2.0 ]),),
... (7, Vectors.dense([3.0, 3.0]),)]
>>> df2 = spark.createDataFrame(data2, ["id", "features"])
>>> model.approxNearestNeighbors(df2, Vectors.dense([1.0, 2.0]), 1).collect()
[Row(id=4, features=DenseVector([2.0, 2.0]), hashes=[DenseVector([1.0])], distCol=1.0)]
>>> model.approxSimilarityJoin(df, df2, 3.0, distCol="EuclideanDistance").select(
... col("datasetA.id").alias("idA"),
... col("datasetB.id").alias("idB"),
... col("EuclideanDistance")).show()
+---+---+-----------------+
|idA|idB|EuclideanDistance|
+---+---+-----------------+
| 3| 6| 2.23606797749979|
+---+---+-----------------+
...
>>> brpPath = "/user/root/brp"
>>> brp.save(brpPath)
>>> brp2 = BucketedRandomProjectionLSH.load(brpPath)
>>> brp2.getBucketLength() == brp.getBucketLength()
True
>>> modelPath = "/user/root/brp-model"
>>> model.save(modelPath)
>>> model2 = BucketedRandomProjectionLSHModel.load(modelPath)
>>> model.transform(df).head().hashes == model2.transform(df).head().hashes
True
bucketLength = Param(parent='undefined', name='bucketLength', doc='每個(gè)哈希桶的長(zhǎng)度遭贸,更大的桶降低了假陰性率戈咳。')
- copy(extra=None)
- explainParam(param)
- explainParams()
- extractParamMap(extra=None)
- fit(dataset, params=None)
使用可選參數(shù)將模型擬合到輸入數(shù)據(jù)集。 - getBucketLength()
獲取bucketLength的值或其默認(rèn)值壕吹。 - getInputCol()
- getNumHashTables()
獲取numHashTables的值或其默認(rèn)值著蛙。 - getOrDefault(param)
- getOutputCol()
- getParam(paramName)
- getSeed()
獲取種子的值或其默認(rèn)值。 - hasDefault(param)
- hasParam(paramName)
inputCol = Param(parent='undefined', name='inputCol', doc='輸入列名稱') - isDefined(param)
- isSet(param)
- classmethod load(path)
numHashTables = Param(parent='undefined', name='numHashTables', doc='哈希表的數(shù)量耳贬,散列表數(shù)量的增加降低了錯(cuò)誤的否定率踏堡,并且降低它提高了運(yùn)行性能')
outputCol = Param(parent='undefined', name='outputCol', doc='輸出列名稱') - params
- classmethod read()
- save(path)
seed = Param(parent='undefined', name='seed', doc='隨機(jī)種子') - setBucketLength(value)
設(shè)置bucketLength的值。 - setInputCol(value)
設(shè)置inputCol的值咒劲。 - setNumHashTables(value)
設(shè)置numHashTables的值顷蟆。 - setOutputCol(value)
- setParams(self, inputCol=None, outputCol=None, seed=None, numHashTables=1, bucketLength=None)
為此BucketedRandomProjectionLSH設(shè)置參數(shù)。 - setSeed(value)
設(shè)置種子值腐魂。 - write()
class pyspark.ml.feature.BucketedRandomProjectionLSHModel(java_model=None)
- Note Experimental
模型由BucketedRandomProjectionLSH擬合帐偎,其中存儲(chǔ)多個(gè)隨機(jī)向量。向量被歸一化為單位向量蛔屹,并且每個(gè)向量被用在hash函數(shù)中hi(x)=floor(ri?x/bucketLength), ri是第i個(gè)隨機(jī)單位向量肮街。桶的數(shù)量將是(輸入向量的最大L2范數(shù))/ bucketLength。
- approxNearestNeighbors(dataset, key, numNearestNeighbors, distCol='distCol')
給定一個(gè)大的數(shù)據(jù)集和一個(gè)項(xiàng)判导,最多可以找到距離這個(gè)項(xiàng)最近的k個(gè)項(xiàng)。 如果outputCol丟失沛硅,該方法將轉(zhuǎn)換數(shù)據(jù); 如果outputCol存在眼刃,它將使用它。 這可以在必要時(shí)緩存轉(zhuǎn)換后的數(shù)據(jù)摇肌。
Parameters:
- dataset - 在數(shù)據(jù)集中來搜索key的最近鄰居擂红。
- key - 表示要搜索的項(xiàng)的特征向量。
- numNearestNeighbors - 最近鄰居的最大數(shù)量围小。
- distCol - 輸出列用于存儲(chǔ)每個(gè)結(jié)果行與鍵之間的距離昵骤。 如果沒有指定,使用“distCol”作為默認(rèn)值肯适。
Returns: 一個(gè)最多包含k個(gè)項(xiàng)目的數(shù)據(jù)集变秦。 添加一列“distCol”以顯示每一行與鍵之間的距離。
- approxSimilarityJoin(datasetA, datasetB, threshold, distCol='distCol')
連接兩個(gè)數(shù)據(jù)集以近似查找距離小于閾值的所有行對(duì)框舔。 如果outputCol丟失蹦玫,該方法將轉(zhuǎn)換數(shù)據(jù); 如果outputCol存在赎婚,它將使用它。 這可以在必要時(shí)緩存轉(zhuǎn)換后的數(shù)據(jù)樱溉。
Parameters:
- datasetA - One of the datasets to join.
- datasetB - Another dataset to join.
- threshold - 行對(duì)距離的閾值挣输。
- distCol - 輸出列用于存儲(chǔ)每對(duì)行之間的距離。 如果沒有指定福贞,使用“distCol”作為默認(rèn)值撩嚼。
Returns: 包含行對(duì)的連接數(shù)據(jù)集。 原始行在“datasetA”和“datasetB”列中挖帘,添加一列“distCol”以顯示每對(duì)之間的距離完丽。
- copy(extra=None)
- explainParam(param)
- explainParams()
- extractParamMap(extra=None)
- getOrDefault(param)
- getParam(paramName)
- hasDefault(param)
- hasParam(paramName)
- isDefined(param)
- isSet(param)
- classmethod load(path)
- params
- save(path)
- transform(dataset, params=None)
- write()
class pyspark.ml.feature.Bucketizer(self, splits=None, inputCol=None, outputCol=None, handleInvalid="error")
將一列連續(xù)特征映射到一列特征桶。
Bucketizer將一列連續(xù)的特征轉(zhuǎn)換為特征區(qū)間肠套,區(qū)間由用戶指定舰涌。
splits:分裂數(shù)為n+1時(shí),將產(chǎn)生n個(gè)區(qū)間你稚。除了最后一個(gè)區(qū)間外瓷耙,每個(gè)區(qū)間范圍[x,y]由分裂的x,y決定刁赖。分裂必須是嚴(yán)格遞增的搁痛。在分裂指定外的值將被歸為錯(cuò)誤。
>>> values = [(0.1,), (0.4,), (1.2,), (1.5,), (float("nan"),), (float("nan"),)]
>>> df = spark.createDataFrame(values, ["values"])
>>> bucketizer = Bucketizer(splits=[-float("inf"), 0.5, 1.4, float("inf")],
... inputCol="values", outputCol="buckets")
>>> bucketed = bucketizer.setHandleInvalid("keep").transform(df).collect()
>>> len(bucketed)
6
>>> bucketed[0].buckets
0.0
>>> bucketed[1].buckets
0.0
>>> bucketed[2].buckets
1.0
>>> bucketed[3].buckets
2.0
>>> bucketizer.setParams(outputCol="b").transform(df).head().b
0.0
>>> bucketizerPath = "/user/root/bucketizer"
>>> bucketizer.save(bucketizerPath)
>>> loadedBucketizer = Bucketizer.load(bucketizerPath)
>>> loadedBucketizer.getSplits() == bucketizer.getSplits()
True
>>> bucketed = bucketizer.setHandleInvalid("skip").transform(df).collect()
>>> len(bucketed)
4
- copy(extra=None)
- explainParam(param)
- explainParams()
- extractParamMap(extra=None)
- getHandleInvalid()
獲取handleInvalid的值或其默認(rèn)值宇弛。 - getInputCol()
- getOrDefault(param)
- getOutputCol()
- getParam(paramName)
- getSplits()
獲取閾值或其默認(rèn)值鸡典。
handleInvalid = Param(parent='undefined', name='handleInvalid', doc="如何處理無效條目。 選項(xiàng)是“skip”(過濾出具有無效值的行)枪芒,“error”(拋出錯(cuò)誤)或“keep”(將無效值保存在特殊的附加存儲(chǔ)桶中)彻况。") - hasDefault(param)
- hasParam(paramName)
inputCol = Param(parent='undefined', name='inputCol', doc='輸入列名稱') - isDefined(param)
- isSet(param)
- classmethod load(path)
- params
- save(path)
- setHandleInvalid(value)
設(shè)置handleInvalid的值。 - setInputCol(value)
- setOutputCol(value)
- setParams(self, splits=None, inputCol=None, outputCol=None, handleInvalid="error")
- setSplits(value)
設(shè)置分割的值舅踪。
splits = Param(parent='undefined', name='splits', doc='用于將連續(xù)特征映射到桶中的分割點(diǎn)纽甘。 用n + 1分割,有n個(gè)桶抽碌。 由分割x悍赢,y定義的存儲(chǔ)區(qū)保存除最后一個(gè)存儲(chǔ)分區(qū)(也包括y)之外的范圍[x,y]中的值货徙。 分割的長(zhǎng)度應(yīng)該大于等于3左权,并嚴(yán)格增加。 必須明確提供-inf痴颊,inf處的值以涵蓋所有Double值; 否則赏迟,指定拆分之外的值將被視為錯(cuò)誤。') - transform(dataset, params=None)
- write()
class pyspark.ml.feature.ChiSqSelector(self, numTopFeatures=50, featuresCol="features", outputCol=None, labelCol="label", selectorType="numTopFeatures", percentile=0.1, fpr=0.05, fdr=0.05, fwe=0.05)
ChiSqSelector代表卡方特征選擇祷舀。它適用于帶有類別特征的標(biāo)簽數(shù)據(jù)瀑梗。ChiSqSelector根據(jù)獨(dú)立卡方檢驗(yàn)烹笔,然后選取類別標(biāo)簽主要依賴的特征。它類似于選取最有預(yù)測(cè)能力的特征抛丽。
- Note Experimental
卡方特征選擇谤职,選擇用于預(yù)測(cè)分類標(biāo)簽的分類特征。 選擇器支持不同的選擇方法:numTopFeatures亿鲜,percentile允蜈,fpr,fdr蒿柳,fwe饶套。 - numTopFeatures通過卡方檢驗(yàn)選取最具有預(yù)測(cè)能力的Top(num)個(gè)特征。
- percentile類似于上一種方法垒探,但是選取一小部分特征而不是固定(num)個(gè)特征妓蛮。
- fpr選擇P值低于門限值的特征,這樣就可以控制false positive rate來進(jìn)行特征選擇圾叼。
- fdr使用Benjamini-Hochberg過程來選擇虛假發(fā)現(xiàn)率低于閾值的所有特征蛤克。
- 我們選擇p值低于閾值的所有特征。 閾值由1 / numFeatures縮放夷蚊,從而控制選擇的家庭錯(cuò)誤率构挤。
默認(rèn)情況下,選擇方法是numTopFeatures惕鼓,默認(rèn)頂級(jí)要素?cái)?shù)設(shè)置為50筋现。
>>> from pyspark.ml.linalg import Vectors
>>> df = spark.createDataFrame(
... [(Vectors.dense([0.0, 0.0, 18.0, 1.0]), 1.0),
... (Vectors.dense([0.0, 1.0, 12.0, 0.0]), 0.0),
... (Vectors.dense([1.0, 0.0, 15.0, 0.1]), 0.0)],
... ["features", "label"])
>>> selector = ChiSqSelector(numTopFeatures=1, outputCol="selectedFeatures")
>>> model = selector.fit(df)
>>> model.transform(df).head().selectedFeatures
DenseVector([18.0])
>>> model.selectedFeatures
[2]
>>> chiSqSelectorPath ="/user/root/chi-sq-selector"
>>> selector.save(chiSqSelectorPath)
>>> loadedSelector = ChiSqSelector.load(chiSqSelectorPath)
>>> loadedSelector.getNumTopFeatures() == selector.getNumTopFeatures()
True
>>> modelPath = temp_path + "/chi-sq-selector-model"
>>> model.save(modelPath)
>>> loadedModel = ChiSqSelectorModel.load(modelPath)
>>> loadedModel.selectedFeatures == model.selectedFeatures
True
- copy(extra=None)
- explainParam(param)
- explainParams()
- extractParamMap(extra=None)
fdr = Param(parent='undefined', name='fdr', doc='預(yù)期錯(cuò)誤發(fā)現(xiàn)率的上限。')
featuresCol = Param(parent ='undefined'箱歧,name ='featuresCol'矾飞,doc ='功能列名稱。') - fit(dataset, params=None)
fpr = Param(parent='undefined', name='fpr', doc='要保留的功能的最高p值.')
fwe = Param(parent='undefined', name='fwe', doc='預(yù)期的家庭錯(cuò)誤率的上限呀邢。') - getFdr()
- getFeaturesCol()
- getFpr()
- getFwe()
- getLabelCol()
- getNumTopFeatures()
- getOrDefault(param)
- getOutputCol()
- getParam(paramName)
- getPercentile()
- getSelectorType()
- hasDefault(param)
- hasParam(paramName)
- isDefined(param)
- isSet(param)
labelCol = Param(parent='undefined', name='labelCol', doc='標(biāo)簽列名稱凰慈。') - classmethod load(path)
numTopFeatures = Param(parent='undefined', name='numTopFeatures', doc='選擇器將選擇的功能數(shù)量,按升序的p值排序驼鹅。 如果要素的數(shù)量<numTopFeatures,那么這將選擇所有要素森篷。')
outputCol = Param(parent='undefined', name='outputCol', doc='輸出列名稱输钩。') - params
percentile = Param(parent='undefined', name='percentile', doc='選擇器將選擇的特征的百分位數(shù),按升序p值排序仲智。') - classmethod read()
- save(path)
selectorType = Param(parent='undefined', name='selectorType', doc=ChisqSelector的選擇器類型买乃。 支持的選項(xiàng):numTopFeatures(默認(rèn)),percentile和fpr钓辆。') - setFdr(value)
- setFeaturesCol(value)
- setFpr(value)
- setFwe(value)
- setLabelCol(value)
- setNumTopFeatures(value)
- setOutputCol(value)
setParams(self, numTopFeatures=50, featuresCol="features", outputCol=None, labelCol="labels", selectorType="numTopFeatures", percentile=0.1, fpr=0.05, fdr=0.05, fwe=0.05) - setPercentile(value)
- setSelectorType(value)
- write()
class pyspark.ml.feature.ChiSqSelectorModel(java_model=None)
由ChiSqSelector裝配的模型剪验。
- copy(extra=None)
- explainParam(param)
- explainParams()
- extractParamMap(extra=None)
- getOrDefault(param)
- getParam(paramName)
- hasDefault(param)
- hasParam(paramName)
- isDefined(param)
- isSet(param)
- classmethod load(path)
- params
- classmethod read()
- save(path)
- selectedFeatures
- transform(dataset, params=None)
- write()
class pyspark.ml.feature.CountVectorizer(self, minTF=1.0, minDF=1.0, vocabSize=1 << 18, binary=False, inputCol=None, outputCol=None)
從文檔集合中提取詞匯表并生成CountVectorizerModel肴焊。
CountVectorizer算法是將文本向量轉(zhuǎn)換成稀疏表示的數(shù)值向量(字符頻率向量)。CountVectorizer將會(huì)把頻率高的單詞排在前面功戚。
>>> df = spark.createDataFrame(
... [(0, ["a", "b", "c"]), (1, ["a", "b", "b", "c", "a"])],
... ["label", "raw"])
>>> cv = CountVectorizer(inputCol="raw", outputCol="vectors")
>>> model = cv.fit(df)
>>> model.transform(df).show(truncate=False)
+-----+---------------+-------------------------+
|label|raw |vectors |
+-----+---------------+-------------------------+
|0 |[a, b, c] |(3,[0,1,2],[1.0,1.0,1.0])|
|1 |[a, b, b, c, a]|(3,[0,1,2],[2.0,2.0,1.0])|
+-----+---------------+-------------------------+
...
>>> sorted(model.vocabulary) == ['a', 'b', 'c']
True
>>> countVectorizerPath = "/count-vectorizer"
>>> cv.save(countVectorizerPath)
>>> loadedCv = CountVectorizer.load(countVectorizerPath)
>>> loadedCv.getMinDF() == cv.getMinDF()
True
>>> loadedCv.getMinTF() == cv.getMinTF()
True
>>> loadedCv.getVocabSize() == cv.getVocabSize()
True
>>> modelPath = "/count-vectorizer-model"
>>> model.save(modelPath)
>>> loadedModel = CountVectorizerModel.load(modelPath)
>>> loadedModel.vocabulary == model.vocabulary
True
binary = Param(parent='undefined', name='binary', doc='二進(jìn)制切換來控制輸出矢量值娶眷。 如果為真,則所有非零計(jì)數(shù)(應(yīng)用minTF濾波器后)均設(shè)置為1.對(duì)于模擬二進(jìn)制事件而非整數(shù)計(jì)數(shù)的離散概率模型非常有用啸臀。 默認(rèn)為False')
- copy(extra=None)
- explainParam(param)
- explainParams()
- extractParamMap(extra=None)
- fit(dataset, params=None)
- getBinary()
- getInputCol()
- getMinDF()
- getMinTF()
- getOrDefault(param)
- getOutputCol()
- getParam(paramName)
- getVocabSize()
- hasDefault(param)
- hasParam(paramName)
inputCol = Param(parent='undefined', name='inputCol', doc='輸入列名稱') - isDefined(param)
- isSet(param)
- classmethod load(path)
minDF = Param(parent='undefined', name='minDF', doc='指定詞匯必須出現(xiàn)在詞匯表中的最小數(shù)量的不同文檔届宠。 如果這是一個(gè)大于等于1的整數(shù)揍移,則它指定該術(shù)語必須出現(xiàn)的文檔數(shù); 如果這是[0,1)中的雙精度值右蒲,那么這指定了文檔的分?jǐn)?shù)。 默認(rèn)1.0')
minTF = Param(parent='undefined', name='minTF', doc="篩選以忽略文檔中的罕見詞語揉忘。 對(duì)于每個(gè)文檔灯萍,頻率/計(jì)數(shù)小于給定閾值的項(xiàng)被忽略轧铁。 如果這是一個(gè)大于等于1的整數(shù),那么這指定了一個(gè)計(jì)數(shù)(該術(shù)語必須出現(xiàn)在文檔中的次數(shù)); 如果這是[0,1)中的雙精度值旦棉,那么這指定了一個(gè)分?jǐn)?shù)(超出文檔的標(biāo)記計(jì)數(shù))齿风。 請(qǐng)注意,該參數(shù)僅用于CountVectorizerModel的轉(zhuǎn)換他爸,并不影響擬合聂宾。 默認(rèn)1.0")
outputCol = Param(parent='undefined', name='outputCol', doc='輸出列名稱.') - params
- classmethod read()
- save(path)
- setBinary(value)
- setInputCol(value)
- setMinDF(value)
- setMinTF(value)
- setOutputCol(value)
- setParams(self, minTF=1.0, minDF=1.0, vocabSize=1 << 18, binary=False, inputCol=None, outputCol=None)
- setVocabSize(value)
vocabSize = Param(parent='undefined', name='vocabSize', doc='詞匯量的最大值。 默認(rèn)1 << 18诊笤。') - write()
class pyspark.ml.feature.CountVectorizerModel(java_model=None)
由CountVectorizer裝配的模型系谐。
- copy(extra=None)
- explainParam(param)
- explainParams()
- extractParamMap(extra=None)
- getOrDefault(param)
- getParam(paramName)
- hasDefault(param)
- hasParam(paramName)
- isDefined(param)
- isSet(param)
- classmethod load(path)
- params
- classmethod read()
- save(path)
- transform(dataset, params=None)
- vocabulary
- write()
class pyspark.ml.feature.DCT(self, inverse=False, inputCol=None, outputCol=None)\
特征變換器,采用一個(gè)實(shí)矢量的一維離散余弦變換讨跟。 在輸入矢量上不執(zhí)行零填充纪他。 它返回一個(gè)表示DCT的相同長(zhǎng)度的實(shí)矢量。 對(duì)返回矢量進(jìn)行縮放晾匠,使得變換矩陣是單位的(又名縮放DCT-II)茶袒。
持續(xù)更新中。凉馆。薪寓。