slope one 推荐算法python 代码_SlopeOne推荐算法

1 importjava.io.BufferedReader;2

3 importjava.io.BufferedWriter;4

5 importjava.io.File;6

7 importjava.io.FileNotFoundException;8

9 importjava.io.FileReader;10

11 importjava.io.FileWriter;12

13 importjava.io.IOException;14

15 importjava.util.List;16

17 importorg.apache.commons.cli2.OptionException;18

19 importorg.apache.mahout.cf.taste.common.TasteException;20

21 importorg.apache.mahout.cf.taste.impl.common.LongPrimitiveIterator;22

23 importorg.apache.mahout.cf.taste.impl.model.file.FileDataModel;24

25 importorg.apache.mahout.cf.taste.impl.recommender.CachingRecommender;26

27 importorg.apache.mahout.cf.taste.impl.recommender.slopeone.SlopeOneRecommender;28

29 importorg.apache.mahout.cf.taste.model.DataModel;30

31 importorg.apache.mahout.cf.taste.recommender.RecommendedItem;32

33

34 public classApp35

36 {37

38 static final String inputFile = "/mnt/new/ml-1m/ratings.dat";39

40 static final String outputFile = "/mnt/new/ml-1m/ratings.csv";41

42

43

44 public static void main( String[] args ) throwsIOException, TasteException, OptionException45

46 {47

48 CreateCsvRatingsFile();49

50 //创建模型数据源文件

51

52 File ratingsFile = newFile(outputFile);53

54 DataModel model = newFileDataModel(ratingsFile);55

56 //SlopeOne算法

57

58 CachingRecommender cachingRecommender = new CachingRecommender(newSlopeOneRecommender(model));59

60 //对所有用户进行推荐

61

62 for (LongPrimitiveIterator it =model.getUserIDs(); it.hasNext();){63

64 long userId =it.nextLong();65

66 //对单个User进行推荐

67

68 List recommendations = cachingRecommender.recommend(userId, 10);69

70

71 //该用户无推荐结果

72

73 if (recommendations.size() == 0){74

75 System.out.print("User ");76

77 System.out.print(userId);78

79 System.out.println(": no recommendations");80

81 }82

83 //打印推荐信息

84

85 for(RecommendedItem recommendedItem : recommendations) {86

87 System.out.print("User ");88

89 System.out.print(userId);90

91 System.out.print(": ");92

93 System.out.println(recommendedItem);94

95 }96

97 }98

99 }100

101

102 //读文件前1000行作为模型输入

103 private static void CreateCsvRatingsFile() throwsFileNotFoundException, IOException {104

105

106 BufferedReader br = new BufferedReader(newFileReader(inputFile));107

108 BufferedWriter bw = new BufferedWriter(newFileWriter(outputFile));109

110

111

112 String line = null;113

114 String line2write = null;115

116 String[] temp;117

118

119 int i = 0;120

121 while ((line = br.readLine()) != null && i < 1000)122

123 {124

125 i++;126

127 temp = line.split("::");128

129 line2write = temp[0] + "," + temp[1];130

131 bw.write(line2write);132

133 bw.newLine();134

135 bw.flush();136

137 }138

139 br.close();140

141 bw.close();142

143 }144

145 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值