【3】机器学习实战 第五章 logistic回归

1.getA()方法



def plotBestFit(weights):
    dataMat, labelMat = loadDataSet()
    dataArr           = array(dataMat)              #将每个数据点的x,y坐标存为矩阵的形式
    n                 = shape(dataArr)[0]           #取其行数,也即数据点的个数
    #======画数据点
    xcord1 = []
    ycord1 = []    
    xcord2 = []
    ycord2 = []
    for i in range(n):
        if int(labelMat[i]) == 1:                   #若是正例,存到(x1,y1)中
            xcord1.append(dataArr[i,1])
            ycord1.append(dataArr[i,2])
        else:
            xcord2.append(dataArr[i,1])
            ycord2.append(dataArr[i,2])
    fig = plt.figure()
    ax  = fig.add_subplot(111)
    ax.scatter(xcord1,ycord1,s=30,c="red",marker = "s")
    ax.scatter(xcord2,ycord2,s=30,c="green")
    #============
    x = arange(-3.0,3.0,0.1)                    #x为numpy.arange格式,并且以0.1为步长从-3.0到3.0切分。
    #拟合曲线为0 = w0*x0+w1*x1+w2*x2, 故x2 = (-w0*x0-w1*x1)/w2, x0为1,x1为x, x2为y,故有
    y = (-weights[0] - weights[1]*x)/weights[2] 
    #x为array格式,weights为matrix格式,故需要调用getA()方法,其将matrix()格式矩阵转为array()格式
    ax.plot(x,y)
    plt.xlabel("X1")
    plt.ylabel("X2")
    plt.show()
dataMat, labelMat = loadDataSet()
weights = gradAscent(dataMat, labelMat)
#getA()方法,其将matrix()格式矩阵转为array()格式,type(weights),type(weights.getA())可观察到。
plotBestFit(weights.getA())

getA()是什么的问题,解释如下:
matrix.getA()
Return self as an ndarray object.
Equivalent to np.asarray(self).
Parameters: None
Returns: ret : ndarrayself as an ndarray
也就是说矩阵通过这个getA()这个方法可以将自身返回成一个n维数组对象
为什么要这样做呢?
因为plotBestFit()函数中有计算散点x,y坐标的部分,其中计算y的时候用到了weights,如果weights是矩阵的话,weights[1]就是[[0.48007329]](注意这里有中括号!),就不是一个数了,最终你会发现y的计算结果的len()只有1,而x的len()则是60

2.数据处理时,若遇到缺失值时的处理办法

  • 使用可用特征的时均值来填补缺失值
  • 使用特殊值来填充,如-1
  • 忽略缺失值的样本
  • 使用相似的样本均值来填补缺失值
  • 使用机器学习的算法来预测缺失值

3.

该算法的主要思想是:根据现有数据对分类边界线建立回归公式,以此分类(二值分类、也称概率分类利用sigmoid函数)。这里的回归指的最佳拟合,表示要找到最佳的参数集,训练的过程就是寻找最佳参数的过程。

优点:计算代价不高,容易理解和计算。

缺点:欠拟合,分类精度可能不高。

适用数值型和标称型数据

4.

最优化算法:如梯度上升(求最大值)或是梯度下降(求最小值),求梯度要求在定义的点上有定义且可微,在梯度迭代过程中总能使我们找到最佳的路径。

梯度下降算法
w=wαf(w)

梯度上升算法
w=w+αf(w)

5.

梯度下降(上升)算法每次更新回归系数都要遍历整个数据集,而随机梯度下降(上升)算法是梯度下降算法的改进型,一次只用一个样本来更新回归系数,从而占用更少的计算资源。由于可以在新的样本到来时对分类器进行增量式更新,因此随机梯度算法是一个在线学习算法。








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值