[方法转]http://www.powerxing.com/logistic-regression-in-python/

http://blog.csdn.net/lipengcn/article/details/49592221

机器学习公开课:http://www.cnblogs.com/python27/p/MachineLearningWeek03.html

逻辑回归梯度下降法详解:http://blog.csdn.net/lookqlp/article/details/51161640

http://blog.sae.sina.com.cn/archives/3888

不调用包:http://blog.csdn.net/zouxy09/article/details/20319673

http://blog.csdn.net/lsldd/article/details/41551797

参数调优:http://www.weixinla.com/document/31127980.html

【总结】

逻辑回归找到最优化的参数有2种方法,这两种方法得出的最优结果是一致的,有时候容易弄混淆。这里总结一下:

方法1:利用最大似然函数方法(样本出现概率最大)

参考上述【http://blog.csdn.net/lookqlp/article/details/51161640】

求出每个样本出现的概率,再把所有样本出现的概率表达式计算出来,利用最大似然函数求出整体出现概率最大时的参数θ。

预测函数:

按照求最大似然函数的方法,逻辑回归似然函数:

     

我们的目标是求最大l(θ)时的θ,如上函数是一个上凸函数,可以使用梯度上升来求得最大似然函数值(最大值)。或者上式乘以-1,变成下凸函数,就可以使用梯度下降来求得最小负似然函数值(最小值):

可以在似然函数前加一个1/m,构成与线性回归类似形式的损失函数:

J(θ)=−(1/m)*l(θ)

利用梯度下降法求出θ即可。

方法2:利用损失函数最小法  

参考:【  http://www.cnblogs.com/python27/p/MachineLearningWeek03.html】

构造预测函数:

解释:

此外由于y只能取0或者1两个值,换句话说,一个数据要么属于0分类要么属于1分类,假设已经知道了属于1分类的概率是p,

那么当然其属于0分类的概率则为1-p,这样我们有以下结论:

构造损失函数:(注意与线性模型的损失函数不同)

简化上述函数形式,即得最终损失函数:

m是样本数,是平均误差损失loss的,预防两次样本不一样导致的损失函数值差异很大。

**【注意】方法2的损失函数与方法1的似然函数完全一致。而且也是用梯度下降方法找出时损失函数最小的θ,故结果与方法1是一致的。

 ***梯度下降的方法的推导:

自己 写的实例:

源数据excel表,内容如下:

age amount grade gender
18 208182 6 0
18 26141 8 1
18 325354 9 0
18 183147 5 1
18  13923 5 1

import os
import codecs
import numpy as np
import pandas as pd
import statsmodels.api as sm
import pylab as pl
import csv

#数据读入,变量准备

os.chdir('/Users/zhangb/Desktop/python学习文件')

df=pd.read_excel('model.xlsx','工作表1')

dummy_ranks=pd.get_dummies(df['gender'],prefix='gender')  #定义哑变量

cols_to_keep=['age','amount','grade']
data=df[cols_to_keep].join(dummy_ranks.ix[:,'gender_1':])   #分2类,保留一个哑变量类别
#print(data.head())
data['intercept']=1   #加入截距项

# 执行逻辑回归 把gender当做要预测的分类变量

trains=data.columns[0:3]
logit=sm.Logit(data['gender_1'],data[trains])
result=logit.fit()
#print(result.summary())

#预测

import copy
combos=copy.deepcopy(data)
pred=combos.columns[0:3]
combos['intercept']=1
combos['predict']=result.predict(combos[pred])
a=result.predict(combos[pred])

total=0
hit=0
for value in combos.values:   #统计预测效果
     predict=value[-1]
     gender=int(value[3])
     if predict >0.5:
           total +=1
           if gender==1:
           hit +=1

#输出结果

print('total:%d,hit:%d,precision:% .2f' %(total,hit,100*hit/total))
print(combos.head())

print(pred)
print(a[1:10])

#结果导入csv;txt文件

vv=combos.values   #去除pandas数据的所有值
pp=list(vv)

#结果数据导入csv文件

with open ('output.csv','w',newline='') as data2:
         bb=csv.writer(data2,dialect=('excel'))
         bb.writerow(['age','amount','grade','gender_1','intercept','predict'])
         bb.writerows(pp)
data2.close

#结果数据导入txt文件

f1=open('out.txt','w')
       for i in pp:
       a1=list(i)
       a2=str(a1)[1:-1].replace(',','')
       f1.write(a2+'\n')
f1.close()

=============完========

#小练习语句

#df = pd.read_csv('model.csv','r',encoding='gbk')
#print(df.head())
#print (df['gender'][0:4])
#print(df.columns)
#print (df.describe())
#print (df.std())
#print(df[0:3])

