我有一個excel文件,其中包含126行和5列滿數字,我必須使用該數據和SVD方法來預測5-10多行數據。我已經用Python實現SVD成功使用numpy的:在Python/R中使用SVD進行矩陣逼近和預測時間序列
進口numpy的從numpy的進口genfromtxt
my_data = genfromtxt('data.csv', delimiter=',')
U, s, V = np.linalg.svd(my_data)
print ("U:")
print (U)
print ("\nSigma:")
print (s)
print ("\nVT:")
print (V)
,輸出NP :
U:
[[-0.03339497 0.10018171 0.01013636 ..., -0.10076323 -0.09740801
-0.08901366]
[-0.02881809 0.0992715 -0...., -0.02920558 -0.04133748
-0.06100236]
[-0.02501102 0.10637736 -0.0528663 ..., -0.0885227 -0.05408083
-0.01678337]
...,
[-0.02418483 0.10993637 0.05200962 ..., 0.9734676 -0.01866914
-0.00870467]
[-0.02944344 0.10238372 0.02009676 ..., -0.01948701 0.98455034
-0.00975614]
[-0.03109401 0.0973963 -0.0279125 ..., -0.01072974 -0.0109425
0.98929811]]
Sigma:
[ 252943.48015512 74965.29844851 15170.76769244 4357.38062076
3934.63212778]
VT:
[[-0.16143572 -0.22105626 -0.93558846 -0.14545156 -0.16908786]
[ 0.5073101 0.40240734 -0.34460639 0.45443181 0.50541365]
[-0.11561044 0.87141558 -0.07426656 -0.26914744 -0.38641073]
[ 0.63320943 -0.09361249 0.00794671 -0.75788695 0.12580436]
[-0.54977724 0.14516905 -0.01849291 -0.35426346 0.74217676]]
但我不知道如何使用此數據預先確定我的價值觀。我用這鏈路http://datascientistinsights.com/2013/02/17/single-value-decomposition-a-golfers-tutotial/作爲參考但是這是在R.在他們用R預測值結束,但它們中的R用這個命令:
approxGolf_1 <- golfSVD$u[,1] %*% t(golfSVD$v[,1]) * golfSVD$d[1]
這裏是IdeOne鏈接到整個R代碼裏面: http://ideone.com/Yj3y6j
我不是很熟悉R,所以任何人都可以讓我知道,如果在Python中有類似於上述命令的函數,或者解釋那個命令正在做什麼?
謝謝。
哇,你是一個天才,謝謝!你解釋得很好。我只有一條評論,當我在我的數據上使用它時,我的數據是一個126x5的矩陣,我得到這個錯誤:predictions = U [:,0] * s [0] * V [0 ,:] ValueError:操作數可能不能與形狀(126)(5)一起廣播。我正在使用我的帖子上面的SVD值 – Goose
當我使用高爾夫球場數據時,一切正常,但你知道爲什麼我的數據顯示......在U的決心?這裏是我使用的數據:http://pastebin.com/YYAM35Pd。你如何控制它預測的數值?對於我的情況,它會預測126x5的更多數據行嗎?對於大量問題抱歉,我幾乎無法找到任何有關SVD的信息,這些信息並沒有超出我的頭腦。 – Goose
在我的回答中,我還沒有談到*預測*,但SVD如何幫助用較少的數據表示數據的特徵,即與最大奇異值相對應的向量。請提出另一個關於預測問題的具體問題。簡而言之,您需要知道新的實例(高爾夫球場的難點),以便您可以使用'V'(玩家技巧)預測分數。 – ojdo