Spark Python API Docs(part four)

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ù)集的變換器抽象類尺栖。

  1. 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í)例的副本
  2. explainParam(param)
    解釋單個(gè)參數(shù),并以字符串形式返回其參數(shù)的名稱砸民、文檔和可選的默認(rèn)值以及用戶提供的值抵怎。
  3. explainParams()
    返回所有參數(shù)的文檔及其可選的默認(rèn)值和用戶提供的值。
  4. extractParamMap(extra=None)
    提取嵌入的默認(rèn)參數(shù)值和用戶提供的值阱洪,然后將它們與來自輸入的額外值合并到平坦參數(shù)映射中便贵,其中在存在沖突時(shí)使用后者的值,即冗荸,在排序時(shí)使用:默認(rèn)參數(shù)值<用戶提供值<extra承璃。
    Parameters: extra – 額外的參數(shù)值
    Returns: merged param map
  5. getOrDefault(param)
    獲取參數(shù)的值從用戶提供的參數(shù)映射或其默認(rèn)值。 如果沒有設(shè)置蚌本,則會(huì)引發(fā)錯(cuò)誤盔粹。
  6. getParam(paramName)
    通過名字得到一個(gè)參數(shù)。
  7. hasDefault(param)
    檢查該參數(shù)是否有默認(rèn)值程癌。
  8. hasParam(paramName)
    試此實(shí)例是否包含具有給定(字符串)名稱的參數(shù)舷嗡。
  9. isDefined(param)
    檢查參數(shù)是否由用戶明確設(shè)置或具有默認(rèn)值。
  10. isSet(param)
    檢查參數(shù)是否由用戶明確設(shè)置嵌莉。
  11. params
    返回按名稱排序的所有參數(shù)进萄。 默認(rèn)實(shí)現(xiàn)使用dir()來獲取Param類型的所有屬性。
  12. 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ì)器抽象類援雇。

  1. copy(extra=None)
  2. explainParam(param)
  3. explainParams()
  4. extractParamMap(extra=None)
  5. 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: 擬合模型
  1. getOrDefault(param)
  2. getParam(paramName)
  3. hasDefault(param)
  4. hasParam(paramName)
  5. isDefined(param)
  6. isSet(param)
  7. params

class pyspark.ml.Model

用估計(jì)量擬合的模型抽象類铣猩。

  1. copy(extra=None)
  2. explainParam(param)
  3. explainParams()
  4. extractParamMap(extra=None)
  5. getOrDefault(param)
  6. getParam(paramName)
  7. hasDefault(param)
  8. hasParam(paramName)
  9. isDefined(param)
  10. isSet(param)
  11. params
  12. 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)換器在抛。

  1. copy(extra=None)
  2. explainParam(param)
  3. explainParams()
  4. extractParamMap(extra=None)
  5. fit(dataset, params=None)
  6. getOrDefault(param)
  7. getParam(paramName)
  8. getStages()
    獲取pipeline的階段(stages)。
  9. hasDefault(param)
  10. hasParam(paramName)
  11. isDefined(param)
  12. isSet(param)
  13. classmethod load(path)
    從輸入路徑讀取ML實(shí)例萧恕,read().load(path)的快捷方式刚梭。
  14. params
  15. classmethod read()
    返回此類的MLReader實(shí)例。
  16. save(path)
    將這個(gè)ML實(shí)例保存到給定的路徑票唆,write().save(path)的快捷方式朴读。
  17. setParams(self, stages=None)
    設(shè)置管道的參數(shù)。
  18. setStages(value)
    設(shè)置管道的階段走趋。
  19. stages = Param(parent='undefined', name='stages', doc='a list of pipeline stages')
  20. write()
    為這個(gè)ML實(shí)例返回一個(gè)MLWriter實(shí)例衅金。

class pyspark.ml.PipelineModel(stages)

