前言:在实现线性回归的基础上,继续推出逻辑回归的算法实现;本节将对比线性回归,说明逻辑回归的原理。

1、原理

注:逻辑回归,属于二分类问题,是分类算法,预测的是离散值;不是回归算法

2、实现

数据准备:https://blog.csdn.net/Carl_changxin/article/details/100857456

代码:

# 逻辑回归python实现
import numpy as np
import matplotlib.pyplot as plt# sigmoid函数(逻辑函数),也即假设函数
def sigmoid(z):return 1 / (1 + np.exp(-z))# 代价函数
def computeCost(X, Y, theta):z = X * theta.T# 训练数据个数,或者用m = y.shape[1]m = Y.sizepara1 = np.multiply(-Y, np.log(sigmoid(z)))para2 = np.multiply((1 - Y), np.log(1 - sigmoid(z)))# 代价函数YJ = 1 / m * np.sum(para1 - para2)return J# 梯度下降
def gradientDescent(X, Y, theta, alpha, iters):# cost用来记录迭代每一次的代价函数值;用长度为iters的数组记录;初始化为0cost = np.zeros(iters)# 每迭代一次,就要循环更新一次所有参数的值for i in range(iters):theta = theta - (alpha / Y.size) * ((sigmoid(X * theta.T) - Y).T * X)  # 更新theta向量cost[i] = computeCost(X, Y, theta)return theta, cost# 对训练数据预处理
def init_data(data_path):train_data = np.genfromtxt(data_path)  # <class 'numpy.ndarray'> # 新增一列x0add_b = np.ones(train_data.shape[0])train_data = np.insert(train_data, 0, values=add_b, axis=1)# 提取特征矩阵X = train_data[:, [0, 1, 2]]# 提取结果向量,列向量Y = train_data[:, [3]]# print(X, type(X)) # <class 'numpy.ndarray'># print(Y, type(Y)) # <class 'numpy.ndarray'># 矩阵和数组的区别:https://blog.csdn.net/wyl1813240346/article/details/79806207# 由于会用到矩阵的乘法运算,因此最好都转化成矩阵X = np.mat(X)Y = np.mat(Y)return X, Y, train_data# 预测函数
def predict(theta_min, predictX):probability = sigmoid(predictX * theta_min.T)return [1 if x >= 0.5 else 0 for x in probability]# 绘制原始数据
def draw_data(train_data):# 数据可视化# 将Y=0和Y=1的数据分别用不同的点显示出来# x轴和y轴分别用Y=0和Y=1各自的feature1和feature2表示# 从train_data矩阵中获取Y=0的数据Y0 = train_data[train_data[:, 3] == 0]# 从train_data矩阵中获取Y=1的数据Y1 = train_data[train_data[:, 3] == 1]# 构造Y0数据的x,y轴x_Y0, y_Y0 = Y0[:, 1], Y0[:, 2]# 获取train_data矩阵第3列,作为y轴x_Y1, y_Y1 = Y1[:, 1], Y1[:, 2]plt.scatter(x_Y0, y_Y0, c='b', label='Not Admitted')plt.scatter(x_Y1, y_Y1, c='r', marker='x', label='Admitted')plt.xlabel('feature1')plt.ylabel('feature2')return plt# 决策边界theta*x=0
def boundary(theta_min, train_data):x1 = np.arange(-4, 4, 0.01)x2 = (theta_min[0, 0] + theta_min[0, 1] * x1) / (-theta_min[0, 2])plt = draw_data(train_data)plt.title('boundary')plt.plot(x1, x2)plt.show()if __name__ == '__main__':# 获取数据X, Y, train_data = init_data('data.txt')# 设置参数theta = np.mat(np.zeros(X.shape[1]))iters = 5000alpha = 0.1# 训练数据,获取theta_mintheta_min, cost = gradientDescent(X, Y, theta, alpha, iters)print('最小参数theta向量:' + str(theta_min))# 预测数据;这里的预测数据集就采用训练数据集predictX = Xres = predict(theta_min, predictX)# 预测准确率计算correct = [1 if ((a == 1 and b == 1) or (a == 0 and b == 0)) else 0 for (a, b) in zip(res, Y)]# map()函数将correct转化为全部为int的列表accuracy = (sum(map(int, correct)) % len(correct))print('accuracy = {0}%'.format(accuracy))# draw_data(train_data)boundary(theta_min, train_data)

结果图:

python实现逻辑回归算法相关推荐

  1. Python使用逻辑回归算法根据三围数据判断用户性别

    逻辑回归算法是一种经典的分类算法,使用时应注意: 1)样本需要足够多. 2)样本的多个特征之间尽量不要存在线性相关性. 问题描述: 根据三围数据判断用户性别.假设男性和女性的三围和身高的计算公式如下: ...

  2. python实现逻辑回归算法_逻辑回归算法的实现

    前言 在之前的学习中,我们已经学习了逻辑回归算法的具体数学原理及其简单的推导过程,现在,我们可以用python实现逻辑回归的算法了. 环境 python3.6 jupyter-notebook 绘制数 ...

  3. Python机器学习:逻辑回归算法以及多类分类

    向AI转型的程序员都关注了这个号

  4. Python+sklearn使用逻辑回归算法预测期末考试能否及格

    封面图片:<Python程序设计实验指导书>,董付国编著,清华大学出版社 ================= 虽然名字中带有"回归"二字,但实际上逻辑回归是一个用于分类 ...

  5. 算法笔记(11)逻辑回归算法及Python代码实现

    逻辑回归算法是一种被广泛使用的分类算法,通过训练数据中的正负样本,学习样本特征到样本标签之间的假设函数.逻辑回归假设因变量 y 服从伯努利分布,而线性回归假设因变量 y 服从高斯分布. 因此与线性回归 ...

  6. 【机器学习入门】(9) 逻辑回归算法:原理、精确率、召回率、实例应用(癌症病例预测)附python完整代码和数据集

    各位同学好,今天我和大家分享一下python机器学习中的逻辑回归算法.内容主要有: (1) 算法原理:(2) 精确率和召回率:(3) 实例应用--癌症病例预测. 文末有数据集和python完整代码 1 ...

  7. 逻辑回归算法c语言_逻辑回归算法背后的数学

    逻辑回归算法背后的数学 看完深蓝学院的机器学习公开课后,对于逻辑回归部分,打算写篇学习笔记记录总结一下,也和大家共同分享. 1 基本思能 逻辑回归(Logistic Regression)和线性回归( ...

  8. 基于逻辑回归算法模型搭建思路

    在真实工作场景中,有多种算法依据借贷数据集建立模型,主要使用的算法有逻辑回归.神经网络.决策树.贝叶斯信念网.GBDT算法等,本系列文章旨在为刚入门和对模型感兴趣的同学介绍传统风控模型算法之一--逻辑 ...

  9. 线性回归和逻辑回归的区别_Spark实现线性回归与逻辑回归算法

    一.线性回归算法简介 线性回归(Linear Regression)是利用线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析.这种函数是一个或多个称为回归系数的模型参数 ...

  10. 机器学习笔记(10)——逻辑回归算法优化之随机梯度下降法

    在上一篇文章<机器学习笔记(9)--深入理解逻辑回归算法及其Python实现>中,详细学习了逻辑回归算法的分类原理和使用梯度下降法来最小化损失函数的数学推导过程,从而拟合出分类函数的参数θ ...

最新文章

  1. 加速AI应用落地,英特尔AI 2.0的进阶之道
  2. kafka数据 落盘_Kafka架构原理?也就这么回事!
  3. android调试推荐使用BlueStacks模拟器调试Android应用
  4. uniapp动态修改样式_uniapp样式动态绑定
  5. HTML中禁用表单控件的两种方法readonly与disabled
  6. 数据仓库ETL(二)基本概念
  7. 【数据结构】线性处理字符串中指定字串的个数问题
  8. 消息队列控制灯代码_基于ARM的智能灯光控制系统经验总结分享
  9. Centos7 下安装tomcat7
  10. lisp 标注螺纹孔_cad螺纹孔怎么标注
  11. linux 内核代码阅读工具,linux内核源码阅读工具
  12. win10关闭windows聚焦_Windows聚焦功能无法使用怎么办_win10锁屏聚焦功能不更新教程 - 系统家园...
  13. c语言:用牛顿迭代法求方程在1.5附近的根:2x^3-4x^2+3x-6=0.
  14. 《思考的技巧》- 学习总结
  15. python文件自动化处理 -- 读写文件
  16. 数论 —— 逆元与同余式定理
  17. OL3实现空间查询的代码示例
  18. 运动无线耳机哪个品牌比较好、口碑最好的运动蓝牙耳机
  19. 来自 采摘~~ Python
  20. canvas绘制星空底图

热门文章

  1. 【2022西电A测】温度检测控制仿真系统
  2. Python爬虫,4567电影网电影信息爬取,二级页面处理方案
  3. dtcms php,GitHub - k-dou/dtcms: 基于thinkphp5.1 的CMS,可快速搭建博客、企业站。
  4. 二分法求函数的解(函数零点)
  5. 中心极限与大数定理律的关系_21厦大数学考研 | 数列与函数极限复习建议!
  6. 卡尔曼滤波算法--C语言实现
  7. 金仓数据库KingbaseES中 数据库实例命令
  8. 【聚类模型①】k均值聚类算法
  9. 基于STM32设计的WiFi语音播报日程表
  10. 对称正定矩阵的Cholesky分解