前言
系统性地梳理一下逻辑斯蒂回归代码实现,顺便存档。关于原理部分的笔记在平板上,在最后一部分可以用到。
目录:
1.R语言实现(glm函数)
2.Python实现(库)
3.手撕Python
1.R语言实现
直接上代码,内容参考《统计学习导论》
#这里使用ISLR库的smarket(股票市场)数据的数值和图像先进行描述性统计分析
#该数据集包括从2001年年初至2005年年末1250天里S&P500股票指数的投资回报率
#数据中记录了过去5个交易日中的每个交易日的投资回报率,从Lag1到lag5
#同时也记录了Volume(前一日股票成交量,单位为十亿),Today(当日的投资回报率)以及Direction(这些数据在市场的走势方向,或涨或跌)
library(ISLR)
head(Smarket)
summary(Smarket)
class(Smarket)
attach(Smarket)
Smarket$Direction=as.numeric(Direction) #把Smarket中的Direction转换为numeric,否则不能计算相关系数
cor(Smarket) #计算data.frame里的相关系数
Volumet=ts(Volume)
plot(Volumet)
#开始逻辑斯蒂回归,使用函数glm,该函数除了计算广义线形模型时还可以计算逻辑斯蒂
#使用该功能时必须输入参数family=binomial,可以输入参数data=Smarket但是没必要
glm.fit=glm(Direction~Lag1+Lag2+Lag3+Lag4+Lag5+Volume, family = binomial)
#查看模型结果
summary(glm.fit) #总结果
coef(glm.fit) #查看各系数
summary(glm.fit)$coef #查看各系数的p值
#预测,type参数明确告诉R输出预测概率,否则输出的是对分数,可以添加预测集
glm.probs=predict(glm.fit, type = 'response')
#将预测结果转化为0,1变量,正式输出预测结果
glm.pred=rep("Down",1250)
glm.pred[glm.probs > 0.5]="Up"
#评估预测效果,table函数可以用来产生混淆矩阵
table(glm.pred,Direction)