分享

【机器学习算法

 imelee 2017-01-01
def loadDataSet():  
    dataMat = []; labelMat = []  
    fr = open('/Users/hakuri/Desktop/testSet.txt')  
    for line in fr.readlines():  
        lineArr = line.strip().split()  
        dataMat.append([1.0, float(lineArr[0]), float(lineArr[1])])  
        labelMat.append(int(lineArr[2]))  
    return dataMat,labelMat  

def sigmoid(inX):  
    return 1.0/(1+exp(-inX))

返回回归系数,对应于每个特征值,for循环实现了递归梯度上升算法。

def gradAscent(dataMatIn, classLabels):  
    dataMatrix = mat(dataMatIn)             #convert to NumPy matrix  
    labelMat = mat(classLabels).transpose() #convert to NumPy matrix  

    m,n = shape(dataMatrix)  
    alpha = 0.001  
    maxCycles = 500  
    weights = ones((n,1))  

    for k in range(maxCycles):              #heavy on matrix operations  
        h = sigmoid(dataMatrix*weights)     #matrix mult  
        error = (labelMat - h)              #vector subtraction  
        weights = weights + alpha * dataMatrix.transpose()* error #matrix mult  
    return weights

 

结果,返回了特征值的回归系数。我们的数据集有两个特征值分别是x1,x2。我们又增设了了x0变量。得到的结果

[[ 4.12414349]

[ 0.48007329]

[-0.6168482 ]]

我们得出x1和x2的关系(设x0=1),0=4.12414349+0.48007329*x1-0.6168482*x2

画出x1与x2的关系图
a2

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多