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基于xmlrpc实现二进制文件传输的方法
Jun 02 Python
自动化Nginx服务器的反向代理的配置方法
Jun 28 Python
Python的Tornado框架实现异步非阻塞访问数据库的示例
Jun 30 Python
python 3.5下xadmin的使用及修复源码bug
May 10 Python
Python标准模块--ContextManager上下文管理器的具体用法
Nov 27 Python
分享6个隐藏的python功能
Dec 07 Python
python算法与数据结构之单链表的实现代码
Jun 27 Python
Python求平面内点到直线距离的实现
Jan 19 Python
Python Charles抓包配置实现流程图解
Sep 29 Python
python 装饰器的使用示例
Oct 10 Python
python解决12306登录验证码的实现
Apr 18 Python
只需要这一行代码就能让python计算速度提高十倍
May 24 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存储过程调用实例代码
2013/02/03 PHP
PHP设计模式之装饰者模式代码实例
2015/05/11 PHP
PHP小程序支付功能完整版【基于thinkPHP】
2019/03/26 PHP
jQuery 使用手册(五)
2009/09/23 Javascript
Javascript拓展String方法小结
2013/07/08 Javascript
使用jQuery异步加载 JavaScript脚本解决方案
2014/04/20 Javascript
javascript判断数组内是否重复的方法
2015/04/21 Javascript
js网页滚动条滚动事件实例分析
2015/05/05 Javascript
在JS方法中返回多个值的方法汇总
2015/05/20 Javascript
JS+CSS实现仿msn风格选项卡效果代码
2015/10/22 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
jquery实现超简单的瀑布流布局【推荐】
2017/03/08 Javascript
详解使用nvm管理多版本node的方法
2017/08/30 Javascript
jQuery实现下拉菜单动态添加数据点击滑出收起其他功能
2018/06/14 jQuery
vue中子组件调用兄弟组件方法
2018/07/06 Javascript
jquery.param()实现数组或对象的序列化方法
2018/10/08 jQuery
ES6入门教程之let、const的使用方法
2019/04/13 Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
2020/02/16 Javascript
[42:39]老党炸弹人试玩视频
2014/09/03 DOTA
日常整理python执行系统命令的常见方法(全)
2015/10/22 Python
浅谈python numpy中nonzero()的用法
2018/04/02 Python
Python带动态参数功能的sqlite工具类
2018/05/26 Python
python调用百度语音识别api
2018/08/30 Python
Python爬虫小技巧之伪造随机的User-Agent
2018/09/13 Python
python2和python3的输入和输出区别介绍
2018/11/20 Python
python实现事件驱动
2018/11/21 Python
python循环定时中断执行某一段程序的实例
2019/06/29 Python
Python的几种主动结束程序方式
2019/11/22 Python
Python手绘可视化工具cutecharts使用实例
2019/12/05 Python
python实现横向拼接图片
2020/03/23 Python
迪奥官网:Dior.com
2018/12/04 全球购物
几个人围成一圈的问题
2013/09/26 面试题
大专生自荐信
2013/10/04 职场文书
大学生专科学习生活的自我评价
2013/12/07 职场文书
捐赠仪式主持词
2014/03/19 职场文书
2015年除四害工作总结
2015/07/23 职场文书