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中的进程分支fork和exec详解
Apr 11 Python
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
Jul 04 Python
Python+Selenium自动化实现分页(pagination)处理
Mar 31 Python
python: line=f.readlines()消除line中\n的方法
Mar 19 Python
python自动截取需要区域,进行图像识别的方法
May 17 Python
python实现机器学习之多元线性回归
Sep 06 Python
python 将列表中的字符串连接成一个长路径的方法
Oct 23 Python
python tkinter canvas 显示图片的示例
Jun 13 Python
python 使用装饰器并记录log的示例代码
Jul 12 Python
Django Form 实时从数据库中获取数据的操作方法
Jul 25 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
Oct 15 Python
python和anaconda的区别
May 06 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 OPCode缓存 APC详细介绍
2010/10/12 PHP
PHP操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
phpmyadmin出现Cannot start session without errors问题解决方法
2014/08/14 PHP
Yii扩展组件编写方法实例分析
2015/06/29 PHP
PHP中set error handler函数用法小结
2015/11/11 PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
2015/12/25 PHP
php实现xml与json之间的相互转换功能实例
2016/07/07 PHP
jquery 仿QQ校友的DIV模拟窗口效果源码
2010/03/24 Javascript
6款新颖的jQuery和CSS3进度条插件推荐
2013/03/05 Javascript
javascript使用定时函数实现跳转到某个页面
2013/12/25 Javascript
纯JS实现动态时间显示代码
2014/02/08 Javascript
js事件绑定快捷键以ctrl+k为例
2014/09/30 Javascript
javascript实现修改微信分享的标题内容等
2014/12/11 Javascript
JavaScript使用push方法添加一个元素到数组末尾用法实例
2015/04/06 Javascript
AngularJS基础学习笔记之表达式
2015/05/10 Javascript
使用jquery实现鼠标滑过弹出更多相关信息层附源码下载
2015/11/23 Javascript
详解从Vue-router到html5的pushState
2018/07/21 Javascript
webpack css加载和图片加载的方法示例
2018/09/11 Javascript
angularJs select绑定的model取不到值的解决方法
2018/10/08 Javascript
JS中的算法与数据结构之列表(List)实例详解
2019/08/16 Javascript
vue中axios的二次封装实例讲解
2019/10/14 Javascript
前端开发之便利店收银系统代码
2019/12/27 Javascript
vue基于better-scroll实现左右联动滑动页面
2020/06/30 Javascript
Vue SPA 首屏优化方案
2021/02/26 Vue.js
[06:53]2018DOTA2国际邀请赛寻真——为复仇而来的Newbee
2018/08/15 DOTA
在Python中处理字符串之isdigit()方法的使用
2015/05/18 Python
python决策树之C4.5算法详解
2017/12/20 Python
pandas进行时间数据的转换和计算时间差并提取年月日
2019/07/06 Python
Python中and和or如何使用
2020/05/28 Python
Python如何在main中调用函数内的函数方式
2020/06/01 Python
python中字典增加和删除使用方法
2020/09/30 Python
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
总裁办公室主任职责
2014/01/02 职场文书
2015年党员公开承诺书范文
2015/01/22 职场文书
Nginx如何配置Http、Https、WS、WSS的方法步骤
2021/05/11 Servers
MySQL一劳永逸永久支持输入中文的方法实例
2022/08/05 MySQL