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 __setattr__、 __getattr__、 __delattr__、__call__用法示例
Mar 06 Python
Python基于动态规划算法计算单词距离
Jul 25 Python
django模板语法学习之include示例详解
Dec 17 Python
实例讲解Python爬取网页数据
Jul 08 Python
python format 格式化输出方法
Jul 16 Python
Python之指数与E记法的区别详解
Nov 21 Python
Python综合应用名片管理系统案例详解
Jan 03 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
Feb 18 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
Feb 29 Python
Python reduce函数作用及实例解析
May 08 Python
python使用nibabel和sitk读取保存nii.gz文件实例
Jul 01 Python
python实现双链表
May 25 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
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
2020/04/23 PHP
JavaScript 入门·JavaScript 具有全范围的运算符
2007/10/01 Javascript
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
file模式访问网页时iframe高度自适应解决方案
2013/01/16 Javascript
javascript字母大小写转换的4个函数详解
2014/05/09 Javascript
在JavaScript中call()与apply()区别
2016/01/22 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
JS判断是否长按某一键的方法
2016/03/02 Javascript
基于jQuery ligerUI实现分页样式
2016/09/18 Javascript
JS验证 只能输入小数点,数字,负数的实现方法
2016/10/07 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
简单实现js点击展开二级菜单功能
2017/05/16 Javascript
用ES6的class模仿Vue写一个双向绑定的示例代码
2018/04/20 Javascript
vue cli2.0单页面title修改方法
2018/06/07 Javascript
express+vue+mongodb+session 实现注册登录功能
2018/12/06 Javascript
浅谈js闭包理解
2019/04/01 Javascript
JavaScript动态检测密码强度原理及实现方法详解
2019/06/11 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
js实现滑动滑块验证登录
2020/07/24 Javascript
python登录QQ邮箱发信的实现代码
2013/02/10 Python
NumPy 数学函数及代数运算的实现代码
2018/07/18 Python
python面向对象入门教程之从代码复用开始(一)
2018/12/11 Python
python和mysql交互操作实例详解【基于pymysql库】
2019/06/04 Python
Python Matplotlib 基于networkx画关系网络图
2019/07/10 Python
python利用re,bs4,requests模块获取股票数据
2019/07/29 Python
Pytorch中index_select() 函数的实现理解
2019/11/19 Python
python encrypt 实现AES加密的实例详解
2020/02/20 Python
python调用有道智云API实现文件批量翻译
2020/10/10 Python
芬兰灯具网上商店:Nettilamppu.fi
2018/06/30 全球购物
英国在线滑雪板和冲浪商店:The Board Basement
2020/01/11 全球购物
全球最大运动品牌的男装、女装和童装官方库存商:A&A Sports
2021/01/17 全球购物
安全责任书范文
2014/03/12 职场文书
推广普通话标语
2014/06/27 职场文书
二手房购房协议书范本
2014/10/05 职场文书
2015年学校信息技术工作总结
2015/05/25 职场文书