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数据类型判断type与isinstance的区别实例解析
Oct 31 Python
python中的set实现不重复的排序原理
Jan 24 Python
python3获取两个日期之间所有日期,以及比较大小的实例
Apr 08 Python
对python3标准库httpclient的使用详解
Dec 18 Python
对python中的os.getpid()和os.fork()函数详解
Aug 08 Python
python多线程同步实例教程
Aug 11 Python
Python爬虫headers处理及网络超时问题解决方案
Jun 19 Python
Python实现封装打包自己写的代码,被python import
Jul 12 Python
Python实现像awk一样分割字符串
Sep 15 Python
Python Pandas数据分析之iloc和loc的用法详解
Nov 11 Python
python如何为list实现find方法
May 30 Python
Python find()、rfind()方法及作用
Dec 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环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
2007/03/16 PHP
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
2008/10/13 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
2016/03/21 PHP
Laravel框架路由管理简单示例
2019/05/07 PHP
在网页中屏蔽快捷键
2006/09/06 Javascript
JS+XML 省份和城市之间的联动实现代码
2009/10/14 Javascript
jQuery 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)
2012/05/23 Javascript
js取得url地址参数实例
2013/02/22 Javascript
JS遍历Json字符串中键值对先转成JSON对象再遍历
2014/08/15 Javascript
JavaScript将字符串转换成字符编码列表的方法
2015/03/19 Javascript
JavaScript统计网站访问次数的实现代码
2015/11/18 Javascript
基于Node.js实现nodemailer邮件发送
2016/01/26 Javascript
Bootstrap学习系列之使用 Bootstrap Typeahead 组件实现百度下拉效果
2016/07/07 Javascript
JavaScript基础重点(必看)
2016/07/09 Javascript
Angular和百度地图的结合实例代码
2016/10/19 Javascript
Easyui的组合框的取值与赋值
2016/10/28 Javascript
如何以Angular的姿势打开Font-Awesome详解
2018/04/22 Javascript
vue改变循环遍历后的数据实例
2019/11/07 Javascript
vue-cli+webpack项目打包到服务器后,ttf字体找不到的解决操作
2020/08/28 Javascript
vue3.0搭配.net core实现文件上传组件
2020/10/29 Javascript
[12:29]2018国际邀请赛 开幕秀
2018/08/22 DOTA
[00:20]TI9不朽观赛名额抽取
2019/08/05 DOTA
Python新手入门最容易犯的错误总结
2017/04/24 Python
python读取excel指定列数据并写入到新的excel方法
2018/07/10 Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
2018/10/29 Python
python3 中文乱码与默认编码格式设定方法
2018/10/31 Python
python pytest进阶之fixture详解
2019/06/27 Python
基于python实现判断字符串是否数字算法
2020/07/10 Python
一款利用html5和css3实现的3D滚动特效的教程
2015/01/04 HTML / CSS
英国在线花园中心:You Garden
2018/06/03 全球购物
网上开店必备创业计划书
2014/01/26 职场文书
2014年幼儿园个人工作总结
2014/11/10 职场文书
2015试用期转正工作总结
2014/12/12 职场文书
基层工作经历证明
2015/06/19 职场文书
CSS3鼠标悬浮过渡缩放效果
2021/04/17 HTML / CSS
win11怎么消除图标小盾牌?win11消除图标小盾牌解决方法
2022/08/05 数码科技