#print(df.head())
#print(df.iloc[0:3,1:3])
#print(pd.crosstab(df['gender'],df['grade'],rownames=['gender'])) 交叉表
#df.hist()
#pl.show()

逻辑回归 logit的更多相关文章

  1. 逻辑回归 Logistic Regression

    逻辑回归(Logistic Regression)是广义线性回归的一种.逻辑回归是用来做分类任务的常用算法.分类任务的目标是找一个函数,把观测值匹配到相关的类和标签上.比如一个人有没有病,又因为噪声的 ...

  2. 用R做逻辑回归之汽车贷款违约模型

    数据说明 本数据是一份汽车贷款违约数据 application_id    申请者ID account_number 账户号 bad_ind            是否违约 vehicle_year  ...

  3. 逻辑回归算法的原理及实现(LR)

    Logistic回归虽然名字叫"回归" ,但却是一种分类学习方法.使用场景大概有两个:第一用来预测,第二寻找因变量的影响因素.逻辑回归(Logistic Regression, L ...

  4. Python实践之(七)逻辑回归(Logistic Regression)

    机器学习算法与Python实践之(七)逻辑回归(Logistic Regression) zouxy09@qq.com http://blog.csdn.net/zouxy09 机器学习算法与Pyth ...

  5. 逻辑回归:使用SGD(Stochastic Gradient Descent)进行大规模机器学习

    Mahout学习算法训练模型 mahout提供了许多分类算法,但许多被设计来处理非常大的数据集,因此可能会有点麻烦.另一方面,有些很容易上手,因为,虽然依然可扩展性,它们具有低开销小的数据集.这样一个 ...

  6. 利用TensorFlow实现多元逻辑回归

    利用TensorFlow实现多元逻辑回归,代码如下: import tensorflow as tf import numpy as np from sklearn.linear_model impo ...

  7. 逻辑回归原理_挑战者飞船事故和乳腺癌案例_Python和R_信用评分卡(AAA推荐)

    sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&a ...

  8. 逻辑回归--美国挑战者号飞船事故_同盾分数与多头借贷Python建模实战

    python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_camp ...

  9. 转载:逻辑回归的python实现

    转载自:http://blog.csdn.net/zouxy09/article/details/20319673 一.逻辑回归(LogisticRegression) Logistic regres ...

随机推荐

  1. Hive与HBase集成进行数据分析

    我们把hive的安装包上传的节点3来 解压 现在我们还是老规矩通过notopad++来连接我们的虚拟机来配置文件,把下面这两个文件重命名一下 修改这个文件 对hive-env.sh我们修改这里 下面我 ...

  2. Java - 20 Java 继承

    Java 继承 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类.继承可以理解为一个对象从另一个对象获取属性的过程. 如果类A是类B的父类,而类B是类C的父类,我们也称C是A的子 ...

  3. CS229 3.用Normal Equation拟合Liner Regression模型

    继续考虑Liner Regression的问题,把它写成如下的矩阵形式,然后即可得到θ的Normal Equation. Normal Equation: θ=(XTX)-1XTy 当X可逆时,(XT ...

  4. 小朋友学C语言(2):安装Dev C++编译器

    (一)编译器 编译器是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序.一个现代编译器的主要工作流程:源代码 (source code) -->预处理器 (prepr ...

  5. 并发编程:GIL,线程池,进程池,阻塞,非阻塞,同步,异步

    一  GIL(global interpreter lock) GIL中文叫全局解释器锁,我们执行一个文件会产生一个进程,那么我们知道进程不是真正的执行单位,而是资源单位,所以进程中放有解释器(cpy ...

  6. 【Git使用】SourceTree可视化工具的安装和使用攻略

    1,下载并安装 sourceTree http://downloads.atlassian.com/software/sourcetree/windows/SourceTreeSetup_1.6.14 ...

  7. day2----python的基本类型

    本文档的大致内容:(python使用版本3.6.4) 1 数字--int 2 布尔--bool 3 字符串--str 4 元祖--() 5  列表---['a','b'] 6 字典--{} 运算符: ...

  8. 安装Anaconda3进行python版本管理

    1.下载Anaconda3,我选择了python3的64位版本 2.windows安装,选择加入了系统目录 3.进入命令行进行版本安装 // 安装一个指定版本conda create --name p ...

  9. geiUItabBarItem设置图片颜色和title颜色

    设置图片颜色 tabBarVCtrl.tabBar.selectedImageTintColor = [UIColor greenColor];//设置tabBarItem选中时的字图颜色,iOS 8 ...

  10. 17.docker及scrapy-splash安装-1

    docker 安装网址: https://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ 这就安装成功了!!!