2017-10-18 6 views
0

データフレーム用のpyspark.mlライブラリ(RDDの場合はではなくmllib)を使用してランダムフォレストクラシファイアを構築しようとしています。 ドキュメントに記載されているパイプラインを使用する必要がありますか? は、私はちょうど私のデータが180列と類似している私は、次のエラーデータフレームにpyspark.mlを使用するランダムフォレスト

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/spark/python/pyspark/__init__.py", line 104, in wrapper 
    return func(self, **kwargs) 
    File "/usr/lib/spark/python/pyspark/ml/classification.py", line 910, in __init 
__ 
    self.setParams(**kwargs) 
    File "/usr/lib/spark/python/pyspark/__init__.py", line 104, in wrapper 
    return func(self, **kwargs) 
    File "/usr/lib/spark/python/pyspark/ml/classification.py", line 928, in setPar 
ams 
    return self._set(**kwargs) 
    File "/usr/lib/spark/python/pyspark/ml/param/__init__.py", line 421, in _set 
    raise TypeError('Invalid param value given for param "%s". %s' % (p.name, e) 
) 
TypeError: Invalid param value given for param "labelCol". Could not convert <cl 
ass 'pyspark.sql.dataframe.DataFrame'> to string type 

に私のラベル

+---+ 
| _2| 
+---+ 
|0.0| 
|1.0| 
|0.0| 
|0.0| 
|0.0| 
|0.0| 
|1.0| 
|1.0| 
|1.0| 
|0.0| 
|0.0| 
|0.0| 
|0.0| 
|0.0| 
|0.0| 
|0.0| 
|0.0| 
|0.0| 
|1.0| 
|1.0| 
+---+ 

のサンプルを実行

rf = RandomForestClassifier(labelCol = labs, featuresCol = rawdata) 

、単純なモデルを構築したいです。

+0

パイプラインを使用する必要はありません。詳細については、データのサンプルを提供してください – desertnaut

+0

私は投稿を編集しました。ありがとう。 – Nivi

答えて

1

スパークのデータフレームは、スパークMLのようには使用されません。すべての機能はの単一の列のベクトルである必要がありますが、通常は(必ずしもそうではありません)featuresという名前のベクトルにする必要があります。プラスlabelcol=labsは、ラベルがという列にあり、_2ではないことを意味します。ここで

は、おもちゃのデータで、アイデアを取得する例です。

spark.version 
# u'2.2.0' 

from pyspark.ml.classification import RandomForestClassifier 
from pyspark.ml.linalg import Vectors 
df = sqlContext.createDataFrame([ 
    (0.0, Vectors.dense(0.0, 1.0)), 
    (1.0, Vectors.dense(1.0, 0.0))], 
    ["label", "features"]) 

df.show() # notice there are only 2 columns, and 'features' is a 2-d vector 
# +-----+---------+ 
# |label| features| 
# +-----+---------+ 
# | 0.0|[0.0,1.0]| 
# | 1.0|[1.0,0.0]| 
# +-----+---------+ 

rf = RandomForestClassifier(numTrees=3, maxDepth=2, labelCol="label", seed=42) 
rf_model = rf.fit(df) 

This answer of mineを所望の形式でデータを変換する方法で有用であろう。

+0

私はそれをしようとしていますが、次のエラーが表示されます。_parse_basic_datatype_string内 raise ValueError( "データ型を解析できませんでした:%s"%s) ValueError:データ型を解析できませんでした – Nivi

+0

@Niviこれ以上はできません。詳細の質問 – desertnaut

関連する問題