关键词:
logistic回归
很多时候我们需要基于一些样本数据去预测某个事件是否发生,如预测某事件成功与失败,某人当选总统是否成功等。
这个时候我们希望得到的结果是 bool型的,即 true or false
我们最先想到的是通过最小二乘法求出线性回归模型,
即 Y = WTX = w0x0 + w1x1 + w2x2 + ... + wnxn
X表示自变量向量,可以通过随机梯度算法求出上述的系数向量W
此时Y表示线性回归的预测值。
这时存在的问题是:
Y表示的是预测值,但是其可正,可负,可以很大,可以很小,我们无法通过Y得出二进制的结果
为了解决上面的问题,我们可以大胆假设该事件发生的概率的p且 logit(p) = Y
logit(p) 是一个统计学上的模型
由logit (p ) = Y求得
画图如下:
我们可以看出,对于任意的Y值,假设的概率值p都分布在[0,1]之间
这样我们可以规定任何p大于0.5的数据被分入1类,小于0.5被归入0类,从而得到bool型的结果
事实证明,上述的logit(p) 模型,在处理这种二分类预测中非常有用
这便是logistic回归
用logistic回归预测实例
数据集来源: http://archive.ics.uci.edu/ml/datasets/Haberman%27s+Survival
数据集说明:
该数据集包含了1958年-1970年在芝加哥大学的比林斯医院接受过乳房癌症手术的病人的存活率。数据集样例如下:
X1: 手术时病人年龄
X2: 患者手术年(年- 1900年)
X3: 检测阳性腋窝淋巴结数目(数值)
X4: 生存状态(class属性)1--患者活了5年或更长 , 0---病人在5年内死亡。
求当一个病人的数据为[X1,X2,X3] = [34,66,9]时我们可以通过logistic回归预测病人手术后是否有可能活过5年?
代码
1 # -*- coding:utf-8 -*- 2 import numpy as np 3 4 def load_data(file_name): 5 # 载入数据 6 data_mat = [] 7 labels = [] 8 9 with open(file_name) as file: 10 for line in file.readlines(): 11 line_arr = line.strip().split(\',\') 12 data_mat.append([float(line_arr[0]), float(line_arr[1]), float(line_arr[2])]) 13 labels.append(int(line_arr[3])) 14 return data_mat, labels 15 16 17 def sigmoid(x): 18 # 阶跃函数 19 if -x > np.log(np.finfo(type(x)).max): 20 return 0.0 21 else: 22 return 1.0 / (1 + np.exp(-x)) 23 24 25 def grad_ascent(data_mat, data_labels, num_iter=200): 26 """随机梯度上升算法""" 27 data_mat = np.array(data_mat) 28 m, n = np.shape(data_mat) 29 30 weights = np.ones(n).astype(np.float) 31 for j in range(num_iter): 32 data_index = list(range(m)) 33 for i in range(m): 34 alpha = 0.001 + 4 / (1.0 + j + i) 35 36 random_index = int(np.random.uniform(0, len(data_index))) 37 h = sigmoid(sum(data_mat[random_index] * weights)) 38 error = data_labels[random_index] - h 39 weights = weights + alpha * error * data_mat[random_index] 40 del (data_index[random_index]) 41 42 return weights 43 44 45 def test(x, name): 46 file_name = name 47 data_mat, labels = load_data(file_name) 48 weights = grad_ascent(data_mat, labels) 49 print(weights) 50 res = classify_vector(x, weights) 51 print(res) 52 53 54 def classify_vector(inx, weights): 55 prob = sigmoid(sum(inx * weights)) 56 if prob > 0.5: 57 return 1.0 58 else: 59 return 0.0 60 61 62 name = \'data/haberman.txt\' 63 test([72, 63, 0], name)
执行结果为 0
说明改病人很可能术后活不过5年。
以上只是logistic 回归的一个简单测试,所有代码已上传 https://github.com/beiyan1911/machine_learning/tree/master/logistic_reg
机器学习实战第五章logistic回归(代码片段)
defgradAscent(dataMatIn,classLabels):dataMatrix=mat(dataMatIn)#converttoNumPymatrixlabelMat=mat(classLabels).transpose()#converttoNumPymatrixm,n=shape(dataMatrix)alpha=0.001maxCycles=500weights=ones(( 查看详情
《机器学习实战》学习笔记:logistic回归(代码片段)
欢迎关注WX公众号:【程序员管小亮】【机器学习】《机器学习实战》读书笔记及代码总目录https://blog.csdn.net/TeFuirnever/article/details/99701256GitHub代码地址:https://github.com/TeFuirnever/Machine-Learning-in-Action——————————... 查看详情
机器学习logistic分类回归算法(二元分类&多元分类)(代码片段)
...合伙人,全栈领域优质创作者。该文章收录专栏✨—机器学习—✨【机器学习】logistics分类一、线性回归能用于分类吗?二、二元分类2.1假设函数2.1.1案例一2.1.2例子二2.2拟合logistic回归参数θi\\theta_iθi三、 查看详情
机器学习实战 logistic回归(代码片段)
logistic回归梯度上升法importnumpyasnp"""function:加载数据parameter:无returns:dataMat-数据集labelMat-标签集"""defloadDataSet():dataMat=[]#数据集labelMat=[]#标签集fr=open('testSet.txt')forlineinfr.readlines():lineArr=line.strip().split()dat... 查看详情
机器学习--logistics(代码片段)
摘要1.Logistic回归分类2.梯度下降法3.代码实现与解释 Logistic回归逻辑斯特回归(logisticregression)是一种非常经典的分类方法。其用到的分类函数一般为Sigmoid函数,其函数形式为: 其图形表示如下: 从图中我们可... 查看详情
机器学习实战笔记logistic回归
参考链接http://blog.csdn.net/lu597203933/article/details/38468303Logistic代码#Logistic回归分类使用梯度上升找最佳参数importnumpyasnpdefloadDataSet():datMat=[];labelMat=[]fr=open(‘testSet.txt‘)forlineinfr.readlines():lineAr 查看详情
机器学习-逻辑回归与线性回归(代码片段)
logistic回归与线性回归实际上有很多相同之处,最大的区别就在于他们的因变量不同,其他的基本都差不多,正是因为如此,这两种回归可以归于同一个家族,即广义线性模型(generalized linear model)。这一家族中的模型形... 查看详情
logistic回归(代码片段)
...利用sklearn实现参考资料结尾创作背景本菜鸡最近想学学机器学习,这不,刚开始。如果觉得我这篇文章写的好的话,能不能给我点个赞,评论一波。如果要点个关注的话也不 查看详情
ng机器学习视频笔记——logistic回归
ng机器学习视频笔记(四)——logistic回归 (转载请附上本文链接——linhxx) 一、概述1、基本概念 logistic回归(logisticregression),是一个分类(classification)算法(注意不是回归算法,... 查看详情
机器学习之logistic回归(逻辑回归)(代码片段)
目录Logistic回归博客园地址:https://www.cnblogs.com/chenyoude/git地址:https://github.com/nickcyd/machine_learning微信:a1171958281Logistic回归本章内容回归算法Logistic回归的一般过程Logistic的优缺点基于Logistic回归和Sigmoid函数的分类Sigmoid函数Logistic... 查看详情
《机器学习实战》logistic回归算法
=====================================================================《机器学习实战》系列博客是博主阅读《机器学习实战》这本书的笔记也包含一些其他python实现的机器学习算法 查看详情
机器学习:logistic回归原理及其实现
Logistic回归是机器学习中非常经典的一个方法,主要用于解决二分类问题,它是多分类问题softmax的基础,而softmax在深度学习中的网络后端做为常用的分类器,接下来我们将从原理和实现来阐述该算法的思想。1.原理a.问题描述考... 查看详情
机器学习实战第5章logistic回归
第5章Logistic回归Logistic回归概述Logistic回归虽然名字叫回归,但是它是用来做分类的。其主要思想是:根据现有数据对分类边界线建立回归公式,以此进行分类。须知概念Sigmoid函数回归概念假设现在有一些数据点,我们用一条直线... 查看详情
coursera机器学习logisticregression逻辑回归的项目(代码片段)
github : https://github.com/twomeng/logistic-regression-ex1.m 1%%MachineLearningOnlineClass-Exercise2:LogisticRegression2%3%Instructions4%------------5%6%Thisfilecontainscodethathelpsyo 查看详情
[机器学习实战]logistic回归
1.Logistic回归: 1)优点:计算代价不高,易于理解和实现; 2)缺点:容易欠拟合,分类精度可能不高; 3)适用数据类型:数值型和标称型数据; 2.分类思想: 根据现有数据对分类边界线建立回归公式,以此... 查看详情
机器学习实战精读--------logistic回归
Logistic回归的主要目的:寻找一个非线性函数sigmod最佳的拟合参数拟合、插值和逼近是数值分析的三大工具回归:对一直公式的位置参数进行估计拟合:把平面上的一些系列点,用一条光滑曲线连接起来logistic主要思想:根据现... 查看详情
机器学习——基础整理:线性回归;二项logistic回归;softmax回归;广义线性模型
...线性模型 二项Logistic回归是我去年入门机器学习时学的第一个模型,我觉得这个模型很适合用来入门(但是必须注意这个模型有很多很多很多很多可以展开的地方)。比较有意思的是那时候还不会矩阵微积分,... 查看详情
机器学习_logistic回归和梯度下降
原文:http://blog.csdn.net/dongtingzhizi/article/details/15962797 Logistic回归总结 PDF下载地址:http://download.csdn.net/detail/lewsn2008/65474631.引言 看了Stanford的AndrewNg老师的机 查看详情