2017-03-23 10 views
1

私は現在、自分のデータにいくつかのアルゴリズムを試して、どれが最適かを判断しています。また、私は上記のアルゴリズムをどのようにカスタマイズして、CrossValidatorオブジェクトを使ってそれらのパラメータをテストできるかを見ていきます。Spark mllib - NaiveBayes weightcolパラメータの影響とフォーマット

私はNaiveBayesWeightColのパラメータに固執しました。

それに関する情報、動作方法、設定方法が見つかりませんでした。 「これは設定されていないか空でなければ、すべてのインスタンスの重みを1.0と扱うので、「mycolumn = 1.0、myothercol = 2.0」のような値を使うことができると思っていましたが、返品に間違いがあります。

エラーが発生しないのは、値として「mycolumn」を使用しても、その効果が分からない場合のみです。

誰もがこのパラメータを使用することを知っていれば、私は感謝します。

おかげ

答えて

0

weightParamべき二重及びスキューラベルの分布を補正するために、例えばサンプルの重要度を決定するために使用されます。

のは、あなたがこのようなデータを持っているとしましょう:

val data = spark.read.format("libsvm").load("data/mllib/sample_libsvm_data.txt") 

val skewed = data 
    .where($"label" === 0.0).limit(5) 
    .union(data.where($"label" === 1.0)) 

skewed.groupBy($"label").count.show 
+-----+-----+ 
|label|count| 
+-----+-----+ 
| 0.0| 5| 
| 1.0| 57| 
+-----+-----+ 

我々はlabel等しい0.0で、レコードに高い重みを追加することができます。

val weighted = skewed 
    .withColumn("weight", when($"label" === 0.0, 1.0).otherwise(0.1)) 

val weightedModel = new NaiveBayes().setWeightCol("weight").fit(weighted) 

weightedModel.transform(weighted.where($"label" === 0.0)).show 
+-----+--------------------+------+--------------------+-----------+----------+ 
|label|   features|weight|  rawPrediction|probability|prediction| 
+-----+--------------------+------+--------------------+-----------+----------+ 
| 0.0|(692,[127,128,129...| 1.0|[-165013.81130787...| [1.0,0.0]|  0.0| 
| 0.0|(692,[129,130,131...| 1.0|[-191959.02863649...| [1.0,0.0]|  0.0| 
| 0.0|(692,[154,155,156...| 1.0|[-201850.30335886...| [1.0,0.0]|  0.0| 
| 0.0|(692,[127,128,129...| 1.0|[-202315.73236242...| [1.0,0.0]|  0.0| 
| 0.0|(692,[153,154,155...| 1.0|[-258710.53340756...| [1.0,0.0]|  0.0| 
+-----+--------------------+------+--------------------+-----------+----------+ 

をすることができます特徴ベクトルをスケーリングするにはElementwiseProductを使用してください。

関連する問題