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脚本来删除指定容量以上的文件的教程
May 04 Python
python下10个简单实例代码
Nov 15 Python
Python+matplotlib实现华丽的文本框演示代码
Jan 22 Python
Python实现针对json中某个关键字段进行排序操作示例
Dec 25 Python
Python遍历文件夹 处理json文件的方法
Jan 22 Python
python批量修改图片尺寸,并保存指定路径的实现方法
Jul 04 Python
python 中pyqt5 树节点点击实现多窗口切换问题
Jul 04 Python
python爬虫项目设置一个中断重连的程序的实现
Jul 26 Python
python输出决策树图形的例子
Aug 09 Python
Django 请求Request的具体使用方法
Nov 11 Python
使用Python画出小人发射爱心的代码
Nov 23 Python
在python3.9下如何安装scrapy的方法
Feb 03 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下使用无限生命期Session的方法
2007/03/16 PHP
关于PHP求解三数之和问题详析
2020/11/09 PHP
js切换div css注意的细节
2012/12/10 Javascript
jquery插件jSignature实现手动签名
2015/05/04 Javascript
JS实现图片的不间断连续滚动的简单实例
2016/06/03 Javascript
JS中常用的输出方式(五种)
2016/06/12 Javascript
JavaScript学习笔记整理_用于模式匹配的String方法
2016/09/19 Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
2016/11/01 Javascript
jQuery扩展+xml实现表单验证功能的方法
2016/12/25 Javascript
JavaScript实现计数器基础方法
2017/10/10 Javascript
JS获取数组中出现次数最多及第二多元素的方法
2017/10/27 Javascript
浅谈react-router@4.0 使用方法和源码分析
2019/06/04 Javascript
layer更改皮肤的实现方法
2019/09/11 Javascript
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
VUE中V-IF条件判断改变元素的样式操作
2020/08/09 Javascript
[03:55]TI9战队采访——TNC Predator
2019/08/22 DOTA
Python学习资料
2007/02/08 Python
python实现的简单猜数字游戏
2015/04/04 Python
Python中的getopt函数使用详解
2015/07/28 Python
Python中%r和%s的详解及区别
2017/03/16 Python
python docx 中文字体设置的操作方法
2018/05/08 Python
Tensorflow 合并通道及加载子模型的方法
2018/07/26 Python
Python对CSV、Excel、txt、dat文件的处理
2018/09/18 Python
python3实现带多张图片、附件的邮件发送
2019/08/10 Python
解决pycharm 安装numpy失败的问题
2019/12/05 Python
IronPython连接MySQL的方法步骤
2019/12/27 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
2020/02/20 Python
Python基于tkinter canvas实现图片裁剪功能
2020/11/05 Python
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
民政局副局长民主生活会个人整改措施
2014/10/04 职场文书
继承权公证书范本
2015/01/23 职场文书
2015年小学开学寄语
2015/02/27 职场文书
职称评定个人总结
2015/03/05 职场文书
学校节水倡议书
2015/04/29 职场文书
家长反馈意见及建议
2015/06/03 职场文书