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 简易计算器程序,代码就几行
Aug 29 Python
跟老齐学Python之折腾一下目录
Oct 24 Python
在Python中操作列表之list.extend()方法的使用
May 20 Python
Djang中静态文件配置方法
Jul 30 Python
用python找出那些被“标记”的照片
Apr 20 Python
python3.4用函数操作mysql5.7数据库
Jun 23 Python
Django实现分页功能
Jul 02 Python
Django框架中序列化和反序列化的例子
Aug 06 Python
基于MATLAB和Python实现MFCC特征参数提取
Aug 13 Python
pycharm配置git(图文教程)
Aug 16 Python
Python编程快速上手——正则表达式查找功能案例分析
Feb 28 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/06/29 PHP
php静态文件生成类实例分析
2015/01/03 PHP
利用PHPExcel实现Excel文件的写入和读取
2017/04/26 PHP
js function定义函数使用心得
2010/04/15 Javascript
js鼠标左右键 键盘值小结
2010/06/11 Javascript
到处都是jQuery选择器的年代 不了解它们的性能,行吗
2012/06/18 Javascript
javascript获取函数名称、函数参数、对象属性名称的代码实例
2014/04/12 Javascript
一张Web前端的思维导图分享
2015/07/03 Javascript
Javascript实现可旋转的圆圈实例代码
2015/08/04 Javascript
使用jQuery加载html页面到指定的div实现方法
2016/07/13 Javascript
JavaScript数据结构之二叉树的删除算法示例
2017/04/13 Javascript
Vue2 模板template的四种写法总结
2018/02/23 Javascript
解决Vue axios post请求,后台获取不到数据的问题方法
2018/08/11 Javascript
js实现动态添加上传文件页面
2018/10/22 Javascript
vue中组件的3种使用方式详解
2019/03/23 Javascript
Vue+element 解决浏览器自动填充记住的账号密码问题
2019/06/11 Javascript
在vue中使用axios实现post方式获取二进制流下载文件(实例代码)
2019/12/16 Javascript
解决vue打包报错Unexpected token: punc的问题
2020/10/24 Javascript
搞笑的程序猿:看看你是哪种Python程序员
2015/06/12 Python
Pthon批量处理将pdb文件生成dssp文件
2015/06/21 Python
在主机商的共享服务器上部署Django站点的方法
2015/07/22 Python
Python 迭代器工具包【推荐】
2016/05/06 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
2018/02/10 Python
Python使用OpenCV进行标定
2018/05/08 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
python中树与树的表示知识点总结
2019/09/14 Python
python带参数打包exe及调用方式
2019/12/21 Python
使用遗传算法求二元函数的最小值
2020/02/11 Python
基于SQLAlchemy实现操作MySQL并执行原生sql语句
2020/06/10 Python
戴森美国官网:Dyson美国
2016/09/11 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2016/02/09 面试题
工作决心书
2014/03/11 职场文书
火锅店的活动方案
2014/08/15 职场文书
2014年体育部工作总结
2014/11/13 职场文书
学生病假条怎么写
2015/08/17 职场文书
中学语文教学反思
2016/02/16 职场文书