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 相关文章推荐
wxPython窗口的继承机制实例分析
Sep 28 Python
Python 多核并行计算的示例代码
Nov 07 Python
CentOS 6.5中安装Python 3.6.2的方法步骤
Dec 03 Python
Python判断两个对象相等的原理
Dec 12 Python
Python实现通讯录功能
Feb 22 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
Apr 18 Python
利用Python yagmail三行代码实现发送邮件
May 11 Python
如何在python字符串中输入纯粹的{}
Aug 22 Python
对python多线程中Lock()与RLock()锁详解
Jan 11 Python
Python Django2.0集成Celery4.1教程
Nov 19 Python
Python 中数组和数字相乘时的注意事项说明
May 10 Python
移除Selenium中window.navigator.webdriver值
Jun 10 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计算给定时间之前的函数用法实例
2015/04/03 PHP
PHP基于phpqrcode生成带LOGO图像的二维码实例
2015/07/10 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
javascript 定义新对象方法
2010/02/20 Javascript
js对数字的格式化使用说明
2011/01/12 Javascript
jquery.tmpl JQuery模板插件
2011/10/10 Javascript
JS处理json日期格式化问题
2015/10/01 Javascript
基于AngularJS+HTML+Groovy实现登录功能
2016/02/17 Javascript
jQuery 实现ajax传入参数含有特殊字符的方法总结
2016/10/17 Javascript
JQuery和PHP结合实现动态进度条上传显示
2016/11/23 Javascript
JS简单实现表格排序功能示例
2016/12/20 Javascript
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
2017/02/06 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
2017/12/20 Javascript
webpack4.0打包优化策略整理小结
2018/03/30 Javascript
Vue列表渲染的示例代码
2018/11/01 Javascript
Vue插槽原理与用法详解
2019/03/05 Javascript
详解Vue.js中引入图片路径的几种方式
2019/06/17 Javascript
Vue实现商品详情页的评价列表功能
2019/09/04 Javascript
如何基于js判断浏览器版本
2020/02/20 Javascript
用VsCode编辑TypeScript的实现方法
2020/05/07 Javascript
vue+elementUI中表格高亮或字体颜色改变操作
2020/11/02 Javascript
Python获取任意xml节点值的方法
2015/05/05 Python
python实现数据图表
2017/07/29 Python
python 调用有道api接口的方法
2019/01/03 Python
pyenv与virtualenv安装实现python多版本多项目管理
2019/08/17 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
2020/01/15 Python
详解字符串在Python内部是如何省内存的
2020/02/03 Python
Desigual德国官网:在线购买原创服装
2018/03/27 全球购物
社区志愿者活动总结
2014/06/26 职场文书
大学感恩节活动策划方案
2014/10/11 职场文书
2015年暑期社会实践方案
2015/07/14 职场文书
九年级数学教学反思
2016/02/17 职场文书
PHP中strval()函数实例用法
2021/06/07 PHP
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python