day-13 python库实现简单非线性回归应用
一、概率
在引入问题前,我们先复习下数学里面关于概率的基本概念
概率:对一件事发生的可能性衡量
范围:0<=P<=1
计算方法:根据个人置信区间;根据历史数据;根据模拟数据。
条件概率:B发生的条件下,A发生的概率

二、Logistic Regression(逻辑回归)
1、问题引入
处理二值数据时,如果一直8个测试数据集为如下所示,我们利用线性回归方程,建立回归方程曲线,图形显示,并不能很好的模拟回归问题,也就是我们所说的欠回归。

如果继续引入第9个测试点,我们发现欠回归情况更加严重,因此我们需要引入一个新的回归模型,来解决该类模型欠回归问题。

2、简单推导过程
假设测试数据为X(x0,x1,x2···xn)
要学习的参数为:Θ(θ0,θ1,θ2,···θn)
向量表示:
观察Logistic函数曲线,我们发现在0到负无穷时,函数值趋向于0,0到正无穷时函数曲线趋向于1,且当z等于0时,函数值为0.5,于是我们可以引入该函数,对预测方程进行再次转换,由数值上的计算转换为0,1概率上的计算,即:


不同于线性回归模型:
,定义一个新的预测函数为:
于是问题从对Z函数求最优theta参数值,变为对h函数求最优theta参数值。对二值问题,可转换为如下表述:

根据一般方法,首先定义新的cost函数,然后根据cost函数来反向更新参数theta值,如下为新的cost函数:

为了计算方便,我们对其转化为:

两个式子可以进行合并,最终化简为最终的cost函数:

该式为非线性方程,通过求导来计算极值很复杂,我们引入之前的梯度下降算法,来不断的估计新的参数值

最终更新法则为:

3、实际编程应用
如下为一个通用的非线性回归方程,在利用梯度下降算法反向更新theta参数值时,没有使用如下更新法则,而是使用通用方法,如下是具体代码:
import numpy as np
import random # 梯度下降算法来更新参数值
# x,y:测试数据集及标签值,theta:学习的参数值,alpha:学习率,m:测试数据集个数,numIterations:重复更新次数
def gradientDescent(x,y,theta,alpha,m,numIterations):
xTrans = np.transpose(x)
for i in range(0,numIterations):
hypothesis = np.dot(x,theta)
loss = hypothesis - y
# 定义一个通用的更新法则7
cost = np.sum(loss**2)/(2*m)
if i % 10000 == 0:
print("Iteration %d | Cost:%f"%(i,cost))
gradient = np.dot(xTrans,loss)/m
theta = theta - alpha*gradientreturn theta # 生成测试数据
# numPoints:测试数据集行数,bias:偏向,variance:方差
def genData(numPoints,bias,variance):
x = np.zeros(shape=(numPoints,2))
y = np.zeros(shape=numPoints)
for i in range(0,numPoints):
x[i][0] = 1
x[i][1] = i
# uniform随机产生一些数字
y[i] = (i + bias) + random.uniform(0,1) + variance
return x,y x,y = genData(100,25,10)
m,n = np.shape(x)
print(x,y)
theta = np.ones(n)
alpha = 0.0005
theta = gradientDescent(x,y,theta,alpha,m,100000)
print(theta)
最终的结果如下,结果显示,随着训练次数的增加,目标函数也在不断的减小:

day-13 python库实现简单非线性回归应用的更多相关文章
- C# 调用Python库 最简单方法
起个头,技术性文章应该言简意赅(因我看到外国回答问题都是可以一句代码解决的,绝不会写第二句),实现功能无误再贴出文章. 首先我不用 IronPython来写这个.py文件,因为我有Pycharm,而且 ...
- python GUI实战项目——tkinter库的简单实例
一.项目说明: 本次通过实现一个小的功能模块对Python GUI进行实践学习.项目来源于软件制造工程的作业.记录在这里以复习下思路和总结编码过程.所有的源代码和文件放在这里: 链接: https:/ ...
- python requests库的简单运用
python requests的简单运用 使用pycharm获取requests包 ctrl+alt+s Project:pythonProject pythoninterpreter 点+号搜索 使 ...
- 11个并不广为人知,但值得了解的Python库
这是一篇译文,文中提及了一些不常见但是有用的Python库 原文地址:http://blog.yhathq.com/posts/11-python-libraries-you-might-not-kn ...
- 13.python笔记之pyyaml模块
Date:2016-03-25 Title:13.Python笔记之Pyymal模块使用 Tags:Python Category:Python 博客地址:www.liuyao.me 作者:刘耀 YA ...
- 你可能没听过的11个Python库
目前,网上已有成千上万个Python包,但几乎没有人能够全部知道它们.单单 PyPi上就有超过47000个包列表. 现在,越来越多的数据科学家开始使用Python,虽然他们从 pandas, scik ...
- Python 库/模块/工具收集
1 算法 1.1 字符串处理 re 正则表达式的标准库. StringIO / cStringIO 以读写文件的方式来操作字符串(有点类似于内存文件). cStringIO 是 C 语言实现的,提供高 ...
- python之pandas简单介绍及使用(一)
python之pandas简单介绍及使用(一) 一. Pandas简介1.Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据 ...
- 1.3 Essential Python Libraries(一些重要的Python库)
1.3 Essential Python Libraries(一些重要的Python库) 如果不了解Python的数据生态,以及本书中即将用到的一些库,这里会做一个简单的介绍: Numpy 这里就不过 ...
随机推荐
- 自动化维护任务 – Automated Maintenance Task (转)
1. Oracle有三个已定义好的automated maintenance tasks. Automatic Optimizer Statistics Collection—用于收集各种数据库对象的 ...
- 最长公共子序列Lcs (51Nod - 1006)
20180604 11:28 给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的). 比如两个串为: abcicba abdkscab ab是两个串的子序列,ab ...
- Laravel 集合的处理
其中的方法有: $arrs = collect($arr)->collapse()->collapse() //去除最外一层数组,不论最外层数组时否有值,都会去除掉 collect($ar ...
- 云监控自定义HTTP状态码说明
您在使用站点监控时,返回的6XX状态码均为云监控自定义HTTP状态码,具体含义如下表所示: 状态码 含义 备注 610 HTTP连接超时 监测点探测您的网站时出现连接超 ...
- canvas实现半圆环形进度条
html部分 <canvas id="canvas" width="150" height="150"> <p>抱歉 ...
- 12.2.1 访问元素的样式【JavaScript高级程序设计第三版】
任何支持style 特性的HTML 元素在JavaScript 中都有一个对应的style 属性.这个style 对象是CSSStyleDeclaration 的实例,包含着通过HTML 的style ...
- Yii2.0 游客访问限制(转)
最近在用Yii2.0做项目,其中需要实现一个功能:没有登录不能访问部分页面,即游客身份访问限制.查了半天资料,终于找到答案.解决方法如下: 在access里,access即访问的意思,其中有个配置项 ...
- Redis缓存数据库的安装与配置(3)
3 Redis主动同步设置方法 Redis主从同步 1.Redis主从同步特点 一个master可以拥有多个slave 多个slave可以连接同一个master,还可以连接到其他slave 主从复制不 ...
- 2018年第九届蓝桥杯【C++省赛B组】【第二题:明码】
参考:https://blog.csdn.net/qq_34202873/article/details/79784242 #include <bits/stdc++.h> using n ...
- BZOJ2693: jzptab(莫比乌斯反演)
Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 2068 Solved: 834[Submit][Status][Discuss] Descripti ...