使用MATLAB

问题描述:

线性回归和分类缩放我在做三两件事:使用MATLAB

    使用线性分类
  • 分类采用logistic回归

我在二维数据

  • classificaiton
  • 线性回归我对数据的缩放感到困惑。 我的问题是,我不确定我是否正确调整数据。此外,我想改变我在matlab中的曲面图的外观。

    的数据是其中x范围为15000至80000 和y从1000二维(X和Y),以5500

    seprable because not scaled

    两个回归线1类和类0被发现使用线性回归。为此,我缩放了数据,计算了权重并使用了缩放数据的权重,这些数据也是在图片中看到的未缩放的数据上。我想这是正确的,因为权重只是定义了斜率。 但是,只要在下图中看到的数据从0到1缩放,数据就不会分离。

    enter image description here

    现在我迷茫的时候我应该做的扩展我的数据。因为对于线性分类,我无法对数据进行缩放,因为它不会显而易见。 不结垢,我发现使用梯度下降算法如下分型面:

    enter image description here

    关于MATLAB冲浪剧情第一quesiton:如何获得一个坚实看分型面?

    对于逻辑回归,有必要再次缩放。我猜是因为回归函数1 /(1 + exp(-w * x))的范围。

    我缩放它使用此

    data = (values - repmat(min(values,[],1),size(values,1),1))*spdiags(1./(max(values,[],1)-min(values,[],1))',0,size(values,2),size(values,2)) 
    

    其减去最小和由范围从除以原始值。将x和y的数据范围从0缩放到1之后。 的权重,使用梯度上升算法来计算,结果为

    w = 0.2493 33.7885 -36.0428 
    

    为经缩放的数据集和

    w = 0.7610 269.3073 -102.6686 
    

    为未缩放的数据。

    下图是带有刻度的数据:

    enter image description here

    的基本问题是,当我要扩展我的数据? 何时使用缩放或未缩放的数据集?

    scale data -> calc weights using scaled data -> plot using scaled or unscaled data? 
    

    calc weights using unscaled data -> plot using unscaled data? 
    

    我想逻辑函数曲线图还范围从15000到80000(X) 和从1000到5500(Y)。当我绘制未缩放版本,它看起来是这样的,因为物流功能从0到1的范围:

    unscaled logistic regression

    是否有更好的命令绘制表面?网格,trisurf?

  • 在执行线性回归,线性分类或逻辑回归之前,没有必要对数据进行归一化 - 虽然它不会造成任何伤害,但最终结果应该通过线性变换保持不变。

    我不认为你需要绘制曲面。你有二维数据f(x,y),所以要分开两个你需要一条线。

    +0

    但是当我做二维数据的分类时,我得到一个三维权重向量w。 'w0 * x0 + w1 * x1 + w2 * x2'对于使用线性分类的不同类别等于或大于零。怎样才能得到分界线而不是飞机? – evolved

    +0

    我没有这台计算机上的Matlab来测试它输出的内容,但我的猜测是第一个'w0'对应于一个偏移量,即你实际拥有的是'w0 + w1 * x1 + w2 * x2'。 – RPM