from numpy import *
import random
import time
st = time.time() def loaddata(filename):
fr = open(''.join([filename, '.txt'])).readlines()
trainx = [[1] + map(float, line.split()[:-1]) for line in fr] # trainx = [[1,12.2,22.4],[1,22.3,31.2],...]
trainy = [[float(line.split()[-1])] for line in fr] # trainy = [0,1,1,0,...]
return trainx, trainy def sigmod(z):
return 1.0 / (1 + exp(-z)) def optimizaion(trainx, trainy):
trainxmat = mat(trainx)
m = len(trainx)
# beta = [0,0,0]
beta = ones((len(trainx[0]),1)) # array
# maxiter
M = 500
"""
# error permid
e =
"""
"""
for i in xrange(M):
#if error2sum > e:
# z = betat.T * x = trainx (matricdoc)* beta = [beta.Tx1,beta.Tx2,...,beta.Txn]
sigmodz = sigmod(trainxmat * beta)
# [error_i = yi - sigmod(zi)]
error = trainy - sigmodz
# update beta
beta += alpha * trainxmat.T * error
print beta
"""
# random gradascent
for j in xrange(M):
for i in xrange(m):
# per span
alpha = 0.01 + 4 / (1.0 + i +j)
randid = random.randint(0, m - 1)
sigmodz = sigmod(trainxmat[randid] * beta)
error = trainy[randid] - sigmodz
beta += alpha * trainxmat[randid].T * error
#print beta return beta def logregress(testx, beta):
if mat(testx) * beta > 0: return [1.0]
else: return [0.0] def main():
# step 1: loading data...
print "step 1: loading data..."
trainx, trainy = loaddata('horseColicTraining')
testx, testy = loaddata('horseColicTest')
"""
print 'trainx', trainx
print 'trainy', trainy
print 'testx', testx
print 'testy', testy
print 'testy[2]',testy[2]
""" # step 2: training...
print "step 2: training..."
beta = optimizaion(trainx, trainy)
#print "beta = ",beta # step 3: testing...
print "step 3: testing..."
numTests = 10; errorSum = 0.0; l = len(testx)
for j in xrange(numTests):
errorcount = 0.0
#print 'the total number is: ',l
for i in xrange(l):
if logregress(testx[i], beta) != testy[i]:
errorcount += 1
#print "the number of error is: ", errorcount
print "the error rate is: ", (errorcount / l)
errorSum += (errorcount / l)
print "after %d iterations the average error rate is: %f" %(numTests, errorSum/numTests) """
trainx, trainy = loaddata('testSet')
print trainy
optimizaion(trainx, trainy)
""" main() print "cost time: ", (time.time() - st) """ lineregres
# ssi = sigmod(zi) - sigmod(zi) ** 2
ss = [sigmodzi - sigmodzi ** 2 for sigmodzi in sigmodz]
# errssi = errori * ssi
errss = map(lambda x, y: x * y, error, ss)
# treri = errssi * trainxi(vector)
trer = [errss[i] * array(trainx[i]) for i in xrange(m)]
"""

