六、 python大数据与机器学习——逻辑回归模型

python大数据与机器学习——逻辑回归模型

一、逻辑回归的算法原理

回归模型:对连续变量进行预测

分类模型:对离散变量进行预测,预测的变量不连续,是属于哪一类的

1、数学原理

sigmoid函数: $f(y) = \frac 1 {1+e^{-y}}$ ,转化(-∞,+∞)到(0,1)中间

本质:将线性回归模型通过Sigmoid函数进行非线性转换

遇到数值较大的分类可用如下公式计算 $P = \frac{1}{1+e^-(k_0+k_1x_1+k_2x_2+…)}$

$k_i$和 $k_i$的确定:极大似然估计法,python中直接调包就行

X = [[1,0],[5,1],[6,4],[4,2],[3,2]]
Y = [0,1,1,0,0]
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X,Y)
model.predict([[2,1]]) #predict()默认接受一个多维数据

#忽略警告信息
import warnings
warnings.filterwarnings('ignore')

#处理多分类问题
X = [[1,0],[5,1],[6,4],[4,2],[3,2]]
Y = [-1,0,1,1,1] #此时的数据中有三个分类
from sklearn.linear_model import LogisticRegression
model = LogisticRegression() #注意要加上这个括号 不然会报错
model.fit(X,Y)
model.predict([[6,6]])

2、客户流失预警模型

读取数据 划分训练集和测试集

import pandas as pd
df = pd.read_excel('股票客户流失.xlsx')
X = df.drop(columns='是否流失') #除了是否流失列 其余都给X 
y = df['是否流失'] 

# 测试集划分
from sklearn.model_selection import train_test_split#引入函数
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2)
#test_size:选择测试集所占的比例
# X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random.state=1)

# 模型搭建
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X_train,y_train)

# 准备数据
y_pred = model.predict(X_test)
y_pred[0:100]
#数据进行汇总
a = pd.DataFrame()
a['预测值'] = list(y_pred)
a['实际值'] = list(y_test)
a.head(5)
from sklearn.metrics import accuracy_score
score = accuracy_score(y_pred,y_test)

#获得概率值
y_pred_proba = model.predict_proba(X_test)
y_pred_proba[0:5]## 
a = pd.DataFrame(y_pred_proba,columns=['不流失概率','流失概率'])
y_pred_proba[:,1]
print(model.coef_)
print(model.intercept_)# 注意这个函数的写法

import numpy as np
for i in range(5): #前五条作为演示
    print(1/(1+np.exp(-(np.dot(X_test.iloc[i],model.coef_.T)+model.intercept_))))

1