aboutsummaryrefslogtreecommitdiff
path: root/python/pyspark/ml/feature.py
diff options
context:
space:
mode:
authorYanbo Liang <ybliang8@gmail.com>2015-08-17 17:25:41 -0700
committerJoseph K. Bradley <joseph@databricks.com>2015-08-17 17:25:41 -0700
commit0076e8212334c613599dcbc2ac23f49e9e50cc44 (patch)
tree80b13441324071ab6bc4978c017a072c0decc686 /python/pyspark/ml/feature.py
parent52ae952574f5d641a398dd185e09e5a79318c8a9 (diff)
downloadspark-0076e8212334c613599dcbc2ac23f49e9e50cc44.tar.gz
spark-0076e8212334c613599dcbc2ac23f49e9e50cc44.tar.bz2
spark-0076e8212334c613599dcbc2ac23f49e9e50cc44.zip
[SPARK-9768] [PYSPARK] [ML] Add Python API and user guide for ml.feature.ElementwiseProduct
Add Python API, user guide and example for ml.feature.ElementwiseProduct. Author: Yanbo Liang <ybliang8@gmail.com> Closes #8061 from yanboliang/SPARK-9768.
Diffstat (limited to 'python/pyspark/ml/feature.py')
-rw-r--r--python/pyspark/ml/feature.py67
1 files changed, 62 insertions, 5 deletions
diff --git a/python/pyspark/ml/feature.py b/python/pyspark/ml/feature.py
index 535d553266..04b2b2ccc9 100644
--- a/python/pyspark/ml/feature.py
+++ b/python/pyspark/ml/feature.py
@@ -26,11 +26,11 @@ from pyspark.ml.wrapper import JavaEstimator, JavaModel, JavaTransformer
from pyspark.mllib.common import inherit_doc
from pyspark.mllib.linalg import _convert_to_vector
-__all__ = ['Binarizer', 'Bucketizer', 'HashingTF', 'IDF', 'IDFModel', 'NGram', 'Normalizer',
- 'OneHotEncoder', 'PolynomialExpansion', 'RegexTokenizer', 'StandardScaler',
- 'StandardScalerModel', 'StringIndexer', 'StringIndexerModel', 'Tokenizer',
- 'VectorAssembler', 'VectorIndexer', 'Word2Vec', 'Word2VecModel', 'PCA',
- 'PCAModel', 'RFormula', 'RFormulaModel']
+__all__ = ['Binarizer', 'Bucketizer', 'ElementwiseProduct', 'HashingTF', 'IDF', 'IDFModel',
+ 'NGram', 'Normalizer', 'OneHotEncoder', 'PolynomialExpansion', 'RegexTokenizer',
+ 'StandardScaler', 'StandardScalerModel', 'StringIndexer', 'StringIndexerModel',
+ 'Tokenizer', 'VectorAssembler', 'VectorIndexer', 'Word2Vec', 'Word2VecModel',
+ 'PCA', 'PCAModel', 'RFormula', 'RFormulaModel']
@inherit_doc
@@ -167,6 +167,63 @@ class Bucketizer(JavaTransformer, HasInputCol, HasOutputCol):
@inherit_doc
+class ElementwiseProduct(JavaTransformer, HasInputCol, HasOutputCol):
+ """
+ Outputs the Hadamard product (i.e., the element-wise product) of each input vector
+ with a provided "weight" vector. In other words, it scales each column of the dataset
+ by a scalar multiplier.
+
+ >>> from pyspark.mllib.linalg import Vectors
+ >>> df = sqlContext.createDataFrame([(Vectors.dense([2.0, 1.0, 3.0]),)], ["values"])
+ >>> ep = ElementwiseProduct(scalingVec=Vectors.dense([1.0, 2.0, 3.0]),
+ ... inputCol="values", outputCol="eprod")
+ >>> ep.transform(df).head().eprod
+ DenseVector([2.0, 2.0, 9.0])
+ >>> ep.setParams(scalingVec=Vectors.dense([2.0, 3.0, 5.0])).transform(df).head().eprod
+ DenseVector([4.0, 3.0, 15.0])
+ """
+
+ # a placeholder to make it appear in the generated doc
+ scalingVec = Param(Params._dummy(), "scalingVec", "vector for hadamard product, " +
+ "it must be MLlib Vector type.")
+
+ @keyword_only
+ def __init__(self, scalingVec=None, inputCol=None, outputCol=None):
+ """
+ __init__(self, scalingVec=None, inputCol=None, outputCol=None)
+ """
+ super(ElementwiseProduct, self).__init__()
+ self._java_obj = self._new_java_obj("org.apache.spark.ml.feature.ElementwiseProduct",
+ self.uid)
+ self.scalingVec = Param(self, "scalingVec", "vector for hadamard product, " +
+ "it must be MLlib Vector type.")
+ kwargs = self.__init__._input_kwargs
+ self.setParams(**kwargs)
+
+ @keyword_only
+ def setParams(self, scalingVec=None, inputCol=None, outputCol=None):
+ """
+ setParams(self, scalingVec=None, inputCol=None, outputCol=None)
+ Sets params for this ElementwiseProduct.
+ """
+ kwargs = self.setParams._input_kwargs
+ return self._set(**kwargs)
+
+ def setScalingVec(self, value):
+ """
+ Sets the value of :py:attr:`scalingVec`.
+ """
+ self._paramMap[self.scalingVec] = value
+ return self
+
+ def getScalingVec(self):
+ """
+ Gets the value of scalingVec or its default value.
+ """
+ return self.getOrDefault(self.scalingVec)
+
+
+@inherit_doc
class HashingTF(JavaTransformer, HasInputCol, HasOutputCol, HasNumFeatures):
"""
Maps a sequence of terms to their term frequencies using the