ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

20 机器学习 - Lineage逻辑回归算法分类案例

2021-07-08 09:56:52  阅读:221  来源: 互联网

标签:Lineage dataMatrix 20 sigmoid 算法 weights x2 labelMat x1


需求

对给定的先验数据集,使用logistic回归算法对新数据分类
在这里插入图片描述

代码实现

1.定义sigmoid函数

def loadDataSet():
    dataMat = []; labelMat = []
    fr = open('d:/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))

2.返回回归系数

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

def gradAscent(dataMatIn, classLabels):
    dataMatrix = mat(dataMatIn)             #将先验数据集转换为NumPy 矩阵
    labelMat = mat(classLabels).transpose()  #将先验数据的类标签转换为NumPy 矩阵
    
    m,n = shape(dataMatrix)
    alpha = 0.001      #设置逼近步长调整系数
    maxCycles = 500   #设置最大迭代次数为500
    weights = ones((n,1))     #weights即为需要迭代求解的参数向量
    
    for k in range(maxCycles):              #heavy on matrix operations
        h = sigmoid(dataMatrix*weights)     #代入样本向量求得“样本y”sigmoid转换值
        error = (labelMat - h)              #求差
        weights = weights + alpha * dataMatrix.transpose()* error  #根据差值调整参数向量
    return weights

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

[[ 4.12414349]
 [ 0.48007329]
 [-0.6168482 ]]

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

3.线性拟合线

画出x1与x2的关系图——线性拟合线
在这里插入图片描述

标签:Lineage,dataMatrix,20,sigmoid,算法,weights,x2,labelMat,x1
来源: https://blog.51cto.com/u_15294985/3007705

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有