logisticregression

  1 from numpy import *
  2 import random
  3 import time
  4 st = time.time()
  5
  6 def loaddata(filename):
  7     fr = open(‘‘.join([filename, ‘.txt‘])).readlines()
  8     trainx = [[1] + map(float, line.split()[:-1]) for line in fr] # trainx = [[1,12.2,22.4],[1,22.3,31.2],...]
  9     trainy = [[float(line.split()[-1])] for line in fr] # trainy = [0,1,1,0,...]
 10     return trainx, trainy
 11
 12 def sigmod(z):
 13     return 1.0 / (1 + exp(-z))
 14
 15 def optimizaion(trainx, trainy):
 16     trainxmat = mat(trainx)
 17     m = len(trainx)
 18     # beta = [0,0,0]
 19     beta = ones((len(trainx[0]),1)) # array
 20     # maxiter
 21     M = 500
 22     """
 23     # error permid
 24     e =
 25     """
 26     """
 27     for i in xrange(M):
 28         #if error2sum > e:
 29         # z = betat.T * x = trainx (matricdoc)* beta = [beta.Tx1,beta.Tx2,...,beta.Txn]
 30         sigmodz = sigmod(trainxmat * beta)
 31         # [error_i = yi - sigmod(zi)]
 32         error = trainy - sigmodz
 33         # update beta
 34         beta += alpha * trainxmat.T * error
 35         print beta
 36         """
 37     # random gradascent
 38     for j in xrange(M):
 39         for i in xrange(m):
 40             # per span
 41             alpha = 0.01 + 4 / (1.0 + i +j)
 42             randid = random.randint(0, m - 1)
 43             sigmodz = sigmod(trainxmat[randid] * beta)
 44             error = trainy[randid] - sigmodz
 45             beta += alpha * trainxmat[randid].T * error
 46             #print beta
 47
 48     return beta
 49
 50
 51 def logregress(testx, beta):
 52     if mat(testx) * beta > 0: return [1.0]
 53     else: return [0.0]
 54
 55 def main():
 56     # step 1: loading data...
 57     print "step 1: loading data..."
 58     trainx, trainy = loaddata(‘horseColicTraining‘)
 59     testx, testy = loaddata(‘horseColicTest‘)
 60     """
 61     print ‘trainx‘, trainx
 62     print ‘trainy‘, trainy
 63     print ‘testx‘, testx
 64     print ‘testy‘, testy
 65     print ‘testy[2]‘,testy[2]
 66     """
 67
 68     # step 2: training...
 69     print "step 2: training..."
 70     beta = optimizaion(trainx, trainy)
 71     #print "beta = ",beta
 72
 73     # step 3: testing...
 74     print "step 3: testing..."
 75     numTests = 10; errorSum = 0.0; l = len(testx)
 76     for j in xrange(numTests):
 77         errorcount = 0.0
 78         #print ‘the total number is: ‘,l
 79         for i in xrange(l):
 80             if logregress(testx[i], beta) != testy[i]:
 81                 errorcount += 1
 82         #print "the number of error is: ", errorcount
 83         print "the error rate is: ", (errorcount / l)
 84         errorSum += (errorcount / l)
 85     print "after %d iterations the average error rate is: %f" %(numTests, errorSum/numTests)
 86
 87
 88
 89 """
 90 trainx, trainy = loaddata(‘testSet‘)
 91 print trainy
 92 optimizaion(trainx, trainy)
 93 """
 94
 95 main()
 96
 97 print "cost time: ", (time.time() - st)
 98
 99 """ lineregres
100         # ssi = sigmod(zi) - sigmod(zi) ** 2
101         ss = [sigmodzi - sigmodzi ** 2 for sigmodzi in sigmodz]
102         # errssi = errori * ssi
103         errss = map(lambda x, y: x * y, error, ss)
104         # treri = errssi * trainxi(vector)
105         trer = [errss[i] * array(trainx[i]) for i in xrange(m)]
106         """
时间: 2024-10-12 08:28:45

logisticregression的相关文章

#关于 OneVsRestClassifier(LogisticRegression(太慢了,要用超过的机器)

#关于 OneVsRestClassifier #注意以下代码中,有三个类 from sklearn import datasets X, y = datasets.make_classification(n_samples=10000, n_classes=3) from sklearn.tree import DecisionTreeClassifier dt = DecisionTreeClassifier() dt.fit(X, y) print(dt.predict(X)) print

python 二元Logistics Regression 回归分析(LogisticRegression)

