首页 > 其他分享 >week11_logistic_regression_stock_customer_churn

week11_logistic_regression_stock_customer_churn

时间:2023-05-15 21:24:16浏览次数:40  
标签:week11 customer ... pred 流失 train logistic test model

逻辑回归模型 - 案例

股票客户流失预警模型

# 1.读取数据
import pandas as pd
df = pd.read_excel('stock_customer_churn.xlsx')
df
账户资金(元) 最后一次交易距今时间(天) 上月交易佣金(元) 累计交易佣金(元) 本券商使用时长(年) 是否流失
0 22686.5 297 149.25 2029.85 0 0
1 190055.0 42 284.75 3889.50 2 0
2 29733.5 233 269.25 2108.15 0 1
3 185667.5 44 211.50 3840.75 3 0
4 33648.5 213 353.50 2151.65 0 1
... ... ... ... ... ... ...
7038 199145.0 40 424.00 3990.50 1 0
7039 682661.0 1 516.00 9362.90 5 0
7040 51180.5 167 148.00 2346.45 0 0
7041 47594.0 174 372.00 2306.60 0 1
7042 636005.0 2 528.25 8844.50 5 0

7043 rows × 6 columns

# 2.划分特征变量X,和目标变量y
X = df.drop(columns='是否流失')  ## drop 扔掉某一列
y = df['是否流失']   
# 3.划分训练集和测试集
# 训练集数量=7043 * 80%; 测试集7043*20%

from sklearn.model_selection import train_test_split  ## sklearn, model_selection

# X *2 , y*2 ,4

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state = 1 )  



X_train.head()  

账户资金(元) 最后一次交易距今时间(天) 上月交易佣金(元) 累计交易佣金(元) 本券商使用时长(年)
1814 43251.5 192 98.50 2258.35 0
5946 304449.5 22 369.50 5160.55 3
3881 441357.5 9 325.75 6681.75 5
2389 587076.5 2 427.25 8300.85 5
3676 204027.5 39 352.00 4044.75 2
y_train.head() 
1814    0
5946    1
3881    0
2389    0
3676    0
Name: 是否流失, dtype: int64

# 4.模型搭建

from sklearn.linear_model import LogisticRegression

model = LogisticRegression()
model.fit(X_train, y_train)
LogisticRegression()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
LogisticRegression()
# 5.模型使用1 - 预测数据结果
# 把训练集X_test放进来,用模型去预测y_pred, y_pred和y_test比较

y_pred = model.predict(X_test)
print(y_pred[0:100])  # 打印预测内容的前100个看看
[0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 1 1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0
 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1]
# 放到一个DataFrame里进行查看比对
a = pd.DataFrame()  # 创建一个空DataFrame 
a['预测值'] = list(y_pred)
a['实际值'] = list(y_test)
a  # 可以看到此时前5个预测准确度为80%
预测值 实际值
0 0 0
1 0 0
2 0 0
3 0 1
4 0 0
... ... ...
1404 1 1
1405 0 0
1406 0 0
1407 0 0
1408 1 1

1409 rows × 2 columns

# 查看全部的预测准确度
from sklearn.metrics import accuracy_score
score = accuracy_score(y_pred, y_test)
print(score)
0.7977288857345636
# 也可以使用.score()查看模型预测准确度
model.score(X_test, y_test)
0.7977288857345636
# 6.模型使用2 - 预测概率
y_pred_proba = model.predict_proba(X_test)  
y_pred_proba[0:5]
array([[0.82041491, 0.17958509],
       [0.84029613, 0.15970387],
       [0.79819342, 0.20180658],
       [0.62989192, 0.37010808],
       [0.61636611, 0.38363389]])
# 另一种查看概率的方式
a = pd.DataFrame(y_pred_proba, columns=['不流失概率', '流失概率'])
a.head()
不流失概率 流失概率
0 0.820415 0.179585
1 0.840296 0.159704
2 0.798193 0.201807
3 0.629892 0.370108
4 0.616366 0.383634
# 只查看流失的概率(也即y=1概率,即上面二维数组的第二列)
y_pred_proba[:,1]
array([0.17958509, 0.15970387, 0.20180658, ..., 0.04220544, 0.09782449,
       0.63586739])
