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使用MySQLdb for Python操作数据库教程
Oct 11 Python
python机器学习理论与实战(五)支持向量机
Jan 19 Python
解决Python2.7中IDLE启动没有反应的问题
Nov 30 Python
python 实现得到当前时间偏移day天后的日期方法
Dec 31 Python
使用Pyinstaller转换.py文件为.exe可执行程序过程详解
Aug 06 Python
python实现树的深度优先遍历与广度优先遍历详解
Oct 26 Python
python lambda函数及三个常用的高阶函数
Feb 05 Python
python中JWT用户认证的实现
May 18 Python
使用python实现名片管理系统
Jun 18 Python
python pillow库的基础使用教程
Jan 13 Python
python实现简单的学生管理系统
Feb 22 Python
pytorch 计算Parameter和FLOP的操作
Mar 04 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.ini中文版(2)
2006/10/09 PHP
Admin generator, filters and I18n
2011/10/06 PHP
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
2013/06/05 PHP
限制ckeditor上传图片文件大小的方法
2013/11/15 PHP
PHP使用缓存即时输出内容(output buffering)的方法
2015/08/03 PHP
thinkphp3.x中cookie方法的用法分析
2016/05/19 PHP
PHP最常用的正则表达式
2017/02/13 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
laravel 配置路由 api和web定义的路由的区别详解
2019/09/03 PHP
一个简单的JS鼠标悬停特效具体方法
2013/06/17 Javascript
js之onload事件的一点使用心得
2013/08/14 Javascript
javascript 终止函数执行操作
2014/02/14 Javascript
javascript每日必学之基础入门
2016/02/16 Javascript
JavaScript6 let 新语法优势介绍
2016/07/15 Javascript
JavaScript 继承详解(五)
2016/10/11 Javascript
Node.js获取前端ajax提交的request信息
2017/02/20 Javascript
使用clipboard.js实现复制功能的示例代码
2017/10/16 Javascript
jQuery实现点击下拉框中的值累加到文本框中的方法示例
2017/10/28 jQuery
解决Vue中mounted钩子函数获取节点高度出错问题
2018/05/18 Javascript
JavaScript 性能提升之路(推荐)
2019/04/10 Javascript
新手入门带你学习JavaScript引擎运行原理
2019/06/24 Javascript
js实现从右往左匀速显示图片(无缝轮播)
2020/06/29 Javascript
vue实现移动端拖动排序
2020/08/21 Javascript
Python json 错误xx is not JSON serializable解决办法
2017/03/15 Python
PyTorch快速搭建神经网络及其保存提取方法详解
2018/04/28 Python
python pprint模块中print()和pprint()两者的区别
2020/02/10 Python
Python执行时间的几种计算方法
2020/07/31 Python
python 解决Windows平台上路径有空格的问题
2020/11/10 Python
中国茶叶、茶具一站式网上购物商城:醉品茶城
2018/07/03 全球购物
学生会主席竞聘书
2014/03/31 职场文书
试用期转正员工自我评价
2014/09/18 职场文书
见习报告的格式
2014/11/04 职场文书
Python爬虫数据的分类及json数据使用小结
2021/03/29 Python
Python合并多张图片成PDF
2021/06/09 Python
Python实现位图分割的效果
2021/11/20 Python
nginx.conf配置文件结构小结
2022/04/08 Servers