纲要 boss说增加项目平台分析方法: T检验(独立样本T检验).线性回归.二元Logistics回归.因子分析.可靠性分析 根本不懂,一脸懵逼状态,分析部确实有人才,反正我是一脸懵 首先解释什么是二元Logistic回归分析吧 二元Logistics回归 可以用来做分类,回归更多的是用于预测 官方简介: 链接:https://pythonfordatascience.org/logistic-regression-python/ Logistic regression models are u

简单机器学习——最简单分类算法(LogisticRegression二分类线性模型、LinearSVC一对其余分类器)

代码: # -- coding: gbk -- from sklearn.datasets import load_breast_cancer from pylab import * from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.svm import LinearSVC from sklearn.datase

逻辑回归(LogisticRegression)从疝气病预测病马的死亡率--python实现

背景:使用Logistic回归来预测患有疝气病的马的存活问题,这里的数据包括368个样本和28个特征,疝气病是描述马胃肠痛的术语,然而,这种病并不一定源自马的胃肠问题,其他问题也可能引发疝气病,该数据集中包含了医院检测马疝气病的一些指标,有的指标比较主观,有的指标难以测量,例如马的疼痛级别.另外,除了部分指标主观和难以测量之外,该数据还存在一个问题,数据集中有30%的值是缺失的. 1.准备数据:处理数据中的缺失值 数据中的缺失值是一个非常棘手的问题,那么数据缺失究竟带来了多少问题?假设有100个

逻辑回归(logistic-regression)之梯度下降法详解

引言 逻辑回归常用于预测疾病发生的概率,例如因变量是是否恶性肿瘤,自变量是肿瘤的大小.位置.硬度.患者性别.年龄.职业等等(很多文章里举了这个例子,但现代医学发达,可以通过病理检查,即获取标本放到显微镜下观察是否恶变来判断):广告界中也常用于预测点击率或者转化率(cvr/ctr),例如因变量是是否点击,自变量是物料的长.宽.广告的位置.类型.用户的性别.爱好等等. 本章主要介绍逻辑回归算法推导.梯度下降法求最优值的推导及spark的源码实现. 常规方法 一般回归问题的步骤是: 1. 寻找预测函数

逻辑回归(LogisticRegression)--python实现

1.概述 Logistic regression(逻辑回归)是当前业界比较常用的机器学习方法,用于估计某种事物的可能性. 在经典之作<数学之美>中也看到了它用于广告预测,也就是根据某广告被用 户点击的可能性,把最可能被用户点击的广告摆在用户能看到的地方,然后叫他“你点我啊!”用户点了,你就有钱收了.这就是为什么我们的电脑现在广告泛滥的 原因.还有类似的某用户购买某商品的可能性,某病人患有某种疾病的可能性啊等等.这个世界是随机的(当然了,人为的确定性系统除外,但也有可能有噪声或产生错误的结果,只

机器学习—逻辑回归理论简介

下面是转载的内容,主要是介绍逻辑回归的理论知识,先总结一下自己看完的心得 简单来说线性回归就是直接将特征值和其对应的概率进行相乘得到一个结果,逻辑回归则是这样的结果上加上一个逻辑函数 这里选用的就是Sigmoid函数,在坐标尺度很大的情况下类似于阶跃函数 在确认特征对应的权重值也就是回归系数的时候 最常用的方法是最大似然法,EM参数估计,这个是在一阶导数能够有解的前提下 如果一阶导数无法求得解析值,那么一般选取梯度上升法,通过有限次的迭代过程,结合代价函数更新回归系数至收敛 //////////

多层感知器学习

1.多层感知器简介 多层感知器(MLP)可以看做一个逻辑回归,不过它的输入要先进行一个非线性变换,这样数据就被映射到线性可分的空间了,这个空间我们称为隐藏层.通常单层隐藏层就可以作为一个感知器了,其结构如下图所示: 这里输入层首先通过权重矩阵和偏置得到总输出值并且通过tanh函数作一个非线性变换就可以得到hidden layer,然后从hidden layer到output layer可以使用之前的逻辑回归进行操作. 这里我们同样使用SGD算法来对参数进行更新,参数共有四个,分别是input-h

大数据日知录:架构与算法

大数据丛书 大数据日知录:架构与算法(大数据领域专家力作,专注大数据架构和算法,全面梳理大数据相关技术) 张俊林 著   ISBN 978-7-121-24153-6 2014年9月出版 定价:69.00元 404页 16开 编辑推荐 这是一本心血之作,历时3年,质量上乘. 从架构与算法的角度,比较全面地分门别类梳理了大数据相关技术. 本书内容紧跟技术前沿,讲解深入浅出,适合大数据领域所有技术人员. 书中还列有作者优选的高质量文献,能为读者节省选择的时间,绝对值得一读. 内容提要 大数据是当前最