表示一個(gè)帶有變形器和擬合模型的編譯管道。

  1. copy(extra=None)
  2. explainParam(param)
  3. explainParams()
  4. extractParamMap(extra=None)
  5. getOrDefault(param)
  6. getParam(paramName)
  7. hasDefault(param)
  8. hasParam(paramName)
  9. isDefined(param)
  10. isSet(param)
  11. classmethod load(path)
  12. params
  13. classmethod read()
  14. save(path)
  15. transform(dataset, params=None)
  16. 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ù)值鉴吹。

  1. copy(extra=None)
  2. explainParam(param)
  3. explainParams()
  4. extractParamMap(extra=None)
  5. getOrDefault(param)
  6. getParam(paramName)
  7. hasDefault(param)
  8. hasParam(paramName)
  9. isDefined(param)
  10. isSet(param)
  11. params

class pyspark.ml.param.TypeConverters

  • Note: DeveloperApi
    Param.typeConverter常用類型轉(zhuǎn)換函數(shù)的工廠方法。
  1. static identity(value)
    只是返回值的虛擬轉(zhuǎn)換器您觉。
  2. static toBoolean(value)
    如果可能拙寡,將值轉(zhuǎn)換為布爾值。
  3. static toFloat(value)
    如果可能琳水,將值轉(zhuǎn)換為浮點(diǎn)數(shù)肆糕。
  4. static toInt(value)
    如果可能,將值轉(zhuǎn)換為int在孝。
  5. static toList(value)
    如果可能诚啃,將值轉(zhuǎn)換為列表。
  6. static toListFloat(value)
    如果可能的話私沮,將值轉(zhuǎn)換為浮點(diǎn)型列表始赎。
  7. static toListInt(value)
    如果可能,將值轉(zhuǎn)換為整數(shù)列表仔燕。
  8. static toListString(value)
    如果可能造垛,將值轉(zhuǎn)換為字符串列表。
  9. static toString(value)
    如果可能晰搀,將值轉(zhuǎn)換為字符串五辽。
  10. 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
  1. copy(extra=None)
  2. explainParam(param)
  3. explainParams()
  4. extractParamMap(extra=None)
  5. getInputCol()
    獲取inputCol的值或其默認(rèn)值尚洽。
  6. getOrDefault(param)
  7. getOutputCol()
  8. getParam(paramName)
  9. getThreshold()
    獲取閾值或其默認(rèn)值悔橄。
  10. hasDefault(param)
  11. hasParam(paramName)
  12. inputCol = Param(parent='undefined', name='inputCol', doc='input column name.')
  13. isDefined(param)
  14. isSet(param)
  15. classmethod load(path)
  16. outputCol = Param(parent='undefined', name='outputCol', doc='output column name.')
  17. params
  18. classmethod read()
  19. save(path)
  20. setInputCol(value)
    設(shè)置inputCol的值。
  21. setOutputCol(value)
    設(shè)置outputCol的值翎朱。
  22. setParams(self, threshold=0.0, inputCol=None, outputCol=None)
    設(shè)置這個(gè)Binarizer的參數(shù)橄维。
  23. setThreshold(value)
    設(shè)置閾值的值。
  24. threshold = Param(parent='undefined', name='threshold', doc='threshold in binary classification prediction, in range [0, 1]')
  25. transform(dataset, params=None)
  26. 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)度遭贸,更大的桶降低了假陰性率戈咳。')

  1. copy(extra=None)
  2. explainParam(param)
  3. explainParams()
  4. extractParamMap(extra=None)
  5. fit(dataset, params=None)
    使用可選參數(shù)將模型擬合到輸入數(shù)據(jù)集。
  6. getBucketLength()
    獲取bucketLength的值或其默認(rèn)值壕吹。
  7. getInputCol()
  8. getNumHashTables()
    獲取numHashTables的值或其默認(rèn)值著蛙。
  9. getOrDefault(param)
  10. getOutputCol()
  11. getParam(paramName)
  12. getSeed()
    獲取種子的值或其默認(rèn)值。
  13. hasDefault(param)
  14. hasParam(paramName)
    inputCol = Param(parent='undefined', name='inputCol', doc='輸入列名稱')
  15. isDefined(param)
  16. isSet(param)
  17. classmethod load(path)
    numHashTables = Param(parent='undefined', name='numHashTables', doc='哈希表的數(shù)量耳贬,散列表數(shù)量的增加降低了錯(cuò)誤的否定率踏堡,并且降低它提高了運(yùn)行性能')
    outputCol = Param(parent='undefined', name='outputCol', doc='輸出列名稱')
  18. params
  19. classmethod read()
  20. save(path)
    seed = Param(parent='undefined', name='seed', doc='隨機(jī)種子')
  21. setBucketLength(value)
    設(shè)置bucketLength的值。
  22. setInputCol(value)
    設(shè)置inputCol的值咒劲。
  23. setNumHashTables(value)
    設(shè)置numHashTables的值顷蟆。
  24. setOutputCol(value)
  25. setParams(self, inputCol=None, outputCol=None, seed=None, numHashTables=1, bucketLength=None)
    為此BucketedRandomProjectionLSH設(shè)置參數(shù)。
  26. setSeed(value)
    設(shè)置種子值腐魂。
  27. 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。
  1. 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”以顯示每一行與鍵之間的距離。
  1. 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ì)之間的距離完丽。
  1. copy(extra=None)
  2. explainParam(param)
  3. explainParams()
  4. extractParamMap(extra=None)
  5. getOrDefault(param)
  6. getParam(paramName)
  7. hasDefault(param)
  8. hasParam(paramName)
  9. isDefined(param)
  10. isSet(param)
  11. classmethod load(path)
  12. params
  13. save(path)
  14. transform(dataset, params=None)
  15. 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
  1. copy(extra=None)
  2. explainParam(param)
  3. explainParams()
  4. extractParamMap(extra=None)
  5. getHandleInvalid()
    獲取handleInvalid的值或其默認(rèn)值宇弛。
  6. getInputCol()
  7. getOrDefault(param)
  8. getOutputCol()
  9. getParam(paramName)
  10. getSplits()
    獲取閾值或其默認(rèn)值鸡典。
    handleInvalid = Param(parent='undefined', name='handleInvalid', doc="如何處理無效條目。 選項(xiàng)是“skip”(過濾出具有無效值的行)枪芒,“error”(拋出錯(cuò)誤)或“keep”(將無效值保存在特殊的附加存儲(chǔ)桶中)彻况。")
  11. hasDefault(param)
  12. hasParam(paramName)
    inputCol = Param(parent='undefined', name='inputCol', doc='輸入列名稱')
  13. isDefined(param)
  14. isSet(param)
  15. classmethod load(path)
  16. params
  17. save(path)
  18. setHandleInvalid(value)
    設(shè)置handleInvalid的值。
  19. setInputCol(value)
  20. setOutputCol(value)
  21. setParams(self, splits=None, inputCol=None, outputCol=None, handleInvalid="error")
  22. 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ò)誤。')
  23. transform(dataset, params=None)
  24. 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
  1. copy(extra=None)
  2. explainParam(param)
  3. explainParams()
  4. extractParamMap(extra=None)
    fdr = Param(parent='undefined', name='fdr', doc='預(yù)期錯(cuò)誤發(fā)現(xiàn)率的上限。')
    featuresCol = Param(parent ='undefined'箱歧,name ='featuresCol'矾飞,doc ='功能列名稱。')
  5. fit(dataset, params=None)
    fpr = Param(parent='undefined', name='fpr', doc='要保留的功能的最高p值.')
    fwe = Param(parent='undefined', name='fwe', doc='預(yù)期的家庭錯(cuò)誤率的上限呀邢。')
  6. getFdr()
  7. getFeaturesCol()
  8. getFpr()
  9. getFwe()
  10. getLabelCol()
  11. getNumTopFeatures()
  12. getOrDefault(param)
  13. getOutputCol()
  14. getParam(paramName)
  15. getPercentile()
  16. getSelectorType()
  17. hasDefault(param)
  18. hasParam(paramName)
  19. isDefined(param)
  20. isSet(param)
    labelCol = Param(parent='undefined', name='labelCol', doc='標(biāo)簽列名稱凰慈。')
  21. classmethod load(path)
    numTopFeatures = Param(parent='undefined', name='numTopFeatures', doc='選擇器將選擇的功能數(shù)量,按升序的p值排序驼鹅。 如果要素的數(shù)量<numTopFeatures,那么這將選擇所有要素森篷。')
    outputCol = Param(parent='undefined', name='outputCol', doc='輸出列名稱输钩。')
  22. params
    percentile = Param(parent='undefined', name='percentile', doc='選擇器將選擇的特征的百分位數(shù),按升序p值排序仲智。')
  23. classmethod read()
  24. save(path)
    selectorType = Param(parent='undefined', name='selectorType', doc=ChisqSelector的選擇器類型买乃。 支持的選項(xiàng):numTopFeatures(默認(rèn)),percentile和fpr钓辆。')
  25. setFdr(value)
  26. setFeaturesCol(value)
  27. setFpr(value)
  28. setFwe(value)
  29. setLabelCol(value)
  30. setNumTopFeatures(value)
  31. 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)
  32. setPercentile(value)
  33. setSelectorType(value)
  34. write()

