机器学习-非线性回归(Logistic Regression)及应用
1. 概率
1.1 定义:概率(Probability):对一件事情发生的可能性的衡量。
1.2 范围:0 <= P <= 1
1.3 计算方法:
1.3.1 根据个人置信
1.3.2 根据历史数据
1.3.3 根据模拟数据
1.4 条件概率:
2. Logistic Regression(逻辑回归)
2.1 列子:模拟癌症肿瘤是良性还是恶性
h(x) > 0.5
h(x) > 0.2
2.2 基本模型
测试数据为:
要学习的参数为:
向量表示:
由于y取值在[0,1]之间,所有需要处理二值数据,引入Sigmoid函数来使得曲线平滑化
预测函数:
用概率表示:
正例(y = 1):
反例(y = 0):
2.3 Cost函数
线性回归:
(预测值-实例值)
(类似于线性模型)
在简单线性模型中找到合适的使得上式最小
Logistic regression:
Cost函数:
上式合并可以得到下面的式子
目标:找到合适的使得上式最小
2.4 解法:梯度下降法(gradient decent)
为学习率
更新法则:
为学习率
同时对所有的进行更新,重复更新知道收敛
# -*- coding:utf-8 -*- import numpy as np
import random #产生模拟数据 numPoints实例个数 bias偏好值 variance方差
def genData(numPoints, bias, variance):
x = np.zeros(shape=(numPoints, 2))
y = np.zeros(shape=(numPoints)) #1行 如:1x100
for i in range(0, numPoints):#每一行循环
x[i][0] = 0 #每行第一列等于1
x[i][1] = i #每行第二列等于i
y[i] = (i + bias) + random.uniform(0, 1) + variance
return x,y #梯度下降
def gradientDescent(x, y, theta, alpha, m, numIterations): #alpha学习率 m实例个数 numIterations更新次数
xTran = np.transpose(x)#转置
for i in range(numIterations):
hypothesis = np.dot(x, theta)#估计值
loss = hypothesis - y#估计值-实际值
cost = np.sum(loss**2)/(2*m)#这里的定义最简单的cost函数和实际定义有出入
gradient = np.dot(xTran,loss)/m#更新量
theta = theta - alpha*gradient
print("Iteration %d | cost: %f" %(i, cost))
return theta #测试
x, y = genData(100, 25, 10)
# print("x:")
# print(x)
# print("y:")
# print(y)
#
m, n = np.shape(x)
n_y = np.shape(y)
#
# print("x_shape:" ,str(m)," ",str(n))
# print("y_shape:" , str(n_y)) numIterations = 100000
alpha = 0.0005
theta = np.ones(n)
theta = gradientDescent(x, y, theta, alpha, m, numIterations)
print(theta)
机器学习-非线性回归(Logistic Regression)及应用的更多相关文章
- 【机器学习】Logistic Regression 的前世今生(理论篇)
Logistic Regression 的前世今生(理论篇) 本博客仅为作者记录笔记之用,不免有非常多细节不正确之处. 还望各位看官能够见谅,欢迎批评指正. 博客虽水,然亦博主之苦劳也. 如需转载,请 ...
- Python机器学习笔记 Logistic Regression
Logistic回归公式推导和代码实现 1,引言 logistic回归是机器学习中最常用最经典的分类方法之一,有人称之为逻辑回归或者逻辑斯蒂回归.虽然他称为回归模型,但是却处理的是分类问题,这主要是因 ...
- 【模式识别与机器学习】——logistic regression
虽然叫做“回归”,但是这个算法是用来解决分类问题的.回归与分类的区别在于:回归所预测的目标量的取值是连续的(例如房屋的价格):而分类所预测的目标变量的取值是离散的(例如判断邮件是否为垃圾邮件).当然, ...
- 在opencv3中实现机器学习之:利用逻辑斯谛回归(logistic regression)分类
logistic regression,注意这个单词logistic ,并不是逻辑(logic)的意思,音译过来应该是逻辑斯谛回归,或者直接叫logistic回归,并不是什么逻辑回归.大部分人都叫成逻 ...
- Stanford机器学习---第三讲. 逻辑回归和过拟合问题的解决 logistic Regression & Regularization
原文:http://blog.csdn.net/abcjennifer/article/details/7716281 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归 ...
- 机器学习总结之逻辑回归Logistic Regression
机器学习总结之逻辑回归Logistic Regression 逻辑回归logistic regression,虽然名字是回归,但是实际上它是处理分类问题的算法.简单的说回归问题和分类问题如下: 回归问 ...
- 机器学习入门11 - 逻辑回归 (Logistic Regression)
原文链接:https://developers.google.com/machine-learning/crash-course/logistic-regression/ 逻辑回归会生成一个介于 0 ...
- 李宏毅机器学习笔记3:Classification、Logistic Regression
李宏毅老师的机器学习课程和吴恩达老师的机器学习课程都是都是ML和DL非常好的入门资料,在YouTube.网易云课堂.B站都能观看到相应的课程视频,接下来这一系列的博客我都将记录老师上课的笔记以及自己对 ...
- 【机器学习】逻辑回归(Logistic Regression)
注:最近开始学习<人工智能>选修课,老师提纲挈领的介绍了一番,听完课只了解了个大概,剩下的细节只能自己继续摸索. 从本质上讲:机器学习就是一个模型对外界的刺激(训练样本)做出反应,趋利避害 ...
随机推荐
- maven国内镜像、国内外仓库(直接下载jar)
阿里: https://maven.aliyun.com/mvn/search 官方: http://repo.maven.apache.org/maven2/ maven仓库 阿里巴巴的镜像仓库, ...
- 12个Sublime Text应用技巧[转载]
本文为您提供Sublime Text编辑器的12个技巧和诀窍,深入挖掘这个看似简洁的代码编辑器,背后所隐藏的实现各种高级功能的无限可能. 1) 选择 以下是一些Sublime Text选择文本的快捷键 ...
- [mysql]多个字段确定唯一性-联合唯一索引
一.联合唯一索引项目中需要用到联合唯一索引: 例如:有以下需求:每个人每一天只有可能产生一条记录:处了程序约定之外,数据库本身也可以设定: 例如:t_aa 表中有aa,bb两个字段,如果不希望有2条一 ...
- 【8】ie css hack
1. "\9" IE6/IE7/IE8/IE9/IE10都生效 "\0" IE8/IE9/IE10都生效,是IE8/9/10的hack "\9 ...
- 阶段3 2.Spring_02.程序间耦合_7 分析工厂模式中的问题并改造
循环打印 工厂了的打印先注释掉 打印出来了5次对象. 打印数字i同时,让i++操作.为了看他被常见了几次实例 调用保存的方法 没个都想都有一个唯一的实例.在创建对象的时候,重新初始化了i的值.所以i每 ...
- 阶段3 2.Spring_02.程序间耦合_5 编写工厂类和配置文件
先把dao的实现复制一份到别的地方.然后删除项目里面的AccountDaoImpl这个dao的实现类 删除 service层就开始报错了 这个时候运行直接报错 把文件复制回来就不报错了 解决依赖关系 ...
- conftest.py作用范围
前言 一个测试工程下是可以有多个conftest.py的文件,一般在工程根目录放一个conftest.py起到全局作用.在不同的测试子目录也可以放conftest.py,作用范围只在该层级以及以下目录 ...
- Linux上几款好用的字幕编辑器
如果你经常看国外的大片,你应该会喜欢带字幕版本而不是有国语配音的版本.我在法国长大,童年的记忆里充满了迪斯尼电影.但是这些电影因为有了法语 的配音而听起来很怪.如果现在有机会能看原始的版本,我想,对于 ...
- C#学习笔记四(LINQ,错误和异常,异步编程,反射元数据和动态编程)
LINQ 1.使用类似的数据库语言来操作集合? 错误和异常 异步编程 1.异步和线程的区别: 多线程和异步操作两者都可以达到避免调用线程阻塞的目的.但是,多线程和异步操作还是有一些区别的.而这些区别造 ...
- mysql默认的存储引擎是什么?它们的区别有哪些?mysql中索引有哪些?
1.mysql默认引擎 mysql-5.1版本之前默认引擎是MyISAM,之后是innoDB 2.关系 MyISAM是非集聚引擎,支持全文索引;不支持事务;它是表级锁;会保存表的具体行数. innoD ...