非线性回归(Non-linear Regression)学习笔记

非线性回归(Non-linear Regression)

1.概率:
1.1定义概率Probability:对一件事情发生的可能性的衡量
1.2范围 0<=P<=1
1.3计算方法:
1.3.1根据个人置信
1.3.2根据历史数据
1.3.3根据模拟数据
1.4条件概率:(A发生的条件下B发生的概率)
在这里插入图片描述
逻辑回归(Logistic Regression)
x∈(-∞,+∞),y∈(0,1)
2.1举例,肿瘤良恶性:
在这里插入图片描述
画出线性回归线,计算h(x)值若大于0.5,则认为是Malignant(恶性).
特殊例子,出现一个偏离较大的数值:
在这里插入图片描述
h(x)>0.5(恶性),Malignant=1
再重新模拟后的线性方程就无法准确分类了

2.2基本模型
测试数据为
X(x0,x1,x2...xn)X(x_0, x_1, x_2...x_n) X(x0,x1,x2...xn)
要学习的参数为:
θ(θ0,θ1,θ2,...θn)(θ可以是一个向量)θ(θ_0, θ_1, θ_2,... θ_n) (θ可以是一个向量) θ(θ0,θ1,θ2...θn)θ可以是一个向量)
在这里插入图片描述
向量表示:(θ^T 为一列排列的θ)
在这里插入图片描述
处理二值数据,引入Sigmoid函数时曲线平滑化:
在这里插入图片描述
在这里插入图片描述
预测函数:
在这里插入图片描述
θ为参数,X为自变量

用概率表示
正例(y=1):(对于给定的一组数据自变量和一组参数,y=1的概率)
在这里插入图片描述
反例(y=0):(对于给定的一组数据自变量和一组参数,y=0的概率)
在这里插入图片描述
2.3 Cost函数
线性回归:
在这里插入图片描述
在这里插入图片描述
y(i)y^{(i)}y(i)为实例的值)x(i)x^{(i)}x(i)为每一个实例的自变量,求出的hθ(x(i))h_θ(x^{(i)})hθ(x(i))即为预测值y_hat
在这里插入图片描述
找到合适的θ_0,θ_1使_上式最小,求导数使其为0,即可求得

Logistic regression:
Cost函数:
(使用对数log的原因:对数是个增函数,很容易求出最大值和最小值,对原函数最大/最小化和对原函数它的对数最大化和最小化是一样的?可以使运算简单很多)
在这里插入图片描述
下方程由上面两个方程合成得到(分y=1和y=0)
目标: 找到合适的θ_0,θ_1使_上式J(θ)最小,求导数使其为0,即可求得
方法:数学上一般对其变量求偏导,是其偏导等于0

2.4解法:梯度下降(gradient decent)
一个计算机中非常重要的算法
梯度下降法是用负梯度方向为搜索方向的,最速下降法越接近目标值,步长越小,前进越慢。可以用于求解非线性方程组。
梯度下降法的计算过程就是沿梯度下降的方向求解极小值。
在这里插入图片描述
在这里插入图片描述
求偏导(求出斜率)找到曲面的最低点
(以θ对J求导数,α为学习率可能会随时变更,)
更新法则(化简上式后):(i上标表示不同的实例)
在这里插入图片描述
同时对所有的θ进行更新
重复更新直到收敛(低于设置的预测值,一般为local minimum or global minimum)

非线性回归实例应用(Logistic Regression Application):

