逻辑回归&&code
没有正则化项的时候的二分类


#-*-coding=utf-8-*-
from numpy import loadtxt,where, transpose
import matplotlib.pyplot as plt
from ipykernel.pylab.backend_inline import show
import numpy as np
from scipy.optimize import minimize def sigmoid(x): return 1.0/(1+np.e**(-1.0*x)) def cost(theat,x,y):
m=len(x)
J=-(1.0/m)*(transpose(y).dot(np.log(sigmoid(x.dot(theat))))+transpose(1-y).dot(np.log(1-sigmoid(x.dot(theat)))));
if np.isnan(J):
return(np.inf)
return J def gradient(theat,x,y):
m=len(x)
h=sigmoid(x.dot(transpose(theat)))
grad=(1.0/m)*(h-y).dot(x)
return grad def gradient_two(theat,x,y,alpha=0.0001,iteration=40000000):
m=len(x)
for i in xrange(iteration):
h=sigmoid(x.dot(theat))
grad1=theat[0]-alpha*(1.0/m)*transpose(h-y).dot(x[:,0]);
grad2=theat[1]-alpha*(1.0/m)*transpose(h-y).dot(x[:,1]);
grad3=theat[2]-alpha*(1.0/m)*transpose(h-y).dot(x[:,2]);
theat[0],theat[1],theat[2]=grad1,grad2,grad3
print 'cost',cost(theat,x,y)
print 'grad',grad1,grad2,grad3
return theat if __name__=="__main__": data=loadtxt(r'D:/机器学习/【批量下载】data1等/数据挖掘/ml_data/data1.txt',delimiter=',');
x=np.c_[np.ones((len(data),1)),data[:,0:2]];
y=data[:,2]
theat=np.zeros(x.shape[1]);
theat=transpose(theat);
theat=gradient_two(theat,x,y);
#res = minimize(cost, theat, args=(x,y), jac=gradient, options={'maxiter':400})
#print res
'''最后结果
theat[0]=-22.3021297062;
theat[1]=0.183373208731;
theat[2]=0.178329470851;
'''
x1=[20,100]
y1=[-(theat[0]+theat[1]*x1[0])*1.0/theat[2],-(theat[0]+theat[1]*x1[1])*1.0/theat[2]]
plt.plot(x1,y1)
pos=where(y==1)
neg=where(y==0)
plt.scatter(x[pos,1],x[pos,2],marker='o',c='b')
plt.scatter(x[neg,1],x[neg,2],marker='x',c='r')
plt.show()

加上正则化后的损失函数和公式(不想再写代码了,意会就可以了 ,逃。。。。


逻辑回归&&code的更多相关文章
- stanford coursera 机器学习编程作业 exercise 3(逻辑回归实现多分类问题)
本作业使用逻辑回归(logistic regression)和神经网络(neural networks)识别手写的阿拉伯数字(0-9) 关于逻辑回归的一个编程练习,可参考:http://www.cnb ...
- Theano3.3-练习之逻辑回归
是官网上theano的逻辑回归的练习(http://deeplearning.net/tutorial/logreg.html#logreg)的讲解. Classifying MNIST digits ...
- DeepLearning之路(一)逻辑回归
逻辑回归 1. 总述 逻辑回归来源于回归分析,用来解决分类问题,即预测值变为较少数量的离散值. 2. 基本概念 回归分析(Regression Analysis):存在一堆观测资料,希望获得数据内 ...
- 斯坦福第六课:逻辑回归(Logistic Regression)
6.1 分类问题 6.2 假说表示 6.3 判定边界 6.4 代价函数 6.5 简化的成本函数和梯度下降 6.6 高级优化 6.7 多类分类:一个对所有 6.1 分类问题 在分类问题中 ...
- Matlab实现线性回归和逻辑回归: Linear Regression & Logistic Regression
原文:http://blog.csdn.net/abcjennifer/article/details/7732417 本文为Maching Learning 栏目补充内容,为上几章中所提到单参数线性 ...
- Stanford机器学习---第三讲. 逻辑回归和过拟合问题的解决 logistic Regression & Regularization
原文:http://blog.csdn.net/abcjennifer/article/details/7716281 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归 ...
- 深度学习实践系列(1)- 从零搭建notMNIST逻辑回归模型
MNIST 被喻为深度学习中的Hello World示例,由Yann LeCun等大神组织收集的一个手写数字的数据集,有60000个训练集和10000个验证集,是个非常适合初学者入门的训练集.这个网站 ...
- 机器学习系列(3)_逻辑回归应用之Kaggle泰坦尼克之灾
作者:寒小阳 && 龙心尘 时间:2015年11月. 出处: http://blog.csdn.net/han_xiaoyang/article/details/49797143 ht ...
- 【机器学习】Octave 实现逻辑回归 Logistic Regression
ex2data1.txt ex2data2.txt 本次算法的背景是,假如你是一个大学的管理者,你需要根据学生之前的成绩(两门科目)来预测该学生是否能进入该大学. 根据题意,我们不难分辨出这是一种二分 ...
随机推荐
- 解决Apache/PHP无法启动的问题
最近经常被问到Apache无法启动的情况,所以写一篇文章,总结一下Windows下经常遇到的 Apache/PHP 无法启动的情况的解决方法. Apache/PHP 无法启动分两种情况: 1..Apa ...
- java内存设置
在上边红色框内加入java内存设置命令: -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
- linux 防火墙开启80端口永久保存
经常使用CentOS的朋友,可能会遇到和我一样的问题.开启了防火墙导致80端口无法访问,刚开始学习centos的朋友可以参考下.经常使用CentOS的朋友,可能会遇到和我一样的问题.最近在Linux ...
- 使用NIFTI指令画nii图像
❤ 关于几种显示工具 mricro:显示出来的左右脑是反着的: mricroN,SPM,xjview,BrainNetViewer:显示出的左右脑是正确的,并且对于做过仿射变换的图像可以自动识别并且校 ...
- ASP.NET 单点登陆
第一种:同主域但不同子域之间实现单点登陆 Form验证其实是基于身份cookie的验证.客户登陆后,生成一个包含用户身份信息(包含一个ticket)的cookie,这个cookie的名字就是在web. ...
- usb驱动开发12之设备生命线
函数usb_control_msg完成一些初始化后调用了usb_internal_control_msg之后就free urb.剩下的活,全部留给usb_internal_control_msg去做了 ...
- 使用gogs,drone搭建自动部署
使用gogs,drone搭建自动部署 使用gogs,drone,docker搭建自动部署测试环境 Gogs是一个使用go语言开发的自助git服务,支持所有平台Docker是使用go开发的开源容器引擎D ...
- Kth Smallest Element in a BST
Given a binary search tree, write a function kthSmallest to find the kth smallest element in it. Not ...
- Linux shell文本过滤
正则表达式 --概念:一种用来描述文本模式的特殊语法 --由普通字符(例如:字符a到z),以及特殊字符(元字符,如/*?等)组成匹配的字符串 --文本过滤工具在某种模式之下,都支持正则表达式 --基本 ...
- MFC 调试方法
AfxDebugBreak MFC 提供特殊的 AfxDebugBreak 函数,以供在源代码中对断点进行硬编码: AfxDebugBreak( ); 在 Intel 平台上,AfxD ...