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 相关文章推荐
简单了解什么是神经网络
Dec 23 Python
Django中Model的使用方法教程
Mar 07 Python
python 去除二维数组/二维列表中的重复行方法
Jan 23 Python
Python可视化mhd格式和raw格式的医学图像并保存的方法
Jan 24 Python
Python面向对象思想与应用入门教程【类与对象】
Apr 12 Python
python打包exe开机自动启动的实例(windows)
Jun 28 Python
Kears+Opencv实现简单人脸识别
Aug 28 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
Mar 03 Python
python多线程爬取西刺代理的示例代码
Jan 30 Python
linux系统下pip升级报错的解决方法
Jan 31 Python
python利用opencv实现颜色检测
Feb 23 Python
Django框架之路由用法
Jun 10 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 获得汉字拼音首字母的函数
2009/08/01 PHP
PHP线程的内存回收问题
2016/07/08 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
JavaScript 特殊字符
2007/04/05 Javascript
仿jQuery的siblings效果的js代码
2011/08/09 Javascript
改变隐藏的input中value的值代码
2013/12/30 Javascript
JavaScript也谈内存优化
2014/06/06 Javascript
JavaScript中的方法重载实例
2015/03/16 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
jQuery 获取多选框的值及多选框中文的函数
2016/05/16 Javascript
Bootstrap轮播图的使用和理解4
2016/12/14 Javascript
微信小程序 后台登录(非微信账号)实例详解
2017/03/31 Javascript
javascript过滤数组重复元素的实现方法
2017/05/03 Javascript
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
2017/06/30 Javascript
vue+egg+jwt实现登录验证的示例代码
2019/05/18 Javascript
vue实现路由懒加载及组件懒加载的方式
2019/06/11 Javascript
vue通过video.js解决m3u8视频播放格式的方法
2019/07/30 Javascript
Vue.js项目实战之多语种网站的功能实现(租车)
2019/08/07 Javascript
JS使用H5实现图片预览功能
2019/09/30 Javascript
jQuery AJAX应用实例总结
2020/05/19 jQuery
JS页面动态绘图工具SVG,Canvas,VML介简介
2020/10/16 Javascript
编程语言Python的发展史
2014/09/26 Python
给Python的Django框架下搭建的BLOG添加RSS功能的教程
2015/04/08 Python
Django中对数据查询结果进行排序的方法
2015/07/17 Python
简介Python的collections模块中defaultdict类型的用法
2016/07/07 Python
教你用python3根据关键词爬取百度百科的内容
2016/08/18 Python
Windows和Linux下Python输出彩色文字的方法教程
2017/05/02 Python
python简单实现AES加密和解密
2019/03/28 Python
python递归法实现简易连连看小游戏
2020/03/25 Python
Python项目跨域问题解决方案
2020/06/22 Python
一站式跨境收款解决方案:Payoneer(派安盈)
2018/09/06 全球购物
广播稿:校园广播稿范文
2019/04/17 职场文书
利用Java设置Word文本框中的文字旋转方向的实现方法
2021/06/28 Java/Android
Python如何使用循环结构和分支结构
2022/04/13 Python
介绍一下28个JS常用数组方法
2022/05/06 Javascript