import numpy as np
import randomdef gradient_descent(x, y, theta, alpha, m, iteration_times):"""m denotes the number of examples here, not the number of featuresParameters----------------x: 实例y: 分类标签theta: 要学习的参数θalpha: learning ratem: 更新法则公式中实例的个数,对应示例数组shape[0]iteration_times: 使用此方法循环训练更新的次数"""for i in range(0, iteration_times):hypothesis = np.dot(x, theta)  # h(x) = x·θ,θ的shape已转换为能和x点乘,x无需转置,每次更新完后θ会发生变化loss = hypothesis - y  # hypothesis其实就是y_hat(估计值h(x)),这里loss就等于y_hat减去y(实际)# avg cost per example (the 2 in 2*m doesn't really matter here.# But to be consistent with the gradient, I include it)'''cost:对精确度的衡量,会随着gradient descent的次数减小'''cost = np.sum(loss ** 2) / (2 * m)  # 这里的cost函数与课文中提到的cost函数不一样,这里使用了一个简单的cost便于计算和展示print('Iteration:%d|cost:%f' % (i, cost))# avg gradient per examplegradient = np.dot(loss.T, x) / m  # loss·x = (h(x)-y)·x,使用矩阵形式同时对所有x执行运算,loss要转置一下,theta要求平均值# updatetheta = theta - alpha * gradient  # 即更新法则的公式:θ=θ-α∑(h(x)-y)xreturn theta# 产生测试拟合的数据
def gen_data(num_points, bias, variance):"""Parameters---------num_points:实例数bias:生成y时产生一个偏差值variance:方差"""x = np.zeros(shape=(num_points, 2))y = np.zeros(shape=num_points)# basically a straight linefor i in range(0, num_points):# bias featurex[i][0] = 1x[i][1] = i# target variabley[i] = (i + bias) + random.uniform(0, 1) * variance  # random.uniform(0,1)[0, 1)均匀分布,同random.random()产生0~1随机数return x, ydef main():# generate 100 points with a bias of 25 and 10 variance as a bit of noisex, y = gen_data(100, 25, 10)print(x)print(y)m, n = np.shape(x)  # x是二维数组,行数赋值给m,列数赋值为na = np.shape(y)  # y是1维的数组,只会一个数值print(m, n)  # (100行,2列) 2维数组,100行2列print(a)  # (100,) 1维数组,100个数值iteration_times = 100000alpha = 0.0005  # 取0~1,比较好的算法会设置开始的alpha数值较大后期数值较小theta = np.ones(n)  # 初始化θ:[1. 1.] ,初始时x的值认为是h(x)的值theta = gradient_descent(x, y, theta, alpha, m, iteration_times)print(theta)  # 约为[30 1]# 得出的theta就可以用于对新实例的计算和预测# 回归算法和神经网络中都会用到此梯度下降的方法if __name__ == '__main__':main()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/469706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智慧交通day02-车流量检测实现08:目标跟踪中的数据关联(将检测框bbox与卡尔曼滤波器的跟踪框进行关联匹配)

# 将YOLO模型的检测框和卡尔曼滤波的跟踪框进行匹配 def associate_detection_to_tracker(detections,trackers,iou_threshold0.3):"""将检测框bbox与卡尔曼滤波器的跟踪框进行关联匹配:param detections:检测框:param trackers:跟踪框&#xff0c;即跟踪目标:p…

回归中的相关度和R平方值 学习笔记

回归中的相关度和R平方值 自变量x和因变量y的相关度 1.皮尔逊相关系数(Pearson Correlation Coefficient): 1.1衡量两个值线性相关强度的量 1.2取值范围[-1,1]: 正向相关: >0,负向相关: <0,无相关性: 0 公式&#xff1a;correlation&#xff0c; correlationvariance(Co…

智慧交通day02-车流量检测实现09:SORT/deepSORT

SORT和DeepSORT是多目标跟踪中两个知名度比较高的算法。DeepSORT是原团队对SORT的改进版本。现在来解析一下SORT和DeepSORT的基本思路。 1.SORT SORT核心是卡尔曼滤波和匈牙利匹配两个算法。流程图如下所示&#xff0c;可以看到整体可以拆分为两个部分&#xff0c;分别是匹配…

素数环 与 算法 全排列

在说起全排列前&#xff0c;先说一下昨天碰到的一个题目&#xff08;答案不是我做出来的&#xff0c;但是我感觉有好多个亮点&#xff0c;贴出来方便日后的学习&#xff09;&#xff1a; 素数环 时间限制&#xff1a;1000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;…

简单线性回归(Simple Linear Regression)和多元线性回归(Multiple Regression)学习笔记

