logistic regression
来源:互联网 发布:婚恋软件 编辑:程序博客网 时间:2024/06/09 13:23
logistic regression就是逻辑回归。感觉上就是把数据进行分类,然后对输入样本进行预测。
为了区分许多邮件中存在的垃圾邮件,
我们假设:
y = 1 不是垃圾邮件
y = 0 是垃圾邮件
要是y只能去0或1,提出了sigmoid函数
定义:
g(z) >= 0.5, y=1
g(z) < 0.5, y=1
然后定义一组数据{x1,x2,x3..,xn}代表邮件信息
所以当h(x) >= 0.5 ,y = 1;h(x) < 0.5, y = 0;
cost function :
Gradient Descent:
伪代码如下:
每一个回归系数为1:
重复R次:
计算数据
更新回归系数
返回回归系数
书上例举了三种更新回归系数的方法。
1.计算alphas*回归系数的向量(计算整个数据集)
def gradient(dataArr,labelArr): dataArr = np.mat(dataArr) labelArr = np.mat(labelArr).transpose() m,n = np.shape(dataArr) alphas = 0.001 weights = np.ones((n,1)) for i in range(500): h = sigmoid(dataArr*weights) error = labelArr - h weights = weights + alphas * dataArr.transpose() * error return weights.tolist()
结果图
2.计算alphas*回归系数的向量(计算当前样本的)
def gradient0(dataArr,labelArr): m,n = np.shape(dataArr) weights = np.ones(n) alphas = 0.01 for i in range(m): h = sigmoid(sum(dataArr[i]*weights)) error = labelArr[i] - h weights = weights + alphas * error * np.array(dataArr[i]) return weights
结果图:
3.时时更新alphas*回归系数(随机取样)
def gradient1(dataArr,labelArr,num=150): m,n = np.shape(dataArr) weights = np.ones(n) for i in range(num): dataIndex = range(m) for j in range(m): alphas = 4/(1.0+j+i) + 0.01 randomIndex = int(np.random.uniform(0,len(dataIndex))) h = sigmoid(sum(dataArr[randomIndex]*weights)) error = labelArr[randomIndex] - h weights = weights + alphas * error * np.array(dataArr[randomIndex]) np.delete(dataIndex,dataIndex[randomIndex]) return weights
结果图
阅读全文
0 0
- logistic regression
- logistic regression
- logistic regression
- Logistic Regression
- Logistic Regression
- logistic regression
- Logistic Regression
- Logistic Regression
- logistic regression
- Logistic regression
- Logistic Regression
- Logistic Regression
- Logistic Regression
- Logistic Regression
- Logistic Regression
- logistic regression
- logistic Regression
- Logistic regression
- 大创log03(07/20)
- [ZJOI2008]骑士
- 简单的选项卡
- mv命令写错路径执行后,文件不见了~
- 1.请定义一个交通工具(Vehicle)的类其中有: 属性: 速度(speed)、 体积(size)等,方法:移动(move())、设置速度(setSpeed(int speed))、加速 spee
- logistic regression
- 常用的排序算法的时间复杂度和空间复杂度(转)
- Unrecognized Windows Sockets error: 0: JVM_Bind 异常解决办法
- 编写 Java 程序用于显示人的姓名和年龄。定义一个人类Person。 该类中应该有两个私有属性: 姓名 (name) 和年龄 (age) 。定义构造方法用来初始化数据成员。再定义显示(displa
- freeswitch安装与配置
- LinkedList(链表列表)
- Almost Union-Find(可删除元素的并查集)
- 浅析TCP协议中URG和PSH的区别与联系
- 技术成长之路 开启