【沈逸 】利用回撥實現指令碼實體類和模擬Ajax
大家都上網購買圖書的時候一般都會上像dearbook,噹噹這樣的國內專業購書網站。這些網站一般都會提供一個常用的功能叫做銷售排名,用來向大家展現一段時間內圖書銷售的排名情況。一般都是展現當月的圖書銷量排名。這裡我們其實可以加一個功能叫做“下個月銷售排行榜”,這樣可以增加使用者體驗和使使用者購書的時候更具有針對性.
廢話就不多說了。要完美的完成上述功能,需要大家實現以下2個功能點.
1.對使用者分類。即根據使用者在網站上的行為特徵對使用者進行使用者特徵和喜好的分類。分類的數學模型很多。這些我使用神經網路。(不是本文重點,暫不詳述)。
2.根據使用者分類。在“下月銷售榜”中根據分類展現該分類中圖書預測排名.
由於本文主要講預測。針對於第一點就不描述了。
開門見山,進行做這個功能的準備活動.
1.首先要進行取樣,把各個圖書的歷年或者歷月的銷售量記錄在資料表中.
2.畫個座標圖。x軸代表時間 y軸代表銷量.我們可以看到一段時間內的資料點可以體現為直線 3.初中時我們就學過直線方程 y=ax+b (不要告訴我你沒學過)
4.各個資料點的連線關係並不都是直線,而是形成一個散點圖.
5.各個散點其實形成各個資料間的曲線關係。為了表現各個曲線所表示座標之間的函式關係。我們使用了一個很牛的概念叫作曲線擬合.
6.由於是曲線因此我們不能簡單使用y=ax+b直線方程來搞定。原因在第4點.
7.根據我們所學的知識。我們認為各個曲線成線性關係,即資料與資料之間按比例、成直線的關係。在數學上可以理解為一階導數為常數的函式。
8.由於我們只要根據圖書的銷售時間和銷售量來預測下月的銷售量。我們把時間當作自變數X,銷售量當作因量Y 結果就是x={2005, 2006, 2007, 2008}, y={222,223,224,225} 這裡代表2005年某本書的銷量是222本。。。。 我們要預測2009年這本書的銷量是多少.
9.於是方程式變形.依舊還是y=ax+b.只不過這裡我們使用線性迴歸來近似估計值.注意這裡使用了近似兩個字.
10.到這裡思路清晰。由於是1元方程。於是我們使用一元線性迴歸來計算a和b的值。
接下來是發放程式碼 java程式碼 拷貝到c#中一樣用
private double[][] datax;
public void setDatax(double[][] datax) {
this.datax = datax;
}
public double[][] getDatax() {
return datax;
}
public int getLength(){
return this.datax.length;
}
public double getAValue() //獲得自變數A的值
{
if(!Validate())
return 0;
double szA1=(this.getLength()*this.getSumXY()-this.getSumX()*this.getSumY());
double szA2=this.getSumSquareX()-Math.pow(this.getSumX(), 2);
if(szA2>0)
{
return szA1/szA2;
}
else
{
return 0;
}
}
public double getBValue(double AValue) //獲得自變數B的值
{
if(!Validate())
return 0;
return this.getSumY()/this.getLength()-(AValue*this.getSumX())/this.getLength();
}
public double getLinearValue(double x) //根據自變數X 求因變數Y
{
if(!Validate())
return 0;
double szA=this.getAValue();
double szB=this.getBValue(szA);
return szA*x+szB;
}
public double getSumX() //獲得X值的和
{
double szRes=0;
if(Validate())
{
for(int i=0;i<=this.datax.length-1;i++){
szRes+=this.datax[i][0];
}
return szRes;
}
else
return 0;
}
public double getSumY()//獲得Y值的和
{
double szRes=0;
if(Validate())
{
for(int i=0;i<=this.datax.length-1;i++){
szRes+=this.datax[i][1];
}
return szRes;
}
else
return 0;
}
public double getSumXY() //獲得x*y的和
{
double szRes=0;
if(Validate())
{
for(int i=0;i<=this.datax.length-1;i++){
szRes+=this.datax[i][0]*this.datax[i][1];
}
return szRes;
}
else
return 0;
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-281035/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於資料事實表彙總的模擬實現——指令碼實現指令碼
- 利用回撥函式實現簡單的輪播圖效果函式
- 模擬STL連結串列類的實現
- js模擬實現StringBuffer類功能程式碼例項JS
- 簡單的string類的模擬實現
- qsort的模擬實現和練習
- 從零到有模擬實現一個Set類
- promise的模擬實現Promise
- javascript模擬實現replaceAll()JavaScript
- ADAMS 指令碼模擬指令碼
- javascript模擬實現ArrayList效果程式碼例項JavaScript
- 模擬實現Object.is()方法程式碼例項Object
- javascript模擬實現trim()方法例項程式碼JavaScript
- javascript模擬實現toAarray()方法程式碼例項JavaScript
- javascript模擬new的實現JavaScript
- JavaScript 模擬new的實現JavaScript
- 【Java】——模擬登入實現Java
- JavaScript模擬實現replaceAll方法JavaScript
- 積體電路模擬器(SPICE)的實現原理
- Oracle模擬併發指令碼Oracle指令碼
- 實戰模擬監控MySQL服務shell指令碼小結薦MySql指令碼
- JavaScript模擬拋物運動的程式碼實現JavaScript
- js模擬實現hashCode()方法程式碼例項JS
- js模擬實現多型效果程式碼例項JS多型
- js模擬實現replaceAll()函式程式碼例項JS函式
- css模擬實現雙擊效果程式碼例項CSS
- css模擬實現雙擊事件程式碼例項CSS事件
- 模擬實現連結title效果程式碼例項
- 飛秋的模擬實現程式碼,很好很山寨!
- js之call,apply和bind的模擬實現JSAPP
- JavaScript 深入之 call 和 apply 的模擬實現JavaScriptAPP
- JavaScript專題之模擬實現call和applyJavaScriptAPP
- JavaScript 之 call和apply,bind 的模擬實現JavaScriptAPP
- JavaScript深入之call和apply的模擬實現JavaScriptAPP
- JavaScript 深入之call和apply的模擬實現JavaScriptAPP
- Keil的軟體模擬和硬體模擬
- 模擬實現apply/call/bindAPP
- bind,call,apply模擬實現APP