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 相关文章推荐
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
Jan 22 Python
python在指定目录下查找gif文件的方法
May 04 Python
用pickle存储Python的原生对象方法
Apr 28 Python
python文件名和文件路径操作实例
Sep 29 Python
python机器学习理论与实战(二)决策树
Jan 19 Python
Python 使用PIL中的resize进行缩放的实例讲解
Aug 03 Python
python实现字符串和字典的转换
Sep 29 Python
python3中property使用方法详解
Apr 23 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
Aug 23 Python
python shell命令行中import多层目录下的模块操作
Mar 09 Python
python实点云分割k-means(sklearn)详解
May 28 Python
解决pytorch-gpu 安装失败的记录
May 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 sprintf()函数让你的sql操作更安全
2008/07/23 PHP
php实现12306余票查询、价格查询示例
2014/04/17 PHP
php中current、next与reset函数用法实例
2014/11/17 PHP
php微信开发之自定义菜单实现
2016/11/18 PHP
JavaScript CSS修改学习第五章 给“上传”添加样式
2010/02/19 Javascript
理解JSON:3分钟课程
2011/10/28 Javascript
node.js中的path.isAbsolute方法使用说明
2014/12/08 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
2015/05/07 Javascript
javascript Slip.js实现整屏滑动的手机网页
2015/11/25 Javascript
浅析jquery如何判断滚动条滚到页面底部并执行事件
2016/04/29 Javascript
基于jQuery实现仿微博发布框字数提示
2016/07/27 Javascript
详解基于javascript实现的苹果系统底部菜单
2016/12/02 Javascript
新手必须知的Node.js 4个JavaScript基本概念
2018/09/16 Javascript
微信小程序实现上传图片裁剪图片过程解析
2019/08/22 Javascript
[52:22]EG vs VG Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
Python enumerate遍历数组示例应用
2008/09/06 Python
python开发中module模块用法实例分析
2015/11/12 Python
python操作MySQL 模拟简单银行转账操作
2017/09/27 Python
Python数据结构与算法之完全树与最小堆实例
2017/12/13 Python
python 每天如何定时启动爬虫任务(实现方法分享)
2018/05/21 Python
pandas 读取各种格式文件的方法
2018/06/22 Python
Python多继承原理与用法示例
2018/08/23 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
2019/05/27 Python
使用 Python 写一个简易的抽奖程序
2019/12/08 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
2020/01/25 Python
HTML5如何使用SVG的方法示例
2019/01/11 HTML / CSS
Lookfantastic西班牙官网:英国知名美妆购物网站
2018/06/13 全球购物
Groupon荷兰官方网站:高达70%的折扣
2019/11/01 全球购物
阿迪达斯印尼官方网站:adidas印尼
2020/02/10 全球购物
马来西亚排名第一的宠物用品店:Pets Wonderland
2020/04/16 全球购物
小学生我的梦想演讲稿
2014/08/21 职场文书
建筑节能汇报材料
2014/08/22 职场文书
党员干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2015年综治维稳工作总结
2015/04/07 职场文书
2015年初中教务处工作总结
2015/07/21 职场文书
MySQL和Oracle批量插入SQL的通用写法示例
2021/11/17 MySQL