Python逻辑回归

介绍

回归分析是确定预测属性(数值型)与其他变量间相互依赖的定量关系最常用的统计学方法。
逻辑回归是概率型非线性回归,有2分类和多分类。2分类就是y的取值为0,1 即是 或 否 。
逻辑回归本质还是一种线性模型,筛选出来的变量与结果有比较强的线性关系,非线性关系的筛选方法有决策树,神经网络等。
降维的方法一般是PCA,随机逻辑回归一般用于线性的,但真实环境中,线性的比较少,而且大数据,我哪知道是不是线性关系,所以很多人现在用神经网络来训练,因为神经网络确实非常强大,自己就带了降维。

DataFrame的一些函数例子

#-*- coding: utf-8 -*-
import pandas as pd
import numpy as np

#np.random.randn() 标准正太分布
#np.random.rand() 均匀分布
df=pd.DataFrame(np.random.randn(6,4),columns=list('ABCD'))
print df

print df.head(3)#查看前3行
print df.tail(3)#查看后3行
print df.columns#查看列名
print df.values#查看值
print df.describe()#快速统计汇总
print df.sort_values(by='B',ascending='true')#按照B这列进行升序排序

print df['A']#得到A这一列
print df[0:3]#按行选取下标为0,1,2的行,即1,2,3行
print df.iloc[3]##获得下标为3的这一行,即第4行
print df.iloc[3:5,0:2]#,前是行,下标3-4的行;,后是列,下标0-1的列
print df.iloc[[1,2,4],[0,2]]#下标1,2,4的行;下标0,2的列
print df.iloc[1:3,:]#:前后没有数字,就是全选
print df.iloc[:,1:3]#:前是起始,后是结尾,前面没有就表示从头开始,后面没有表示直到结尾
print df.iloc[1,1]#获取特定的数值
          A         B         C         D
0 -1.118797  0.816379 -0.315373  0.076804
1 -0.947473  0.621089  0.863858  0.103246
2 -0.225064  0.791277 -1.207064 -0.581220
3  0.432818  2.005004 -0.768496  0.511313
4 -0.117979 -1.253557 -2.188011  0.803140
5  0.204534 -0.358160  0.839457 -0.709100
          A         B         C         D
0 -1.118797  0.816379 -0.315373  0.076804
1 -0.947473  0.621089  0.863858  0.103246
2 -0.225064  0.791277 -1.207064 -0.581220
          A         B         C         D
3  0.432818  2.005004 -0.768496  0.511313
4 -0.117979 -1.253557 -2.188011  0.803140
5  0.204534 -0.358160  0.839457 -0.709100
Index([u'A', u'B', u'C', u'D'], dtype='object')
[[-1.11879686  0.81637882 -0.31537269  0.07680354]
 [-0.94747297  0.62108851  0.86385843  0.10324614]
 [-0.2250645   0.79127706 -1.20706353 -0.58122045]
 [ 0.43281774  2.00500403 -0.76849576  0.5113129 ]
 [-0.11797852 -1.25355685 -2.18801123  0.80313961]
 [ 0.20453409 -0.35815976  0.83945747 -0.70910013]]
              A         B         C         D
count  6.000000  6.000000  6.000000  6.000000
mean  -0.295327  0.437005 -0.462605  0.034030
std    0.619652  1.118233  1.191752  0.592744
min   -1.118797 -1.253557 -2.188011 -0.709100
25%   -0.766871 -0.113348 -1.097422 -0.416714
50%   -0.171522  0.706183 -0.541934  0.090025
75%    0.123906  0.810103  0.550750  0.409296
max    0.432818  2.005004  0.863858  0.803140
          A         B         C         D
4 -0.117979 -1.253557 -2.188011  0.803140
5  0.204534 -0.358160  0.839457 -0.709100
1 -0.947473  0.621089  0.863858  0.103246
2 -0.225064  0.791277 -1.207064 -0.581220
0 -1.118797  0.816379 -0.315373  0.076804
3  0.432818  2.005004 -0.768496  0.511313
0   -1.118797
1   -0.947473
2   -0.225064
3    0.432818
4   -0.117979
5    0.204534
Name: A, dtype: float64
          A         B         C         D
0 -1.118797  0.816379 -0.315373  0.076804
1 -0.947473  0.621089  0.863858  0.103246
2 -0.225064  0.791277 -1.207064 -0.581220
A    0.432818
B    2.005004
C   -0.768496
D    0.511313
Name: 3, dtype: float64
          A         B
3  0.432818  2.005004
4 -0.117979 -1.253557
          A         C
1 -0.947473  0.863858
2 -0.225064 -1.207064
4 -0.117979 -2.188011
          A         B         C         D
1 -0.947473  0.621089  0.863858  0.103246
2 -0.225064  0.791277 -1.207064 -0.581220
          B         C
0  0.816379 -0.315373
1  0.621089  0.863858
2  0.791277 -1.207064
3  2.005004 -0.768496
4 -1.253557 -2.188011
5 -0.358160  0.839457
0.621088513146
#-*- coding: utf-8 -*-
#逻辑回归 自动建模
import pandas as pd

#参数初始化
filename = 'F:/PythonMaterial/chapter5/chapter5/demo/data/bankloan.xls'
data = pd.read_excel(filename)#返回值是DataFrame类型
x = data.iloc[:,:8].as_matrix()#行全选,列选下标0-7
y = data.iloc[:,8].as_matrix()#行全选,列选下标8

#使用稳定性选择方法中的随机逻辑回归进行特征筛选,利用筛选后的特征建立逻辑回归模型,输出平均正确率
from sklearn.linear_model import LogisticRegression as LR
from sklearn.linear_model import RandomizedLogisticRegression as RLR 
rlr = RLR() #建立随机逻辑回归模型,筛选变量
rlr.fit(x, y) #训练模型
rlr.get_support() #获取特征筛选结果,也可以通过.scores_方法获取各个特征的分数
print rlr.scores_
print '通过随机逻辑回归模型筛选特征结束'
#打印的时候把2个东西连起来,用,逗号   java里面是+ 加号
#data.columns[rlr.get_support()]返回的是筛选后的列名,是一个迭代器
#S.join(iterable)  将iterable里面的元素用S连起来,S就是分隔符
print (u'有效特征为:%s' % ','.join(data.columns[rlr.get_support()]))
x = data[data.columns[rlr.get_support()]].as_matrix() #筛选好特征

lr = LR() #建立逻辑货柜模型
lr.fit(x, y) #用筛选后的特征数据来训练模型
print '逻辑回归模型训练结束'
print '模型的平均正确率为:',lr.score(x, y) #给出模型的平均正确率,本例为81.4%

[ 0.1    0.075  0.98   0.435  0.     0.995  0.595  0.06 ]
通过随机逻辑回归模型筛选特征结束
D:\Python27\lib\site-packages\pandas\indexes\base.py:1434: VisibleDeprecationWarning: boolean index did not match indexed array along dimension 0; dimension is 9 but corresponding boolean dimension is 8
  result = getitem(key)
有效特征为:工龄,地址,负债率,信用卡负债
逻辑回归模型训练结束
模型的平均正确率为: 0.814285714286
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值