亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Spark 定義帶有數字列表及其相關概率的隨機變量

使用 Spark 定義帶有數字列表及其相關概率的隨機變量

HUX布斯 2023-07-28 16:31:56
我正在嘗試解決一本統計書中的練習,并Spark逐步介紹自己MLib。但它只是基本的統計工具。出現的一個簡單問題是用這種概率分布定義的隨機變量:x   | 1    2    3    4    5    6 --------------------------------- Px  |0.1  0.4  0.2  0.1  0.1  0.1我可以用筆和紙計算期望值和方差。但我想用Spark它來代替。然而,我認為沒有辦法聲明一個數字列表以及一個發生概率列表。我怎樣才能做到這一點Spark?是否MLib已經需要這種簡單的期望值和方差計算?
查看完整描述

2 回答

?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

您可以創建一個包含兩列的數據框x,Px然后例如對于期望值做df.agg(sum(col("x") * col("Px")).alias("expected_value")).first()
對于方差,您需要使用方差公式。
為此不需要 MLib

查看完整回答
反對 回復 2023-07-28
?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

它有效。但有點長。


@Test

@DisplayName("E8.2 : Déterminer la distribution de probabilité d'une v.a. X")

public void distributionVariableAleatoireX() {

   StructType schema = new StructType()

     .add("x", IntegerType, false)

     .add("Px", DoubleType, false);


   List<Row> rows = new ArrayList<>();

   rows.add(RowFactory.create(1, 0.1));

   rows.add(RowFactory.create(2, 0.4));

   rows.add(RowFactory.create(3, 0.2));

   rows.add(RowFactory.create(4, 0.1));

   rows.add(RowFactory.create(5, 0.1));

   rows.add(RowFactory.create(6, 0.1));

   Dataset<Row> ds = this.session.createDataFrame(rows, schema);


   double esperance = ds.agg(sum(col("x").multiply(col("Px")))).first().getDouble(0);


   Column variation = col("x").minus(esperance);

   Column variationCarre = variation.multiply(variation);

   Column termeCalculVariance = col("Px").multiply(variationCarre);


   double variance = ds.agg(sum(termeCalculVariance)).first().getDouble(0);


   LOGGER.info("E(X) = {}, V(X) = {}", esperance, variance);

}

E(X) = 3.0
V(X) = 2.2

查看完整回答
反對 回復 2023-07-28
  • 2 回答
  • 0 關注
  • 155 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號