介绍
回归分析是确定预测属性(数值型)与其他变量间相互依赖的定量关系最常用的统计学方法。
逻辑回归是概率型非线性回归,有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