博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
逻辑回归(1)
阅读量:6638 次
发布时间:2019-06-25

本文共 1733 字,大约阅读时间需要 5 分钟。

代码思路:

1、读取数据

read_scv  

2、预测模型函数:①sigmoid函数②预测函数

 
#sigmoid函数def sigmoid(z):    return 1/(1+np.exp(-z))
#计算预测模型的函数def model(X,theta):    return sigmoid(np.dot(X,theta.T))

 

3、目标函数(似然函数)

 
#计算目标值的函数(对数似然)def cost(X,Y,theta):    h=model(X,theta)    left=np.multiply(-Y,np.log(h))    right=np.multiply(1-Y,np.log(1-h))    return np.sum(left-right)/(len(X))

 

4、计算梯度的函数:

 
#计算梯度的函数def gradient(X,Y,theta):    grad=np.zeros(theta.shape)    error=(model(X,theta0)-Y).ravel()    for j in range(len(theta.ravel())):        term=np.multiply(error,X[:,j])        grad[j]=np.sum(term) / len(X)    return grad

 

 

5、梯度下降的函数(更新梯度值):

 
#对X,Y数据重新打乱(小批量梯度下降有用) import numpy.random def shuffleData(data):     np.random.shufflr(data)     cols=data.shape[1]     X=data[:,0:cols-1]     Y=data[:,cols-1:]     return X,Y #比较三种不同梯度下降方法STOP_ITER=0STOP_COST=1STOP_GRAD=2def stopCriterion(type,value,threshold):    #设定三种不同的停止策略    if type==STOP_ITER:        return value>threshold    elif type==STOP_COST:        return abs(value[-1]-value[-2]
=n: k=0 X,Y=shuffleData(data)#重新洗牌 theta=theta-alpha*grad#参数更新 costs.append(cost(X,Y,theta))#计算新的损失 i+=1 if stopType==STOP_ITER: value=i elif stopType==STOP_COST: value=costs elif stopType==STOP_GRAD: value=grad if stopCriterion(stopType,value,thresh): break return theta,i-1,costs,grad,time.time()-init.time

 

 

 

6、测试  
#训练数据theta0=np.array([0.0,0.0,0.0])X_train.insert(0,'ones',1)X=X_train.as_matrix()Y=Y_train.as_matrix()print(cost(X,Y,theta0))print(gradient(X,Y,theta0))

 

 

 

1、sigmoid函数:(也是预测函数)

2、逻辑回归过程:(目标函数)

(将目标函数转化成对数似然函数)

3、求导过程:

 

转载于:https://www.cnblogs.com/Lee-yl/p/9068300.html

你可能感兴趣的文章
Java 8: 从永久代(PermGen)到元空间(Metaspace)
查看>>
Lua 5.3.3 一个string.len的异常
查看>>
Hadoop2.2.0 入门教程(三)之HDFS SHELL脚本
查看>>
吉软—Java-Css+Div 实现导航
查看>>
jquery banner 轮播配置方法
查看>>
Linux 关机前执行脚本
查看>>
Java 基础数据类型 、 == 、 equals
查看>>
通俗易懂的 Npm 入门教程
查看>>
深入理解jQuery中live与bind方法的区别
查看>>
推荐一款不错的jquery时间控件(强大的处理事务性)
查看>>
不同系统下的回车\r和换行\n,及其历史
查看>>
Spring boot + io.springfox Swagger2 统一添加header 参数的方法:globalOperationParameters
查看>>
Java 复习 —— 一张图读懂多线程
查看>>
postgresql备份恢复之pg_dump大数据处理
查看>>
百万级数据下的mysql深度解析
查看>>
package-info.java——简介
查看>>
JavaScript 在数组指定位置插入元素
查看>>
URL匹配设计考
查看>>
使用hugo制作基于md文档的静态网站
查看>>
第四章-java多线程核心技术-Lock锁-第一篇
查看>>