userid,itemid,score
1 11 2
1 12 3
1 13 1
1 14 0
1 15 1
2 11 1
2 12 2
2 13 2
2 14 1
2 15 4
3 11 2
3 12 3
3 14 0
3 15 1
4 11 1
4 12 2
4 14 1
4 15 4
5 11 1
5 12 2
5 13 2
5 14 1
5 15 4
package cn.tedu.als
import org.apache.spark.sparkconf
import org.apache.spark.sparkcontext
import org.apache.spark.mllib.recommendation.rating
import org.apache.spark.mllib.recommendation.als
object driver
//--建立推薦系統模型,底層通過als演算法來實現
//--①參:資料集 ②參:隱藏因子數 k 低階,要小於u和i
//--③參:最大迭代次數 ④參:λ 正則化引數,防止模型過擬合
val model=als.train(ratings, 3, 10, 0.01)
//--下面表示為使用者3推薦1個商品
val u3result=model.recommendproducts(3, 1)
//--下面表示為12號商品推薦2名使用者
val item12result=model.recommendusers(12, 2)
//--**3號使用者對12號商品的打分
val u3item12result=model.predict(3, 12) }
}logistic.txt
17 1 1 1
44 0 0 1
48 1 0 1
55 0 0 1
75 1 1 1
35 0 1 0
42 1 1 0
57 0 0 0
28 0 1 0
20 0 1 0
38 1 0 0
45 0 1 0
47 1 1 0
52 0 0 0
55 0 1 0
68 1 0 1
18 1 0 1
68 0 0 1
48 1 1 1
17 0 0 1
testlogistic.txt
17 0 0
44 1 1
48 0 1
55 1 0
package cn.tedu.logistic
import org.apache.spark.sparkconf
import org.apache.spark.sparkcontext
import org.apache.spark.mllib.regression.labeledpoint
import org.apache.spark.mllib.linalg.vectors
import org.apache.spark.mllib.classification.logisticregressionwithsgd
import org.apache.spark.mllib.classification.logisticregressionwithlbfgs
object driver
labeledpoint(y,vectors.dense(xarr))
}//--建立邏輯回歸模型,底層通過隨機梯度下降法來求解係數
//val model=logisticregressionwithsgd.train(r1,10,0.7)
//--建立邏輯回歸模型,底層使用擬牛頓法來求解係數
//--擬牛頓法屬於通過數值解(迭代式)逼近真實解,不需要定義步長。屬於快速迭代法。
//--但是這種演算法在資料量較大時,計算代價會較大。
val model=new logisticregressionwithlbfgs().run(r1)
//--獲取自變數係數
val coef=model.weights
//--回代資料集,**。最終得到的結果 0 or 1
val prediction=model.predict(r1.map )
val testdata=sc.textfile("c://data/ml/testlogistic.txt")
//--rdd[string]->rdd[vector(x1,x2,x3)]
val testrdd=testdata.map
vectors.dense(xarr)
}val testprediction=model.predict(testrdd)
testprediction.foreach}
}1,0 1
2,0 2
3,0 3
5,1 4
7,6 1
9,4 5
6,3 3
package cn.tedu.sgd
import org.apache.spark.sparkconf
import org.apache.spark.sparkcontext
import org.apache.spark.mllib.regression.labeledpoint
import org.apache.spark.mllib.linalg.vectors
import org.apache.spark.mllib.regression.linearregressionwithsgd
object driver
labeledpoint(y,vectors.dense(xarr))
}//--建立線性回歸模型,底層是通過梯度下降法來解係數
//--①參:資料集 ②參:最大迭代次數 ③參:步長
val model=linearregressionwithsgd.train(r1, 10, 0.05)
//--獲取自變數係數
//--y=β1x1+β2x2 -> y=0.98x1+1.0004x2
val coef=model.weights
//--回代原樣本集**,並返回結果
val prediction=model.predict(r1.map )
prediction.foreach }
}
基於大資料技術推薦系統演算法案例實戰教程
基於大資料技術推薦系統演算法案例實戰教程 密碼 vrvf 網際網路行業是大資料應用最前沿的陣地,目前主流的大資料技術,包括 hadoop,spark等,全部來自於一線網際網路公司。隨著電子商務規模的不斷擴大,顧客需要花費大量的時間才能找到自己想買的商品。這種瀏覽大量無關的資訊和產品過程無疑會使淹沒在...
java選擇排序演算法案例
分析 選擇排序演算法 不穩定 每一輪從待排序的元素中選出最小 或最大 的乙個元素,順序放在已排好序的數列的後邊 看例項 文字解析 如第一輪 標記第乙個數 15 為最小,然後乙個乙個的比較,2比15小,就暫時標記2為最小,在往後和2乙個乙個的比較,入過有比2小的,就暫時標記那個數為最下,再繼續比較,入...
動態規劃演算法 案例
動態規劃的關鍵點 一系列以空間換時間的演算法 解析 動態規劃的實現的關鍵在於能不能準確合理的用動態規劃表來抽象出 實際問題。在這個問題上,我們讓f n 表示走上n級台階的方法數。那麼當n為1時,f n 1,n為2時,f n 2,就是說當台階只有一級的時候,方法數是一種,台階有兩級的時候,方法數為2。...