spark模拟推荐数据
时间: 2023-07-05 17:05:40 浏览: 34
Spark可以使用模拟数据生成推荐数据。以下是一个示例:
1. 生成用户数据
```
val userDF = spark.range(0, 1000).withColumnRenamed("id", "user_id")
```
2. 生成物品数据
```
val itemDF = spark.range(0, 100).withColumnRenamed("id", "item_id")
```
3. 生成用户行为数据
```
import org.apache.spark.sql.functions.rand
val userItemDF = userDF.crossJoin(itemDF).withColumn("rating", rand())
```
这将生成一个包含所有用户和物品的交叉表,每个单元格包含用户对物品的评分。
4. 将数据拆分为训练集和测试集
```
val Array(trainDF, testDF) = userItemDF.randomSplit(Array(0.8, 0.2))
```
5. 使用ALS模型训练数据
```
import org.apache.spark.ml.recommendation.ALS
val als = new ALS()
.setMaxIter(10)
.setRegParam(0.01)
.setUserCol("user_id")
.setItemCol("item_id")
.setRatingCol("rating")
val model = als.fit(trainDF)
```
6. 在测试集上评估模型
```
import org.apache.spark.ml.evaluation.RegressionEvaluator
val predictions = model.transform(testDF)
val evaluator = new RegressionEvaluator()
.setMetricName("rmse")
.setLabelCol("rating")
.setPredictionCol("prediction")
val rmse = evaluator.evaluate(predictions)
```
这将计算模型在测试集上的均方根误差。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)