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程序员开发中常犯的10个错误
Jul 07 Python
python3音乐播放器简单实现代码
Apr 20 Python
python异常和文件处理机制详解
Jul 19 Python
Python3简单实例计算同花的概率代码
Dec 06 Python
用Pycharm实现鼠标滚轮控制字体大小的方法
Jan 15 Python
python 判断矩阵中每行非零个数的方法
Jan 26 Python
Python字符串内置函数功能与用法总结
Apr 16 Python
Python re 模块findall() 函数返回值展现方式解析
Aug 09 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
May 11 Python
Python使用文件操作实现一个XX信息管理系统的示例
Jul 02 Python
Django model重写save方法及update踩坑详解
Jul 27 Python
拒绝盗图!教你怎么用python给图片加水印
Jun 04 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
oracle资料库函式库
2006/10/09 PHP
第十四节--命名空间
2006/11/16 PHP
php遍历目录与文件夹的多种方法详解
2013/11/14 PHP
PHP设计模式之观察者模式(Observer)详细介绍和代码实例
2014/04/08 PHP
highchart数据源纵轴json内的值必须是int(详解)
2017/02/20 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
2017/10/26 PHP
转自Jquery官方 jQuery1.1.3发布,速度提升800%,体积保持20K
2007/08/19 Javascript
javascript实现上传图片并预览的效果实现代码
2011/04/11 Javascript
TextArea不支持maxlength的解决办法(jquery)
2011/09/13 Javascript
JS判断当前日期是否大于某个日期的实现代码
2012/09/02 Javascript
JS禁用浏览器退格键实现思路及代码
2013/10/29 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
浅谈Javascript数组的使用
2015/07/29 Javascript
jQuery 获取屏幕高度、宽度的简单实现案例
2016/05/17 Javascript
jQuery实现对无序列表的排序功能(附demo源码下载)
2016/06/25 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
2017/12/07 Javascript
解决Linux无法正常安装与卸载Node.js的方法
2018/01/19 Javascript
在vue项目中使用sass的配置方法
2018/03/20 Javascript
微信小程序实现tab页面切换功能
2018/07/13 Javascript
解决python使用open打开文件中文乱码的问题
2017/12/29 Python
python中(str,list,tuple)基础知识汇总
2018/02/20 Python
Python爬虫包BeautifulSoup简介与安装(一)
2018/06/17 Python
利于python脚本编写可视化nmap和masscan的方法
2020/12/29 Python
美国领先的宠物用品和宠物食品零售商:Petco
2020/10/28 全球购物
Shell如何接收变量输入
2012/09/24 面试题
Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型
2013/10/30 面试题
小学教师国培感言
2014/02/08 职场文书
党的群众路线教育实践活动学习心得体会
2014/03/03 职场文书
工商管理专业自荐信
2014/06/03 职场文书
2014年学校禁毒工作总结
2014/12/23 职场文书
有关骆驼祥子的读书笔记
2015/06/26 职场文书
小学生安全教育心得体会
2016/01/15 职场文书
python实现求纯色彩图像的边框
2021/04/08 Python
浅谈JavaScript浅拷贝和深拷贝
2021/11/07 Javascript
微软Win11有哪些隐藏功能? windows11多个功能汇总
2021/11/21 数码科技