Python实现的逻辑回归算法示例【附测试csv文件下载】


Posted in Python onDecember 28, 2018

本文实例讲述了Python实现的逻辑回归算法。分享给大家供大家参考,具体如下:

使用python实现逻辑回归
Using Python to Implement Logistic Regression Algorithm

菜鸟写的逻辑回归,记录一下学习过程

代码:

#encoding:utf-8
"""
 Author:  njulpy
 Version:  1.0
 Data:  2018/04/10
 Project: Using Python to Implement LogisticRegression Algorithm
"""
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
#建立sigmoid函数
def sigmoid(x):
 x = x.astype(float)
 return 1./(1+np.exp(-x))
#训练模型,采用梯度下降算法
def train(x_train,y_train,num,alpha,m,n):
 beta = np.ones(n)
 for i in range(num):
  h=sigmoid(np.dot(x_train,beta)) #计算预测值
  error = h-y_train.T    #计算预测值与训练集的差值
  delt=alpha*(np.dot(error,x_train))/m #计算参数的梯度变化值
  beta = beta - delt
  #print('error',error)
 return beta
def predict(x_test,beta):
 y_predict=np.zeros(len(y_test))+0.5
 s=sigmoid(np.dot(beta,x_test.T))
 y_predict[s < 0.34] = 0
 y_predict[s > 0.67] = 1
 return y_predict
def accurancy(y_predict,y_test):
 acc=1-np.sum(np.absolute(y_predict-y_test))/len(y_test)
 return acc
if __name__ == "__main__":
 data = pd.read_csv('iris.csv')
 x = data.iloc[:,1:5]
 y = data.iloc[:,5].copy()
 y.loc[y== 'setosa'] = 0
 y.loc[y== 'versicolor'] = 0.5
 y.loc[y== 'virginica'] = 1
 x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.3,random_state=15)
 m,n=np.shape(x_train)
 alpha = 0.01
 beta=train(x_train,y_train,1000,alpha,m,n)
 pre=predict(x_test,beta)
 t = np.arange(len(x_test))
 plt.figure()
 p1 = plt.plot(t,pre)
 p2 = plt.plot(t,y_test,label='test')
 label = ['prediction', 'true']
 plt.legend(label, loc=1)
 plt.show()
 acc=accurancy(pre,y_test)
 print('The predicted value is ',pre)
 print('The true value is ',np.array(y_test))
 print('The accuracy rate is ',acc)

输出结果:

The predicted value is  [ 0.   0.5  1.   0.   0.   1.   1.   0.5  1.   1.   1.   0.5  0.5  0.5  1.
  0.   0.5  1.   0.   1.   0.5  0.   0.5  0.5  0.   0.   1.   1.   1.   1.
  0.   1.   1.   1.   0.   0.   1.   0.   0.   0.5  1.   0.   0.   0.5  1. ]
The true value is  [0 0.5 0.5 0 0 0.5 1 0.5 0.5 1 1 0.5 0.5 0.5 1 0 0.5 1 0 1 0.5 0 0.5 0.5 0
 0 1 1 1 0.5 0 1 0.5 1 0 0 1 0 0 0.5 1 0 0 0.5 1]
The accuracy rate is  0.9444444444444444

Python实现的逻辑回归算法示例【附测试csv文件下载】

附:上述示例中的iris.csv文件点击此处本站下载

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python学习之matplotlib绘制散点图实例
Dec 09 Python
手把手教你python实现SVM算法
Dec 27 Python
理论讲解python多进程并发编程
Feb 09 Python
PyCharm+PySpark远程调试的环境配置的方法
Nov 29 Python
python写程序统计词频的方法
Jul 29 Python
Python3 文章标题关键字提取的例子
Aug 26 Python
python 单线程和异步协程工作方式解析
Sep 28 Python
一文了解python 3 字符串格式化 F-string 用法
Mar 04 Python
文件上传服务器-jupyter 中python解压及压缩方式
Apr 22 Python
matplotlib基础绘图命令之errorbar的使用
Aug 13 Python
python实现逻辑回归的示例
Oct 09 Python
Django使用django-simple-captcha做验证码的实现示例
Jan 07 Python
python 检查是否为中文字符串的方法
Dec 28 #Python
浅谈python3发送post请求参数为空的情况
Dec 28 #Python
python3使用flask编写注册post接口的方法
Dec 28 #Python
python通过tcp发送xml报文的方法
Dec 28 #Python
对python 生成拼接xml报文的示例详解
Dec 28 #Python
Python 3.x基于Xml数据的Http请求方法
Dec 28 #Python
python模拟登陆,用session维持回话的实例
Dec 27 #Python
You might like
PHP+DBM的同学录程序(3)
2006/10/09 PHP
php下关于Cannot use a scalar value as an array的解决办法
2010/08/08 PHP
php操作xml入门之cdata区段
2015/01/23 PHP
ThinkPHP控制器详解
2015/07/27 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
2016/03/07 PHP
Zend Framework入门教程之Zend_View组件用法示例
2016/12/09 PHP
dojo 之基础篇(三)之向服务器发送数据
2007/03/24 Javascript
用JavaScript 处理 URL 的两个函数代码
2007/08/13 Javascript
初识JQuery 实例一(first)
2011/03/16 Javascript
JS TextArea字符串长度限制代码集合
2012/10/31 Javascript
JavaScript实现班级随机点名小应用需求的具体分析
2014/05/12 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
javascript学习笔记(八)正则表达式
2014/10/08 Javascript
jQuery实现图片向左向右切换效果的简单实例
2016/05/18 Javascript
Javascript实现倒计时时差效果
2017/05/18 Javascript
VUE重点问题总结
2018/03/19 Javascript
mpvue构建小程序的方法(步骤+地址)
2018/05/22 Javascript
vuejs 制作背景淡入淡出切换动画的实例
2018/09/01 Javascript
Vue 事件处理操作实例详解
2019/03/05 Javascript
浅谈Vuex注入Vue生命周期的过程
2019/05/20 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
关于引入vue.js 文件的知识点总结
2020/01/28 Javascript
js实现点赞效果
2020/03/16 Javascript
[56:35]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第二局
2016/02/27 DOTA
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
python2.7实现爬虫网页数据
2018/05/25 Python
Python 经典面试题 21 道【不可错过】
2018/09/21 Python
python 输出所有大小写字母的方法
2019/01/02 Python
django-rest-framework 自定义swagger过程详解
2019/07/18 Python
Python中 CSV格式清洗与转换的实例代码
2019/08/29 Python
新建文件时Pycharm中自动设置头部模板信息的方法
2020/04/17 Python
浅谈HTML5 Web Worker的使用
2018/01/05 HTML / CSS
法制宣传教育方案
2014/05/09 职场文书
2014年管理工作总结
2014/11/22 职场文书
redis配置文件中常用配置详解
2021/04/14 Redis
试用1103暨1103、1101同门大比武 [ DAIWEI ]
2022/04/05 无线电