Bootstrap

python可以做回归分析吗_使用python进行回归分析

一、概述

1.回归:利用样本(已知数据),产生拟合方程,从而对未知数据进行预测

2.分类线性回归:一元线性;多元线性

逻辑回归:实际上预测的是数据X属于分类Y的概率p。逻辑回归公式由 log(p/(1-p))=β0+β1X 推导求得。

非线性回归

3.求解回归时需考虑的问题样本是否符合正态分布假设?

误差是否满足独立性、等方差、正态分布等假设条件?

是否存在离群值导致模型产生较大误差?

线性模型是否合理,是否存在拟合不足?

观察拟合方程,是否存在多重共线性?

如何选择变量?如何进行特征工程?

4.笔者需要进一步解决的问题怎么进行正态性检测?

怎么处理离群点?

非线性回归方程要怎么构建?

R中有岭回归可以解决多重共线性的问题,python中要怎么处理?

怎么构建多重逻辑回归模型,用于预测分类大于2的情形?

5.个人思考

从本质上来看,回归分析不管是线性回归还是逻辑回归,拟合的都是一条线(二维)或者一个平面(三维)或者更高维度,因此更适合使用连续型的数值型特征进行预测,而对于有太多分类型特征的数据,即使转换为哑变量,也必然会存在拟合不足的现象。

二、线性回归协方差和相关系数:评估线性相关性协方差

cov(X,Y)=E[(X-E[X])(Y-E[Y])]相关系数:消除协方差中数据变动的影响

相关系数r=(x和y的协方差)/(x的标准差*y的标准差)相关系数函数:data.corr()

2.决定系数R2:评估模型精确度有多少百分比的y波动被回归曲线描述=R2=1-误差平方和/总波动

值大小:R2越大,回归模型越精确

3.线性回归算法概述将拟合平面(线)整合成矩阵形式,矩阵计算通常比较高效

真实值和预测值之间肯定是存在差异(用ε表示误差)。误差服从高斯分布,将拟合函数带入到误差服从的高斯分布中。

通过最大似然估计推导出最小二乘法。

求解最小二乘法。在实际应用中一般使用梯度下降策略,而不是直接求解。

4.python进行线性回归一般框架

a.在sklearn中搜索linear regression用法

b.提取特征和标签

#提取特征和标签

#特征features

exam_X=data.loc[:,data.columns!='result']

#标签label

exam_X=data.loc[:,data.columns=='result']

c.建立训练数据和测试数据

from sklearn.cross_validation import train_test_split

#建立训练数据和测试数据

X_train,X_test,Y_train,Y_test=train_test_split(exam_X,exam_Y,train_size=.8)

print(X_train.shape)

print(X_test.shape)

print(Y_train.shape)

print(Y_test.shape)

d.训练模型

#第一步:导入线性回归

from sklearn.linear_model import LinearRegression

#第二步:创建模型:线性回归

model=LinearRegression()

#第三步:训练模型

model.fit(X_train.values.reshape(-1,1),Y_train.values.reshape(-1,1))

e.评估模型:决定系数R2

model.score(X_test,Y_test)

f.最佳拟合线

#截距

a=model.intercept_

#回归系数

b=model.coef_

三、逻辑回归:最经典,最牛逼的二分类算法

1.sigmoid函数

y=S(z)=1/(1+exp(-z))

其中,z=Θ(转置) · x(例如,z=a+bx)

2.使用python进行逻辑回归分析

a.谷歌Sklearn logistic regression用法

b.提取特征和标签

#提取特征和标签

#特征features

exam_X=data.loc[:,data.columns!='result']

#标签label

exam_Y=data.loc[:,data.columns=='result']

c.建立训练数据和测试数据

from sklearn.cross_validation import train_test_split

#建立训练数据和测试数据

X_train,X_test,Y_train,Y_test=train_test_split(exam_X,exam_Y,train_size=.8)

print(X_train.shape)

print(X_test.shape)

print(Y_train.shape)

print(Y_test.shape)

d.训练模型

#第一步:导入逻辑回归

from sklearn.linear_model import LogisticRegression

#第二步:创建模型:逻辑回归

model=LogisticRegression()

#第三步:训练模型

model.fit(X_train,Y_train)

e.评估模型

model.score(X_test,Y_test)

3.预测

a.标示出各标签概率

model.predict_proba([[1,2],[0,1]])

b.预测结果值

model.predict([[1,2],[0,1]])

c.构建回归函数

#截距

a=model.intercept_

#回归系数

b=model.coef_

#构建逻辑回归函数

def y_pred(x,y):

#构建线性回归函数

z=a+b[0,0]*x+b[0,1]*y

#构建逻辑回归函数

return 1/(1+np.exp(-z))

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;