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 输出一个两行字符的变量
Feb 05 Python
python判断端口是否打开的实现代码
Feb 10 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
Feb 18 Python
使用实现XlsxWriter创建Excel文件并编辑
May 04 Python
python计算日期之间的放假日期
Jun 05 Python
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
Jul 18 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
Jun 12 Python
Python Web程序搭建简单的Web服务器
Jul 31 Python
Django Aggregation聚合使用方法解析
Aug 01 Python
Python collections.defaultdict模块用法详解
Jun 18 Python
Python扫描端口的实现
Jan 25 Python
python爬虫线程池案例详解(梨视频短视频爬取)
Feb 20 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
将数字格式的计算结果转为汉字格式
2006/10/09 PHP
生成卡号php代码
2008/04/09 PHP
解析php扩展php_curl.dll不加载的解决方法
2013/06/26 PHP
ThinkPHP3.1之D方法实例详解
2014/06/20 PHP
php结合curl实现多线程抓取
2015/07/09 PHP
修改PHP脚本使WordPress拦截垃圾评论的方法示例
2015/12/10 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
2018/09/26 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
用js+xml自动生成表格的东西
2006/12/21 Javascript
浅谈javascript六种数据类型以及特殊注意点
2013/12/20 Javascript
使用js判断TextBox控件值改变然后出发事件
2014/03/07 Javascript
node.js WEB开发中图片验证码的实现方法
2014/06/03 Javascript
jQuery实现Meizu魅族官方网站的导航菜单效果
2015/09/14 Javascript
jQuery form插件之formDdata参数校验表单及验证后提交
2016/01/23 Javascript
BootStrap glyphicons 字体图标实现方法
2016/05/01 Javascript
Javascript小技能总结(推荐)
2016/06/02 Javascript
JavaScript实现时间倒计时跳转(推荐)
2016/06/28 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
解决layui上传文件提示上传异常,实际文件已经上传成功的问题
2018/08/19 Javascript
jQuery实现表格隔行换色
2018/09/01 jQuery
微信小程序实现的绘制table表格功能示例
2019/04/26 Javascript
three.js 实现露珠滴落动画效果的示例代码
2021/03/01 Javascript
Python脚本实现代码行数统计代码分享
2015/03/10 Python
Django的HttpRequest和HttpResponse对象详解
2018/01/26 Python
Django 对IP访问频率进行限制的例子
2019/08/30 Python
关于pymysql模块的使用以及代码详解
2019/09/01 Python
如何让IE9以下版本(ie6/7/8)认识html5元素
2013/04/01 HTML / CSS
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
最新大学生自我评价
2013/09/24 职场文书
2015年清明节活动总结
2015/02/09 职场文书
因公司原因离职的辞职信范文
2015/05/12 职场文书
担保书格式范文
2015/09/22 职场文书
升学宴学生致辞
2015/09/29 职场文书
Apache Calcite 实现方言转换的代码
2021/04/24 Servers
golang中字符串MD5生成方式总结
2021/07/04 Golang
Golang中channel的原理解读(推荐)
2021/10/16 Golang