推荐药品
- 以下是用户的数据信息,数据集的数据格式是:lable是表示用户类型(1-4),后面是特征值表示药品类型(10-20)和疗效(0-5)。20条数据集如下,
1 11 2
1 12 3
1 13 1
1 14 0
1 15 1
2 11 1
2 12 2
2 15 1
2 14 3
2 11 1
2 13 5
2 12 1
3 17 4
3 12 2
3 15 1
3 14 3
3 11 1
3 13 5
4 12 1
4 13 2
4 12 2
4 15 1
4 14 3
4 11 1
4 13 2
4 12 1
4 14 4
- 对如上数据集进行转换,将数据集转化为专用Rating,调用recommendProducts函数进行推荐,代码实现如下:
import org.apache.spark._
import org.apache.spark.mllib.recommendation.{ALS, Rating}
object CF {
def main(args: Array[String]) {
val conf = new SparkConf().setMaster("local").setAppName("CF ") //设置环境变量
val sc = new SparkContext(conf) //实例化环境
val data = sc.textFile("c://cf.txt") //设置数据集
val ratings = data.map(_.split(' ') match { //处理数据
case Array(user, item, rate) => //将数据集转化
Rating(user.toInt, item.toInt, rate.toDouble) //将数据集转化为专用Rating
})
val rank = 2 //设置隐藏因子
val numIterations = 2 //设置迭代次数
val model = ALS.train(ratings, rank, numIterations, 0.01) //进行模型训练
var rs = model.recommendProducts(2,2) //为用户2推荐一个药品
rs.foreach(println) //打印结果
}
}