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 相关文章推荐
Python3中多线程编程的队列运作示例
Apr 16 Python
python实现连接mongodb的方法
May 08 Python
Python利用递归和walk()遍历目录文件的方法示例
Jul 14 Python
详解使用 pyenv 管理多个版本 python 环境
Oct 19 Python
matplotlib简介,安装和简单实例代码
Dec 26 Python
python3实现公众号每日定时发送日报和图片
Feb 24 Python
简单了解python关系(比较)运算符
Jul 08 Python
python多线程同步实例教程
Aug 11 Python
关于Python核心框架tornado的异步协程的2种方法详解
Aug 28 Python
Python 图像对比度增强的几种方法(小结)
Sep 25 Python
python实现简单井字棋小游戏
Mar 05 Python
如何在mac版pycharm选择python版本
Jul 21 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超级全局变量
2010/01/26 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
注意:php5.4删除了session_unregister函数
2013/08/05 PHP
PHP二维数组排序的3种方法和自定义函数分享
2014/04/09 PHP
PHP获取一年中每个星期的开始和结束日期的方法
2015/02/12 PHP
详解WordPress中创建和添加过滤器的相关PHP函数
2015/12/29 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
2016/06/29 PHP
PHP模版引擎原理、定义与用法实例
2019/03/29 PHP
php函数式编程简单示例
2019/08/08 PHP
基于Jquery的标签智能验证实现代码
2010/12/27 Javascript
js文本框输入点回车触发确定兼容IE、FF等
2013/11/19 Javascript
基于NodeJS的前后端分离的思考与实践(四)安全问题解决方案
2014/09/26 NodeJs
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
2014/10/16 Javascript
jQuery中的pushStack实现原理和应用实例
2015/02/03 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
2016/04/29 Javascript
JSP基于Bootstrap分页显示实例解析
2016/06/12 Javascript
jQuery post数据至ashx实例详解
2016/11/18 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
2017/04/11 Javascript
EasyUI中的dataGrid的行内编辑
2017/06/22 Javascript
详解Vue打包优化之code spliting
2018/04/09 Javascript
原生JS+HTML5实现跟随鼠标一起流动的粒子动画效果
2018/05/03 Javascript
JS实现的3des+base64加密解密算法完整示例
2018/05/18 Javascript
Python多线程学习资料
2012/12/19 Python
在Python中封装GObject模块进行图形化程序编程的教程
2015/04/14 Python
Python中使用platform模块获取系统信息的用法教程
2016/07/08 Python
Python排序算法之选择排序定义与用法示例
2018/04/29 Python
Django中信号signals的简单使用方法
2019/07/04 Python
python 等差数列末项计算方式
2020/05/03 Python
python requests包的request()函数中的参数-params和data的区别介绍
2020/05/05 Python
Python利用myqr库创建自己的二维码
2020/11/24 Python
法律专业推荐信范文
2013/11/29 职场文书
电气工程和自动化自荐信范文
2013/12/25 职场文书
学生偷窃检讨书
2014/09/25 职场文书
民间借贷协议书范本
2014/10/01 职场文书
2016年学生会感恩节活动总结
2016/04/01 职场文书
Java9新特性之Module模块化编程示例演绎
2022/03/16 Java/Android