logisticregression的更多相关文章

  1. theano中的logisticregression代码学习

    1 class LogisticRegression (object): 2 def __int__(self,...): 3 4 #定义一些与逻辑回归相关的各种函数 5 6 def method1( ...

  2. 【deep learning学习笔记】注释yusugomori的LR代码 --- LogisticRegression.h

    继续看yusugomori的代码,看逻辑回归.在DBN(Deep Blief Network)中,下面几层是RBM,最上层就是LR了.关于回归.二类回归.以及逻辑回归,资料就是前面转的几篇.套路就是设 ...

  3. 【deep learning学习笔记】注释yusugomori的LR代码 --- LogisticRegression.cpp

    模型实现代码,关键是train函数和predict函数,都很容易. #include <iostream> #include <string> #include <mat ...

  4. python 10大算法之二 LogisticRegression 笔记

    使用的包 import matplotlib.pyplot as plt import pandas as pd import numpy as npfrom sklearn import datas ...

  5. sklearn.linear_model.LogisticRegression参数说明

    目录 sklearn.linear_model.LogisticRegression sklearn.linear_model.LogisticRegressionCV sklearn.linear_ ...

  6. 基于jieba,TfidfVectorizer,LogisticRegression进行搜狐新闻文本分类

    一.简介 此文是对利用jieba,word2vec,LR进行搜狐新闻文本分类的准确性的提升,数据集和分词过程一样,这里就不在叙述,读者可参考前面的处理过程 经过jieba分词,产生24000条分词结果 ...

  7. python3二元Logistics Regression 回归分析(LogisticRegression)

    纲要 boss说增加项目平台分析方法: T检验(独立样本T检验).线性回归.二元Logistics回归.因子分析.可靠性分析 根本不懂,一脸懵逼状态,分析部确实有人才,反正我是一脸懵 首先解释什么是二 ...

  8. Spark LogisticRegression 逻辑回归之建模

    导入包 import org.apache.spark.sql.SparkSession import org.apache.spark.sql.Dataset import org.apache.s ...

  9. Spark LogisticRegression 逻辑回归之简介

    LogisticRegression简介

  10. LogisticRegression 和 LogisticRegressionCV

    在scikit-learn中,与逻辑回归有关的主要是这3个类.LogisticRegression, LogisticRegressionCV 和logistic_regression_path.其中 ...

随机推荐

  1. BZOJ 1011 [HNOI2008]遥远的行星

    1011: [HNOI2008]遥远的行星 Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special JudgeSubmit: 2559  Solved ...

  2. HDOJ(HDU) 1976 Software Version(简单判断)

    Problem Description 相信大家一定有过在网上下载软件而碰到多个不同版本的情况. 一般来说,软件的版本号由三个部分组成,主版本号(Major Version Number),子版本号( ...

  3. 下载gtest

    gtest的官网地址:https://github.com/google/googletest 方式一:下载打包好的版本 在github的页面上可以直接下载打包好的gtest,下载入口如下图所示: 方 ...

  4. Event — Windows API

    Event即事件是一种用于进行线程/进程间同步的对象,事件有置位和复位两种状态,当线程通过waiting functions等待Event对象置位时该线程将进入阻塞状态,当该Event对象被置位或等待 ...

  5. mvc系统过滤器

    一.系统过滤器使用说明 1.OutputCache过滤器 OutputCache过滤器用于缓存你查询结果,这样可以提高用户体验,也可以减少查询次数.它有以下属性: Duration:缓存的时间,以秒为 ...

  6. Effective C++ 第二版 40)分层 41)继承和模板 42)私有继承

    条款40 通过分层来体现"有一个"或"用...来实现" 使某个类的对象成为另一个类的数据成员, 实现将一个类构筑在另一个类之上, 这个过程称为 分层Layeri ...

  7. nexus私服安装

    一.搭建nexus私服.当前服务器版本是jdk1.8    . nexus安装包下载:http://www.sonatype.org/nexus/archived 先是下载目前最新的版本 Nexus ...

  8. cocos2d-x精灵移动的方法

    1.飞机发射子弹型 想要实现子弹的的飞行效果,又不想在每帧Update里计算位置,最好的方法调用CCMoveTo 例在发射子弹的时机,能够ccTouchBegan时: CCMoveTo* move = ...

  9. 指针-->字符串

    1. 以字符串形式出现的,编译器都会为该字符串自动添加一个0作为结束符. 如在代码中写"abc",那么编译器帮你存储的是"abc\0". 2. "ab ...

  10. Garbage Collectors - Serial vs. Parallel vs. CMS vs. G1 (and what's new in Java 8)--转

    The 4 Java Garbage Collectors - How the Wrong Choice Dramatically Impacts Performance The year is 20 ...