class pyspark.ml.feature.ChiSqSelectorModel(java_model=None)

由ChiSqSelector裝配的模型剪验。

  1. copy(extra=None)
  2. explainParam(param)
  3. explainParams()
  4. extractParamMap(extra=None)
  5. getOrDefault(param)
  6. getParam(paramName)
  7. hasDefault(param)
  8. hasParam(paramName)
  9. isDefined(param)
  10. isSet(param)
  11. classmethod load(path)
  12. params
  13. classmethod read()
  14. save(path)
  15. selectedFeatures
  16. transform(dataset, params=None)
  17. 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')

  1. copy(extra=None)
  2. explainParam(param)
  3. explainParams()
  4. extractParamMap(extra=None)
  5. fit(dataset, params=None)
  6. getBinary()
  7. getInputCol()
  8. getMinDF()
  9. getMinTF()
  10. getOrDefault(param)
  11. getOutputCol()
  12. getParam(paramName)
  13. getVocabSize()
  14. hasDefault(param)
  15. hasParam(paramName)
    inputCol = Param(parent='undefined', name='inputCol', doc='輸入列名稱')
  16. isDefined(param)
  17. isSet(param)
  18. 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='輸出列名稱.')
  19. params
  20. classmethod read()
  21. save(path)
  22. setBinary(value)
  23. setInputCol(value)
  24. setMinDF(value)
  25. setMinTF(value)
  26. setOutputCol(value)
  27. setParams(self, minTF=1.0, minDF=1.0, vocabSize=1 << 18, binary=False, inputCol=None, outputCol=None)
  28. setVocabSize(value)
    vocabSize = Param(parent='undefined', name='vocabSize', doc='詞匯量的最大值。 默認(rèn)1 << 18诊笤。')
  29. write()

