Advertisement
Guest User

Untitled

a guest
Apr 16th, 2016
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.82 KB | None | 0 0
  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.ResultSet;
  4. import java.sql.Statement;
  5.  
  6. public class CosineSimilarity {
  7. //jdbc variables
  8. private static final String URL = "jdbc:mysql://localhost/hadoop";
  9. private static final String USER = "hadoop";
  10. private static final String PASSWORD = "binavgd";
  11.  
  12. public static void main(String[] args) {
  13. //for every 0 rating
  14. try {
  15. Connection connect = DriverManager.getConnection(URL, USER, PASSWORD);
  16. Statement stmt = connect.createStatement();
  17. Statement stmt1 = connect.createStatement();
  18. ResultSet rs, rs1;
  19. int uid, similarUid, predictedRating = 0;
  20. double similarity, mostSimilarity = -1;
  21. String isbn;
  22. rs = stmt.executeQuery("SELECT * FROM `BX-Book-Ratings` WHERE `Book-Rating` = 0");
  23. while(rs.next()){
  24. predictedRating = 0;
  25. uid = rs.getInt("User-ID");
  26. isbn = rs.getString("ISBN");
  27. /*search similarity among users
  28. * see what other users have rated this book
  29. */
  30. rs1 = stmt1.executeQuery("SELECT * FROM `BX-Book-Ratings` WHERE `ISBN` ='" + isbn +
  31. "' AND `Book-Rating`>0");
  32. while(rs1.next()){
  33. similarUid = rs1.getInt("User-ID");
  34. similarity = getSimilarity(uid, similarUid);
  35. if(similarity > 0.8 && similarity > mostSimilarity){
  36. mostSimilarity = similarity;
  37. predictedRating = rs1.getInt("Book-Rating");
  38. }
  39. }//while rs1 ends
  40. rs1 = stmt1.executeQuery("UPDATE `BX-Book-Ratings` SET `Book-Rating`=" + predictedRating +
  41. " WHERE `ISBN`='" + isbn + "' AND `User-ID`=" + uid);
  42. }//while rs ends
  43. }catch(Exception e){
  44. e.printStackTrace();
  45. }
  46. }
  47.  
  48. private static double getSimilarity(int uid, int similarUid) {
  49. double age1 =0, age2=0;
  50. double lat1, lat2=0, lng1, lng2=0, num=0, denom=1;
  51. try {
  52. Connection connect = DriverManager.getConnection(URL, USER, PASSWORD);
  53. Statement stmt = connect.createStatement();
  54. Statement stmt1 = connect.createStatement();
  55. ResultSet rs, rs1;
  56. rs = stmt.executeQuery("SELECT * from `Users_Normalized` WHERE `User-ID`="+uid);
  57. while (rs.next()) {
  58. age1 = rs.getDouble("Age");
  59. lat1 = rs.getDouble("Latitude");
  60. lng1 = rs.getDouble("Longitude");
  61. rs1 = stmt1.executeQuery("SELECT * from `Users_Normalized` WHERE `User-ID`=" + similarUid);
  62. while(rs1.next()){
  63. age2 = rs1.getDouble("Age");
  64. lat2 = rs1.getDouble("Latitude");
  65. lng2 = rs1.getDouble("Longitude");
  66. }//rs1 ends
  67. num = (age1*age2)+(lat1*lat2)+(lng1*lng2);
  68. denom = Math.sqrt((age1*age1)+(lat1*lat1)+(lng1*lng1));
  69. denom *= Math.sqrt((age2*age2)+(lat2*lat2)+(lng2*lng2));
  70. }//rs ends
  71. }catch(Exception e){
  72. e.printStackTrace();
  73. }
  74. return num/denom;
  75. }
  76.  
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement