python实现梯度下降和逻辑回归


Posted in Python onMarch 24, 2020

本文实例为大家分享了python实现梯度下降和逻辑回归的具体代码,供大家参考,具体内容如下

import numpy as np
import pandas as pd
import os
 
data = pd.read_csv("iris.csv") # 这里的iris数据已做过处理
m, n = data.shape
dataMatIn = np.ones((m, n))
dataMatIn[:, :-1] = data.ix[:, :-1]
classLabels = data.ix[:, -1]
 
# sigmoid函数和初始化数据
def sigmoid(z):
 return 1 / (1 + np.exp(-z))
 
# 随机梯度下降
def Stocgrad_descent(dataMatIn, classLabels):
 dataMatrix = np.mat(dataMatIn) # 训练集
 labelMat = np.mat(classLabels).transpose() # y值
 m, n = np.shape(dataMatrix) # m:dataMatrix的行数,n:dataMatrix的列数
 weights = np.ones((n, 1)) # 初始化回归系数(n, 1)
 alpha = 0.001 # 步长
 maxCycle = 500 # 最大循环次数
 epsilon = 0.001
 error = np.zeros((n,1))
 for i in range(maxCycle):
  for j in range(m):
   h = sigmoid(dataMatrix * weights) # sigmoid 函数
   weights = weights + alpha * dataMatrix.transpose() * (labelMat - h) # 梯度
  if np.linalg.norm(weights - error) < epsilon:
   break
  else:
   error = weights
  return weights
 
# 逻辑回归
def pred_result(dataMatIn):
 dataMatrix = np.mat(dataMatIn)
 r = Stocgrad_descent(dataMatIn, classLabels)
 p = sigmoid(dataMatrix * r) # 根据模型预测的概率
 
 # 预测结果二值化
 pred = []
 for i in range(len(data)):
  if p[i] > 0.5:
   pred.append(1)
  else:
   pred.append(0)
 data["pred"] = pred
 os.remove("data_and_pred.csv") # 删除List_lost_customers数据集 # 第一次运行此代码时此步骤不要
 data.to_csv("data_and_pred.csv", index=False, encoding="utf_8_sig") # 数据集保存
pred_result(dataMatIn)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的列表知识点汇总
Apr 14 Python
Python 查找字符在字符串中的位置实例
May 02 Python
Python系统监控模块psutil功能与经典用法分析
May 24 Python
Python计算时间间隔(精确到微妙)的代码实例
Feb 26 Python
详解python算法之冒泡排序
Mar 05 Python
10 行Python 代码实现 AI 目标检测技术【推荐】
Jun 14 Python
python制作简单五子棋游戏
Jun 18 Python
Python中那些 Pythonic的写法详解
Jul 02 Python
Django和Flask框架优缺点对比
Oct 24 Python
tensorflow模型继续训练 fineturn实例
Jan 21 Python
详解Python中第三方库Faker
Sep 25 Python
matplotlib绘制正余弦曲线图的实现
Feb 22 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
Mar 24 #Python
python使用梯度下降算法实现一个多线性回归
Mar 24 #Python
PyQt5+python3+pycharm开发环境配置教程
Mar 24 #Python
python实现最速下降法
Mar 24 #Python
python实现梯度法 python最速下降法
Mar 24 #Python
PyQt5+Pycharm安装和配置图文教程详解
Mar 24 #Python
python实现梯度下降法
Mar 24 #Python
You might like
PHP 杂谈《重构-改善既有代码的设计》之五 简化函数调用
2012/05/07 PHP
php中使用临时表查询数据的一个例子
2013/02/03 PHP
Php-Redis安装测试笔记
2015/03/05 PHP
基于Swoole实现PHP与websocket聊天室
2016/08/03 PHP
Laravel框架实现超简单的分页效果示例
2019/02/08 PHP
Jquery中获取iframe的代码
2011/01/11 Javascript
JQuery操作Select的Options的Bug(IE8兼容性视图模式)
2013/04/21 Javascript
JS实现div居中示例
2014/04/17 Javascript
Svg.js实例教程及使用手册详解(一)
2016/05/16 Javascript
jQuery Easyui datagrid editor为combobox时指定数据源实例
2016/12/19 Javascript
JavaScript cookie详解及简单实例应用
2016/12/31 Javascript
浅谈js-FCC算法Friendly Date Ranges(详解)
2017/04/10 Javascript
解决layui页面按钮点击无反应,也不报错的问题
2019/09/29 Javascript
vue.js路由mode配置之去掉url上默认的#方法
2019/11/01 Javascript
JavaScript实现PC端横向轮播图
2020/02/07 Javascript
微信小程序实现日历签到
2020/09/21 Javascript
编写Python脚本使得web页面上的代码高亮显示
2015/04/24 Python
Python常用库推荐
2016/12/04 Python
Python实现的三层BP神经网络算法示例
2018/02/07 Python
VSCode下好用的Python插件及配置
2018/04/06 Python
利用python实现周期财务统计可视化
2019/08/25 Python
python线程的几种创建方式详解
2019/08/29 Python
Python 50行爬虫抓取并处理图灵书目过程详解
2019/09/20 Python
python爬虫学习笔记之pyquery模块基本用法详解
2020/04/09 Python
各大浏览器 CSS3 和 HTML5 兼容速查表 图文
2010/04/01 HTML / CSS
HTML5中的nav标签学习笔记
2016/06/24 HTML / CSS
Sixt美国租车:高端豪华车型自驾体验
2017/09/02 全球购物
Lacoste(法国鳄鱼)加拿大官网:以标志性的POLO衫而闻名
2019/05/15 全球购物
什么是三层交换,说说和路由的区别在那里
2014/09/01 面试题
简历中自我评价分享
2013/10/09 职场文书
劳动工资科岗位职责范本
2014/03/02 职场文书
涉密人员保密承诺书
2014/05/28 职场文书
2014年班组建设工作总结
2014/12/01 职场文书
小学老师对学生的评语
2014/12/29 职场文书
小学教师师德培训心得体会
2016/01/09 职场文书
MySQL GTID复制的具体使用
2022/05/20 MySQL