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中的全局变量用法分析
Jun 09 Python
python 实现求解字符串集的最长公共前缀方法
Jul 20 Python
详解Python中的type和object
Aug 15 Python
在Python中关于使用os模块遍历目录的实现方法
Jan 03 Python
python socket通信编程实现文件上传代码实例
Dec 14 Python
python文件绝对路径写法介绍(windows)
Dec 25 Python
tensorflow指定GPU与动态分配GPU memory设置
Feb 03 Python
解决python DataFrame 打印结果不换行问题
Apr 09 Python
Python基于jieba, wordcloud库生成中文词云
May 13 Python
简述python&amp;pytorch 随机种子的实现
Oct 07 Python
pycharm配置python 设置pip安装源为豆瓣源
Feb 05 Python
使用Python webdriver图书馆抢座自动预约的正确方法
Mar 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
PHP实现的memcache环形队列类实例
2015/07/28 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
2019/05/29 PHP
使弱类型的语言JavaScript变强势
2009/06/22 Javascript
使用Plupload实现直接上传附件至七牛云存储
2014/12/26 Javascript
简介AngularJS中使用factory和service的方法
2015/06/17 Javascript
jquery控制显示服务器生成的图片流
2015/08/04 Javascript
js小数运算出现多位小数如何解决
2015/10/08 Javascript
解析JavaScript模仿块级作用域
2016/12/29 Javascript
JavaScript结合HTML DOM实现联动菜单
2017/04/05 Javascript
js CSS3实现卡牌旋转切换效果
2017/07/04 Javascript
vuejs 单文件组件.vue 文件的使用
2017/07/28 Javascript
vue-cli下的vuex的简单Demo图解(实现加1减1操作)
2018/02/26 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
2019/05/21 Javascript
手把手带你入门微信小程序新框架Kbone的使用
2020/02/25 Javascript
Node.js利用Express实现用户注册登陆功能(推荐)
2020/10/26 Javascript
[09:23]国际邀请赛采访专栏:iG战队VK,Tongfu战队Cu
2013/08/05 DOTA
mac 安装python网络请求包requests方法
2018/06/13 Python
Django框架多表查询实例分析
2018/07/04 Python
如何使用django的MTV开发模式返回一个网页
2019/07/22 Python
python3.6 tkinter实现屏保小程序
2019/07/30 Python
python list数据等间隔抽取并新建list存储的例子
2019/11/27 Python
pytorch数据预处理错误的解决
2020/02/20 Python
Python如何把Spark数据写入ElasticSearch
2020/04/18 Python
python实现图片,视频人脸识别(opencv版)
2020/11/18 Python
SmartBuyGlasses德国:购买太阳镜和眼镜
2019/08/20 全球购物
什么是TCP/IP
2014/07/27 面试题
解释下面关于J2EE的名词
2013/11/15 面试题
简单的辞职信范文
2014/01/18 职场文书
十八届三中全会感言
2014/03/10 职场文书
2014五一国际劳动节活动总结范文
2014/04/14 职场文书
大学生简历求职信
2014/06/24 职场文书
奶茶店创业计划书
2014/08/14 职场文书
云冈石窟导游词
2015/02/04 职场文书
工作犯错保证书
2015/05/11 职场文书
催款函范文
2015/06/24 职场文书
Python装饰器详细介绍
2022/03/25 Python