ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【沈逸 】利用回调实现脚本实体类和模拟Ajax

【沈逸 】利用回调实现脚本实体类和模拟Ajax

原创 Linux操作系统 作者:iDotNetSpace 时间:2008-05-20 13:31:43 0 删除 编辑
最近在搞数据挖据。偶然看到有些功能可以应用到一些网站当中去.

   大家都上网购买图书的时候一般都会上像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#中一样用

public class OneDimLinear {
 
  
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博客 ” ,链接:https://blog.itpub.net/12639172/viewspace-281035/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    2376
  • 访问量
    5766002