class pyspark.ml.feature.CountVectorizerModel(java_model=None)

由CountVectorizer裝配的模型系谐。

  1. copy(extra=None)
  2. explainParam(param)
  3. explainParams()
  4. extractParamMap(extra=None)
  5. getOrDefault(param)
  6. getParam(paramName)
  7. hasDefault(param)
  8. hasParam(paramName)
  9. isDefined(param)
  10. isSet(param)
  11. classmethod load(path)
  12. params
  13. classmethod read()
  14. save(path)
  15. transform(dataset, params=None)
  16. vocabulary
  17. 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ù)更新中。凉馆。薪寓。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市澜共,隨后出現(xiàn)的幾起案子向叉,更是在濱河造成了極大的恐慌,老刑警劉巖嗦董,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件母谎,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡京革,警方通過查閱死者的電腦和手機(jī)奇唤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門幸斥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人咬扇,你說我怎么就攤上這事甲葬。” “怎么了冗栗?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵演顾,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我隅居,道長(zhǎng)钠至,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任胎源,我火速辦了婚禮棉钧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘涕蚤。我一直安慰自己宪卿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布万栅。 她就那樣靜靜地躺著佑钾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪烦粒。 梳的紋絲不亂的頭發(fā)上休溶,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音扰她,去河邊找鬼兽掰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛徒役,可吹牛的內(nèi)容都是我干的孽尽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼忧勿,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼杉女!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起鸳吸,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤宠纯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后层释,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡快集,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年贡羔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了廉白。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡乖寒,死狀恐怖猴蹂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情楣嘁,我是刑警寧澤磅轻,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站逐虚,受9級(jí)特大地震影響聋溜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜叭爱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一撮躁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧买雾,春花似錦把曼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至晃危,卻和暖如春叙赚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背山害。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工纠俭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人浪慌。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓冤荆,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親权纤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子钓简,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354