# 7.查看各个特征变量的系数(额外知识点,供参考)
model.coef_
array([[ 2.41952469e-05,  8.16881491e-03,  1.04320950e-02,
        -2.54894468e-03, -1.10120609e-04]])
model.intercept_
array([-1.43393291e-06])
# 通过公式获取流失概率
import numpy as np
for i in range(5):  # 前5条测试集数据的预测流失的概率
    print(1 / (1 + np.exp(-(np.dot(X_test.iloc[i], model.coef_.T) + model.intercept_))))
[0.17958509]
[0.15970387]
[0.20180658]
[0.37010808]
[0.38363389]

标签:week11,customer,...,pred,流失,train,logistic,test,model
From: https://www.cnblogs.com/dogfaraway/p/17403157.html

相关文章

  • logistic_regression
    逻辑回归模型算法原理逻辑回归模型的数学原理知识点:Sigmoid函数绘制importmatplotlib.pyplotaspltimportnumpyasnpx=np.linspace(-6,6)#通过linspace()函数生成-6到6的等差数列,默认50个数y=1.0/(1.0+np.exp(-x))#Sigmoid函数计算公式,exp()函数表示指......
  • openiddict add customer claims
    @@openid自定义claim@@customclaims@@openiddictcustomclaimshttps://stackoverflow.com/questions/38060192/asp-core-add-custom-claim-to-auth-token#ASPCoreAddCustomClaimtoAuthToken##publicoverrideasyncTask<ClaimsPrincipal>CreateAsync(Applicati......
  • 蝴蝶优化算法(BOA)文章复现(Logistic混沌扰动+自适应权重w+完整PSO算法融合)——HPSBA
    蝴蝶优化算法(BOA)文章复现(Logistic混沌扰动+自适应权重w+完整PSO算法融合)——HPSBA复现内容包括:文章改进BOA算法实现、23个基准测试函数、文中相关因子分析、文中混沌特性分析、与BOA对比等。代码基本上每一步都有注释,非常易懂,代码质量极高,便于新手学习和理解。ID:53......
  • 麻雀搜索算法(SSA)文章复现:《基于Logistic回归麻雀算法的图像分割_陈刚》
    麻雀搜索算法(SSA)文章复现:《基于Logistic回归麻雀算法的图像分割_陈刚》策略为:小孔成像反向学习策略改进发现者策略+Logistic模型动态调节安全阈值——MSSA。代码基本上每一步都有注释,非常易懂,代码质量极高,便于新手学习和理解。ID:3159669427179745......
  • 基于线性二项分布回归模型(logistic)的时间序列预测 matlab代码
    基于线性二项分布回归模型(logistic)的时间序列预测matlab代码ID:5129665933564536......
  • R语言用局部加权回归(Lowess)对logistic逻辑回归诊断和残差分析|附代码数据
    全文链接:http://tecdat.cn/?p=22328最近我们被客户要求撰写关于局部加权回归的研究报告,包括一些图形和统计输出。目前,回归诊断不仅用于一般线性模型的诊断,还被逐步推广应用于广义线性模型领域(如用于logistic回归模型),但由于一般线性模型与广义线性模型在残差分布的假定等方面有所......
  • Logistic 回归测试代码
    简单概念Logistic回归是一种经典的分类方法,多用于二分类的问题。通过寻找合适的分类函数,用以对输入的数据进行预测,并给出判断结果。使用sigmoid函数(逻辑函数)将线性模型的结果压缩到[0,1]之间,使输出的结果具有概率意义,实现输入值到输出概率的转换。sigmoid函数:$g(z)=\f......
  • 负荷需求响应模型 基于Logistic函数 采用matlab编程,考虑电价激励下的乐观响应和悲观响
    负荷需求响应模型基于Logistic函数采用matlab编程,考虑电价激励下的乐观响应和悲观响应,利用负荷需求响应模型得到峰转平、平转谷的实际负荷转移率,从而得到基于Logistic函数的负荷转移对比,程序运行稳定ID:6450676853349722......
  • sklearn.linear_model.LogisticRegression-逻辑回归分类器
    语法格式class sklearn.linear_model.LogisticRegression(penalty='l2', *, dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver='lbfgs', max_iter=100, multi_class='auto'......
  • Logistic map
    https://en.wikipedia.org/wiki/Logistic_mapPeriodThreeImpliesChaos......