简单线性回归(Simple Linear Regression) 0.前提介绍: 为什么需要统计量? 统计量:描述数据特征 0.1集中趋势衡量 0.1.1均值(平均数&#xff0c;平均值) (mean)&#xff1a;&#xff08;求和除以个数&#xff0c;Ex也可以表示x求均值&#xff09; 0.1.2中位数(median) : 将数…

智慧交通day02-车流量检测实现10:多目标追踪实现

在这里我们主要实现了一个多目标跟踪器&#xff0c;管理多个卡尔曼滤波器对象&#xff0c;主要包括以下内容&#xff1a; 初始化&#xff1a;最大检测数&#xff0c;目标未被检测的最大帧数 目标跟踪结果的更新&#xff0c;即跟踪成功和失败的目标的更新 初始化 def __init_…

智慧交通day02-车流量检测实现11:yoloV3模型

yoloV3以V1&#xff0c;V2为基础进行的改进&#xff0c;主要有&#xff1a;利用多尺度特征进行目标检测&#xff1b;先验框更丰富&#xff1b;调整了网络结构&#xff1b;对象分类使用logistic代替了softmax,更适用于多标签分类任务。 1.算法简介 YOLOv3是YOLO (You Only Loo…

bzoj1992鬼谷子的钱袋(二分乱搞 二进制)

1192: [HNOI2006]鬼谷子的钱袋 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3223 Solved: 2333Descriptio 鬼谷子非常聪明&#xff0c;正因为这样&#xff0c;他非常繁忙&#xff0c;经常有各诸侯车的特派员前来向他咨询时政。有一天&#xff0c;他在咸阳游历的时候&…

聚类(Clustering): K-means算法

聚类(Clustering): K-means算法 1.归类: 聚类(clustering)属于非监督学习(unsupervised learning) 无类别标记( class label) 3. K-means 算法&#xff1a; 3.1 Clustering 中的经典算法&#xff0c;数据挖掘十大经典算法之一 3.2 算法接受参数 k &#xff1b;然后将事先输入…

智慧交通day02-车流量检测实现12:基于yoloV3的目标检测

在本章节代码编写中&#xff0c;发现之前的代码所处的环境是python3&#xff0c;因此导致了cv2.dnn.readNetFromDarknet()在代码运行中导致了i[0]的获值失败&#xff0c;故总结如下&#xff1a; cv2.dnn.readNetFromDarknet()在python3上遇到的问题_李大狗的读研日记-CSDN博客…

cv2.dnn.readNetFromDarknet()在python3上遇到的问题

问题描述&#xff1a; 代码如下 net cv2.dnn.readNetFromDarknet(configPath,weightsPath) #获取YOLO每一层的名称 #getLayerNames&#xff08;&#xff09;&#xff1a;获取网络所有层的名称。 ln net.getLayerNames() # 获取输出层的名称: [yolo-82,yolo-94,yolo-106] # …

智慧交通day02-车流量检测实现13:基于虚拟线圈法的车辆统计+视频中的车流量统计原理解析

1.基于虚拟线圈法的车辆统计 基于虚拟线圈的车流量统计算法原理与交通道路上的常见的传统的物理线圈类似&#xff0c;由于物理线圈需要埋设在路面之下&#xff0c;因此会有安装、维护费用高&#xff0c;造成路面破坏等问题&#xff0c;而采用基于视频的虚拟线圈的车辆计数方法…

ubuntu 12.04 eclipse 安装

方法二&#xff1a;(优点是安装内容清爽&#xff0c;缺点是配置麻烦) 1、安装JDK&#xff0c;参考 Ubuntu 12.04 下安装 JDK 7 2、下载 Eclipse 从 http://www.eclipse.org/downloads/index-developer.php下载合适版本&#xff0c;如&#xff1a;Eclipse IDE for C/C Develope…

智慧交通day02-车流量检测实现14:代码汇总+问题修正

代码权重文件资源https://download.csdn.net/download/qq_39237205/43072746https://download.csdn.net/download/qq_39237205/43072746 环境要求&#xff1a;python2.7 环境配置&#xff1a;见文末requirements.txt 1.YOLO.py # encoding:utf-8 import imutils import tim…

从资源池和管理的角度理解物理内存

早就想搞一下内存问题了&#xff01;这次正趁着搞bigmemory内核&#xff0c;可以写一篇文章了。本文旨在记录&#xff0c;不包含细节&#xff0c;细节的话&#xff0c;google&#xff0c;百度均可&#xff0c;很多人已经写了不少了。我只是按照自己的理解记录一下内存的点点滴滴…

从头开始学一个android activity

一、类层次结构&#xff1a; 二、什么是Activity&#xff0c;如何理解Activity 1、 用户与应用程序的交互的接口 2、 控件的容器&#xff0c;我们要把控件摆放在这个容器中 三、如何创建一个Activity 新建一个类&#xff1a; 1、 继承Activity类 [java] view plaincopyprint…

python3 numpy中矩阵np.dot(a,b)乘法运算

python np.dot(a,b)乘法运算 首先我们知道矩阵运算是不满足交换律的&#xff0c;np.dot(a, b)与np.dot(b, a)是不一样的 另外np.dot(a,b)和a.dot(b)果是一样的 1.numpy中数组&#xff08;矩阵&#xff09;相乘np.dot(a,b)运算&#xff1a; 对于两数组a和b &#xff1a; 示例…

ML Backpropagation算法的计算过程举例

Backpropagation计算过程举例 初始权重(initialize weights)是随机产生的(如-1~1之间) 初始化可以选择均值为0&#xff0c;方差为1/n_in的正态分布&#xff0c;n_in为输入的实例个数&#xff0c;Python中可使用np.random.normal函数来初始化权重&#xff1a; np.random.normal…

Python基础知识__字符串

字符串介绍 一. 认识字符串 字符串是 Python 中最常用的数据类型。我们一般使用引号来创建字符串。创建字符串很简单&#xff0c;只要为变量分配一个值即可。 a hello world b "abcdefg" print(type(a)) print(type(b)) 注意&#xff1a;控制台显示结果为<cl…

智慧交通day03-车道线检测实现01:车道线检测概述

项目简介 汽车的日益普及在给人们带来极大便利的同时&#xff0c;也导致了拥堵的交通路况&#xff0c;以及更为频发的交通事故。而自动驾驶技术的出现可以有效的缓解了此类问题&#xff0c;减少交通事故&#xff0c;提升出行效率。 国内外检测车道线的方法主要有两类&#xf…