使用python来进行用户流失预测的实战

用python进行分析电信行业的用户流失预测(二)--数据可视化 文章目录前言四、数据可视化呈现1、查看流失客户占比2、性别、老年人、配偶、亲属对流客户流失率的影响3、提取特征4、构造相关性矩阵5、使用热地图显示相关系数6、使用one-hot编码7、电信用户是否流失与各变量之间的相关性8、网络安全服务、在线备份业务、设备保护业务、技术支持服务、网络电视、网络电影和无互联网服务对客户流失率的影响 前言 这篇文章紧跟用python进行分析的用户流失预测实操,以电信行业为例的后续内容,聚焦可视化操作。 四、数据可视化呈现 1、查看流失客户占比 ##数据可视化分析 # #1,查看 阅读详情

作者:Carl Dawson

编译:ronghuaiyang

导读

借用生存分析的方法来进行用户流失的预测,用到了Cox Proportional Hazards模型。

客户流失率很难预测。在你能做一些事情来阻止客户离开之前,你需要知道,谁将离开,什么时候离开,这将在多大程度上影响你的业务。在这篇文章中,我将解释使用生存分析来预测和预防流失的技术。

客户会不会流失

许多数据分析师试图用黑白分明的方式来模拟这个问题:客户流失vs客户没有流失。我们很容易用这种方式来看待这个问题,因为它是一种我们都知道的模型 —— 监督分类。

但是这样做忽略了客户流失预测问题的许多细微之处 —— 风险、时间线、客户离开的成本等等。

不管怎样,让我们从一个分类模型开始,看看我们最终的结果。

我们的数据集

我们使用的数据集是Kaggle Telco Churn dataset:https://www.kaggle.com/c/telco-churn/data,它包含超过7000个客户的记录,包括特征,比如客户的每月费用,成为客户的时长(几个月),是否有各种附加互联网服务等等。

以下是前5行:

首先你会注意到有很多类别变量为文本值(' Yes ', ' No ',等等),我们使用pd.get_dummies来修复这些:

dummies = pd.get_dummies(
    data[[ 'gender', 'SeniorCitizen', 'Partner', 'Dependents', 'tenure', 'PhoneService', 'MultipleLines', 'InternetService', 'OnlineSecurity', 'OnlineBackup', 'DeviceProtection', 'TechSupport', 'StreamingTV', 'StreamingMovies', 'Contract', 'PaperlessBilling', 'PaymentMethod', 'Churn' ]]
) 
data = dummies.join(data[['MonthlyCharges', 'TotalCharges']])

如果你按照下面的步骤去做,你还需要修复total charge列中的一些缺失值,这些值使整列变成了文本而不是数字:

data['TotalCharges'] = data[['TotalCharges']].replace([' '], '0') 
data['TotalCharges'] = pd.to_numeric(data['TotalCharges'])

现在我们有了一个可用的数据格式,我们把它可视化一下:

from matplotlib import pyplot as plt 
plt.scatter( data['tenure'], data['MonthlyCharges'], c=data['Churn_Yes']) 
plt.xlabel('Customer Tenure (Months)') 
plt.ylabel('Monthly Charges')

很难从这张图中得出任何结论,这个图将客户的tenure(我们正在努力改进的东西)与他们的月费进行了比较。我们继续去训练一个逻辑回归模型,看看我们是否可以使用这些虚拟的特征来预测客户的流失。

逻辑回归

from sklearn.linear_model import LogisticRegression 
from sklearn.model_selection import train_test_split 
from sklearn.metrics import confusion_matrix, accuracy_score 
X_train, X_test, y_train, y_test = train_test_split(data[x_select], data['Churn_Yes']) 
clf = LogisticRegression(solver='lbfgs', max_iter=1000) clf.fit(X_train, y_train)

如果我们训练一个模型,不做任何类间平衡或样本的加权,我们可以达到79.9%的准确率。这对于第一次尝试来说还不错。

下面是Logistic回归模型的混淆矩阵:

你在这里看到的是,虽然总体的准确性是相当高的,但是这个模型只识别出流失用户中的55%,这比我们想要的更接近于随机。

我们的目标是什么?

在这个过程中,大多数数据科学家(包括我自己)会加倍努力,通过设计新特征、尝试不同的算法、平衡数据集等等来提高模型的准确性。但是最好停下来问问自己你的最终目标是什么。

了解每一位将要流失的客户固然很好,但这些信息究竟能带来多少真正有用的信息呢?如果你想留住他们,你怎么知道该关注什么?在他们成为你的亏损客户之前,你需要花多少钱才留住他们?

让我们试着从不同的角度看问题。

生存分析

逻辑回归所做的是为每个描述它属于正类的可能性的样本分配一个概率。

在预测流失vs不流失的这种情况下,对于任何类型的分类,都有一个小烦恼,我们必须选择一个阈值(比如0.5,<0.5就是0, >=0.5 就是1)。然而,如果你仔细想想,其实这个概率才是我们想要的。

在任何足够大的客户群体中,都会有具有相同属性/特征的人(这就是鸽子洞原理)。有些会流失,有些不会,理想情况下,你想知道的是每个组的流失概率。这就是Logistic回归所给出的结果,但是在这种情况下,使用Logistic回归确实有一个问题 —— 不清楚它预测的时间范围。所以我们现在进入生存分析。

生存分析是一套用于生命科学(主要是流行病学和药物研究)的方法,用于确定患者随时间的生存概率。这是一个非常大的问题,有许多复杂的统计工具,但我们将只使用其中之一 —— Cox比例风险模型。

Cox比例风险模型

Cox PH模型是一种基于回归的模型,它分析数据集关于病人(或客户)生存时间的协变量(特征)。它被称为比例风险模型,因为它描述了每个特征如何在基线存活率上按比例增加风险的。

由于Python中有一个lifelines包,具有很好的文档,所以很容易使用Cox PH模型。

使用CoxPH模型

在大多数情况下,你需要做的第一件事,你需要用数据集准备好Cox回归模型的两个特征:

  1. “age”(病人开始服药和最近一次观察他们的状态之间的时间差异,在我们的例子中,为顾客加入服务的时间和最近一次观察他们是否流失之间的时间差异)

  2. “event”(表示事件是否发生的二进制标志,如死亡或流失)

幸运的是,telco数据集已经在tenure和Churn列中设计了这两个特征。

在进行任何类型的基于矩阵的回归时,需要注意的一件重要事情是,在Python中,奇异矩阵(行列式不为0,也就是说有两列变量是线性相关的)会抛出一个错误。所有这一切意味着,当你创建虚拟变量(one-hot编码)时,你必须扔掉其中的一列。

以下是我们的简化数据集的前5行:

可以看到,Gender_Male已经消失,Partner_No、Dependents_No等等也消失了。

现在我们有了正确格式的数据集,让我们来拟合Cox模型:

from lifelines import CoxPHFitter

cph_train, cph_test = train_test_split(data[x_select], test_size=0.2) 
cph.fit(cph_train, 'tenure', 'Churn_Yes')

lifelines包有一些独特之处,可能会给使用惯了Scikit-Learn的用户带来一些麻烦,首先,包含churn的列需要包含在传递给fit调用的数据集中。因此,我们不能像在逻辑回归中那样将数据集分成四份(对X和y进行训练和测试),我们必须将其分成两份。这与R语法非常相似,你可以在单个数据集中指定相关的列,而算法会负责将它们从训练数据中删除。

cph.fit调用的时候,你需要传入三个不同的参数。第一个是我们使用train_test_split创建的数据集,第二个是‘age’列(在我们的例子中是tenure),第三个是'event'列(在我们的例子中是Churn_Yes)。

lifelines包的下一个独特之处是可以在模型上使用的.print_summary方法(另一个从R借鉴的方法)。

下面是我们的模型summary:

关于这个输出,有几件重要的事情需要注意。

  1. 我们可以看到在输出的顶部列出了n=5634的样本数量,在其旁边是我们的event数量(流失的客户)。

  2. 我们得到了模型的系数。这些是非常重要的,它们告诉我们每个特征是如何“增加”风险的,因此,如果系数是一个正数,那么该特征使客户更有可能流失,如果是负数,那么拥有该特征的客户就不太可能流失。

  3. 我们可以得到特征的显著性值,一个非常好的补充!

  4. 我们得到了一致性。

一致性

与使用准确性来比较逻辑回归模型类似,你可以使用一致性比较不同的Cox PH模型。

简单地说,一致性是对模型内部一致性的评估 —— 如果它说某个特征增加了风险,那么具有该特征的观测结果应该风险会高。如果它们是这样的,那么一致性会上升,如果不是,那么一致性会下降。

我们的模型的一致性是0.929,总分是1,所以它是一个很好的Cox模型。

Cox模型绘图

在模型上调用基础的.plot可以得到:

一个方便的特征重要性的可视化和各种特征的风险的影响。在这一点上,我们还可以做的是调查这些特征是如何影响生存的,就像这样:

cph.plot_covariate_groups('TotalCharges', groups=[0,4000])

.plot_covariate_groups是 lifelines 中的一个方法,第一个输入是特征的名字,第二个是组的范围。所以,这里我们看的是客户的Total Charges接近0以及Total Charges接近4000的生存曲线的对比,看起来是这样:

你可以看到,总开销接近于零的客户比总开销接近于4000的客户面临更高的风险(生存曲线下降)。

流失预测

我们有一个好的,有效的模型,现在呢?

这个练习的目的是获得一些有用的信息,帮助我们做出关于如何进行干预以减少和防止客户流失的决策。我们来做一些预测。

不幸的是,对于已经流失的客户,我们能做的不多,所以让我们从数据集中只选择剩下的客户:

censored_subjects = data.loc[data['Churn_Yes'] == 0]

我们选择所有那些尚未流失的客户。现在我们用简便的方法来预测它们的生存曲线。

unconditioned_sf = cph.predict_survival_function(censored_subjects)

你可以看到,我们将这个称为“无条件”生存函数,这是因为我们知道,其中一些曲线会在客户当前的留存期之前预测为客户会流失。我们必须在收集数据时知道客户还在的基础上设定预测条件:

conditioned_sf = unconditioned_sf.apply(lambda c: (c / c.loc[data.loc[c.name, 'tenure']]).clip_upper(1))

现在,我们可以调查个别顾客,看看这个调节如何影响他们的存活率,可以超过基线:

subject = 12 
unconditioned_sf[subject].plot(ls="--", color="#A60628", label="unconditioned") 
conditioned_sf[subject].plot(color="#A60628", label="conditioned on $T>58$") plt.legend()

正如你所看到的,我们知道客户12在58个月后仍然是客户,这一事实意味着他的生存曲线下降的速度慢于与他相似的没有这种情况的客户的基线。

非常方便的predict_survival_function方法创建了一个矩阵,其中包含每个剩余客户在每个时间点的生存概率。接下来我们需要做的是选择一个单一的数字作为预测客户将留存多久,我们可以使用它来确定干预值。

根据用例,你可以选择任何百分比,但是对于我们的用例,我们将使用中位数。

from lifelines.utils import median_survival_times, qth_survival_times 

predictions_50 = median_survival_times(conditioned_sf) 
# This is the same, but you can change the fraction to get other 
# %tiles.  
# predictions_50 = qth_survival_times(.50, conditioned_sf)

我们在Dataframe中得到一个单个行,其中包含月的数量(留存期),其中客户有50%的可能性会进行交易。

我们可以使用这一行,通过将它与我们的数据DataFrame相连接,可以调查客户对业务的预期剩余价值:

values = predictions_50.T.join(data[['MonthlyCharges','tenure']])
values['RemainingValue'] = values['MonthlyCharges'] * (values[0.5] - values['tenure'])

下面是这个新DataFrame的前5行:

名为0.5的列是我们从median_survival_times调用中接收到的单个行。如果你选择了不同的百分比,则此列的名称将有所不同。

我们在这里看到的是,通过将每月的费用乘以客户当前的tenure与他们的取消日期中值之间的差值,我们可以了解到哪些客户会对我们的top line造成最大的损害。

流失预防

好了,现在我们知道了哪些客户的客户流失风险最高,但我们能做些什么来留住他们呢?如果我们回到之前的系数图我们可以看到对存活率有积极影响的最重要的特征是:

  1. 有2年的合同

  2. 有一年的合同

  3. 用信用卡付款

  4. 银行转帐付款

超过了这四种,存活率的增加就变得微乎其微,而且结果也不显著。我们来看看这四个。

我们需要做的是了解我们可以花多少钱来留住客户,是比较他们类似的客户的存活率,而不是他们的这四个特征:

upgrades = ['PaymentMethod_Credit card (automatic)', 'PaymentMethod_Bank transfer (automatic)', 'Contract_One year', 'Contract_Two year'] 

results_dict = {} 

for customer in values.index: 
    actual = data.loc[[customer]] change = data.loc[[customer]]     
    results_dict[customer] = [cph.predict_median(actual)] 
    for upgrade in upgrades: 
        change[upgrade] = 1 if list(change[upgrade]) == [0] else 0    
        results_dict[customer].append(cph.predict_median(change))      
        change[upgrade] = 1 if list(change[upgrade]) == [0] else 0  
        
results_df = pd.DataFrame(results_dict).T 
results_df.columns = ['baseline'] + upgrades 
actions = values.join(results_df).drop([0.5], axis=1)

我们在这里所做的是循环遍历客户,每次更改一个特征,并存储有此更改的客户的预期生存期中值。最后我们剩下的是:

我们可以看到,如果我们设法让第一个客户使用信用卡支付,我们可以增加4个月的生存时间(25-21基线),等等。

这是一个非常好的结果,它确实帮助我们看到我们如何才能在留住客户方面取得进展,但让我们更进一步,看看这在财务上有什么影响:

actions['CreditCard Diff'] = ( 
    actions['PaymentMethod_Credit card (automatic)'] -     
    actions['baseline']
) * actions['MonthlyCharges'] 

actions['BankTransfer Diff'] = ( 
    actions['PaymentMethod_Bank transfer (automatic)'] - 
    actions['baseline']
) * actions['MonthlyCharges'] 

actions['1yrContract Diff'] = ( 
    actions['Contract_One year'] - actions['baseline']
) * actions['MonthlyCharges'] 

actions['2yrContract Diff'] = ( 
    actions['Contract_Two year'] - actions['baseline']
) * actions['MonthlyCharges']

现在我们可以看到,将第一排的顾客转移到使用信用卡支付,价值可能高达119.40英镑。这比简单地数月的数量有用多了。

准确率以及校准

好了,快好了。我们有了货币价值,我们可以用它来判断特定的客户流失干预是否可行,以及关于“何时”客户会流失的可靠预测。但所有这些到底有多准确呢?

我们知道我们的Cox模型是一个很好的模型(92.9%的一致性),但这在实际中意味着什么呢?它有多精确?

当你从概率的角度看待像流失(或欺诈或盗窃)这样的事件时,检查校准性比检查准确性更重要。校准性是模型获得概率随时间变化的倾向。

就像这样,一个天气预报服务是经过校准的话,如果在所有的时间里它说有40%的可能性下雨,实际上就有40%的可能性下雨。

在Scikit-Learn中,我们可以使用calibration_curve方法从概率预测和数据集的真实值中获得这个值:

from sklearn.calibration import calibration_curve 

plt.figure(figsize=(10, 10))
 
ax1 = plt.subplot2grid((3, 1), (0, 0), rowspan=2) 
ax1.plot([0, 1], [0, 1], "k:", label="Perfectly calibrated")

probs = 1-np.array(cph.predict_survival_function(cph_test).loc[13])

actual = cph_test['Churn_Yes'] 

fraction_of_positives, mean_predicted_value = \ 
calibration_curve(actual, probs, n_bins=10, normalize=False) 

ax1.plot(mean_predicted_value, fraction_of_positives, "s-", label="%s" % ("CoxPH",)) 

ax1.set_ylabel("Fraction of positives") 
ax1.set_ylim([-0.05, 1.05]) ax1.legend(loc="lower right") 
ax1.set_title('Calibration plots (reliability curve)')

可以得到这个:

通过检查数据集(在我们的例子中是测试集)中出现的分数的各种概率,你可以看下这个图表。

你可以看到它非常接近对角线,代表完美的校准。然而,我们的模型似乎在低端低估了风险(<50%的流失率)和在高端轻微高估了风险(>50%的客户流失率)。

为了从数字上了解距离完美校准有多远,我们可以使用Scikit-Learn包中的brier_score_loss:

brier_score_loss( 
    cph_test['Churn_Yes'], 1 - 
    np.array(cph.predict_survival_function(cph_test).loc[13]), pos_label=1 
)

敏锐的读者可能已经注意到,我的索引保持在tenure= 13。由于我们的模型在一定的时间范围内工作,我们必须在每一步都检查校准性,以获得准确的校准性:

loss_dict = {} 
for i in range(1,73): 
    score = brier_score_loss( 
        cph_test['Churn_Yes'], 1 -    
        np.array(cph.predict_survival_function(cph_test).loc[i]),   
        pos_label=1 ) 
    loss_dict[i] = [score] 
    
loss_df = pd.DataFrame(loss_dict).T 

fig, ax = plt.subplots() 
ax.plot(loss_df.index, loss_df) 
ax.set(xlabel='Prediction Time', ylabel='Calibration Loss', title='Cox PH Model Calibration Loss / Time') 
ax.grid() 

plt.show()

我们得到这个:

所以我们可以看到,我们的模型在5到25个月之间校准得很好,然后越来越差。为了使我们的分析更真实,剩下要做的唯一事情就是解释这种糟糕的校准性。

让我们为让客户做出改变所带来的预期投资回报创建一个上界和下界:

loss_df.columns = ['loss'] 
temp_df = actions.reset_index().set_index('PaymentMethod_Credit card (automatic)').join(loss_df) 
temp_df = temp_df.set_index('index') 
actions['CreditCard Lower'] = temp_df['CreditCard Diff'] - (temp_df['loss'] * temp_df['CreditCard Diff']) 
actions['CreditCard Upper'] = temp_df['CreditCard Diff'] + (temp_df['loss'] * temp_df['CreditCard Diff']) 
temp_df = actions.reset_index().set_index('PaymentMethod_Bank transfer (automatic)').join(loss_df) 
temp_df = temp_df.set_index('index') 
actions['BankTransfer Lower'] = temp_df['BankTransfer Diff'] - (.5 * temp_df['loss'] * temp_df['BankTransfer Diff']) actions['BankTransfer Upper'] = temp_df['BankTransfer Diff'] + (.5 * temp_df['loss'] * temp_df['BankTransfer Diff']) 

temp_df = actions.reset_index().set_index('Contract_One year').join(loss_df) 
temp_df = temp_df.set_index('index') 
actions['1yrContract Lower'] = temp_df['1yrContract Diff'] - (.5 * temp_df['loss'] * temp_df['1yrContract Diff']) actions['1yrContract Upper'] = temp_df['1yrContract Diff'] + (.5 * temp_df['loss'] * temp_df['1yrContract Diff']) 

temp_df = actions.reset_index().set_index('Contract_Two year').join(loss_df) 
temp_df = temp_df.set_index('index') 
actions['2yrContract Lower'] = temp_df['2yrContract Diff'] - (.5 * temp_df['loss'] * temp_df['2yrContract Diff']) actions['2yrContract Upper'] = temp_df['2yrContract Diff'] + (.5 * temp_df['loss'] * temp_df['2yrContract Diff'])

这里我们对之前的值打了个折来考虑校准的不确定性。我们查看模型在每个时间段的校准情况,我们预测会有一个特定的提升,并产生和创建一个投资回报的上下界。

这就得到了这样的结果:

至此,我们结束了生存分析、一致性和校准性之旅。我们的努力所得到的是一组可操作的数据,我们可以使用这些数据使客户注册时间更长——这就是客户流失预测的要点!

完)






Python实战05:银行客户流失分析与预测(超详细) 本研究案例通过综合运用统计方法,包括皮尔逊相关性、T/U检验及卡方检验,精准筛选对客户流失具有预测价值的特征。这些精选特征随后被输入随机森林模型,经由精细的参数调优以优化模型性能,特别是针对ROC-AUC值进行最大化,确保预测既准确又具备高度区分力。 阅读详情

相关推荐

Cox回归与Cox比例风险回归模型 Python实现

Cox回归(Cox proportional hazards regression)是一种常用的生存分析方法,用于分析事件发生时间与预测因素之间的关系。Cox比例风险回归模型是Cox回归的一种特例,通过估计预测因素对风险比例的影响来推断其对生存时间的影响程度。这些方法可以帮助我们分析预测因素对生存时间的影响,并预测个体的生存函数和风险。在fit方法中,我们传入数据集、生存时间的列名(duration_col)和事件状态的列名(event_col)。在这个示例数据集中,我们有7个患者的生存时间和事件状态。

ByteLegend的博客 1297

python数据分析案例-利用生存分析Kaplan-Meier法与COX比例风险回归模型进行客户流失分析与剩余价值预测

利用Kaplan-Meier法与COX比例风险回归模型比较了不同特征对于客户流失的影响,并且预测了客户的生存时长,计算了其剩余价值以及潜在可提升的价值。

maiyida123的博客 2万+

TFDeepSurv:张量流实现的COX比例风险模型和生存分析

TFDeepSurv 通过张量流实现Deep Cox比例风险模型和生存分析。 建议的TensorFlow版本为1.15.3。 并且模块测试在TensorFlow-1.15.3下通过了。 注意: 已发布。 旧版本位于分支archive_v1 。 与v1.0版本相比,当前版本有了很大的改进: 建立计算图的速度 利用原始的tensorflow操作来计算损失函数(用于处理关系) 生存数据的统一格式 代码优雅而简单 如果您有任何问题,请先阅读以下常见问题解答,或直接发送电子邮件给我。 1.与DeepSurv的区别 是Deep Cox比例风险模型的软件包,在Github上开源。 但是我们的作品可能会发光: 在您的生存数据中支持死亡时间的联系,这意味着不同的损失函数和生存函数的估计量( Breslow近似)。 提供生存函数估计。 使用科学方法-贝叶斯超参数优化来调整DNN的超参数。 通

利用Python建立零售电商客户流失模型

零售电商客户流失预测项目比较了LR、FM、GBDT和RF四种模型。数据集包含购物时间、消费金额、商品品类等特征,采用不同格式(csv/LibSVM)和框架(TensorFlow/XGBoost/SparkML)处理。结果显示,GBDT模型表现最佳(准确率0.766,AUC 0.833),其次是RF和FM。项目详细实现了各模型的离线/在线部署方案,包括TensorFlow Serving、Flask API和Spark任务调度,并提供了完整的数据预处理脚本和模型训练代码。

毕业作品网站 1063

用Python建立客户流失预测模型

用Python建立客户流失预测模型

telecom_churn-数据集

telecom_churn.csv

Python机器学习案例-使用集成学习进行客户流失预测

数据来源kaggle电信用户数据集,分别利用Logistic回归、SVC、随机森林与XGBoost单独预测,最后使用Voting Classifier投票得出最终结果

maiyida123的博客 6867

Telco Customer Churn 电信客户流失-数据集

电信客户流失 重点客户保留计划 WA_Fn-UseC_-Telco-Customer-Churn.csv

python cox模型_使用python来进行用户流失预测的实战

作者:Carl Dawson编译:ronghuaiyang导读借用生存分析的方法来进行用户流失的预测,用到了Cox Proportional Hazards模型。客户流失率很难预测。在你能做一些事情来阻止客户离开之前,你需要知道,谁将离开,什么时候离开,这将在多大程度上影响你的业务。在这篇文章中,我将解释使用生存分析来预测和预防流失的技术。客户会不会流失许多数据分析师试图用黑白分明的方式来模拟这个...

weixin_39518530的博客 742

告别手动发日报!用n8n+钉钉打造智能报告机器人(含模板下载)

本文详细介绍了如何利用n8n开源工作流自动化平台与钉钉机器人搭建智能日报系统,实现数据自动采集、处理和发送。通过实战步骤和模板下载,帮助用户告别手动处理日报的繁琐,提升工作效率和数据准确性。

h3i4j的博客 859

ESP32实战:破解校园网WPA2-Enterprise认证的完整指南

本文详细介绍了如何使用ESP32开发板破解校园网WPA2-Enterprise认证的完整指南。通过硬件准备、环境搭建、核心代码实现及常见问题排查,帮助开发者解决企业级WiFi连接难题,特别适用于校园网环境下的物联网设备开发。

weixin_29194817的博客 457

年度榜单,我整理了2020年优质的Python实战、热点与可视化文章。

不知不觉,发现自己已经在优快云发布了这么多文章了,这次为大家做一个总结,方便大家学习和查询。

数据分析与统计学之美 2万+

自定义css属性实现渐变边框动画

自定义cs属性实现渐变边框动画

lemon的博客 1877

2024年基于python+django的学术会议跟踪分析预测系统

在做设计的过程中,了解了很多大数据分析方法,锻炼了自主学习的能力,使用最新的知识对数据进行分析,更好的将数据分析应用到实际应用中去。当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。4.3.1. 变量离散化 10。第二章 预测模型构建 4。

2401_84556837的博客 86

2024秋招,腾讯测试与质量管理工程师一面

家人们,秋招都开奖了吗,拿到自己心仪的offer了吗,还是在准备明年的春招呢?今天我记录一下,之前面试腾讯测开的一面过程面试官人非常好,我回答中有问题的地方,及时帮我指正同时耐心回答我的反问只可惜我当时的能力不足以达到鹅厂的标准,遗憾错过。

chowley的博客 1059

手把手教你用CEFSharp打造防关联指纹浏览器(附完整代码)

本文详细介绍了如何基于CEFSharp框架,从零开始构建一个企业级的防关联指纹浏览器。通过剖析核心架构、多进程隔离实现、动态指纹混淆(如Canvas、WebGL)的实战代码,以及代理集成与性能优化,为跨境电商、广告投放等场景提供了一套可控、安全的开源解决方案。

fern8的博客 966

Python机器学习实战:从数据到模型的完整项目开发指南

一、项目背景与工具准备二、项目案例一:鸢尾花分类(监督学习)数据集:Scikit-learn内置Iris数据集(3类鸢尾花,4个特征)目标:根据花萼和花瓣尺寸预测鸢尾花种类.2f。

472

多模态论文笔记——CogVLM和CogVLM2

本文详细介绍LoRA版本的多模态模型——CogVLM和CogVLM2。在SD3中使用其作为captioner基准模型的原因和优势。

haopinglianlian的博客 2205

用户流失预测——基于逻辑回归模型以及Python代码实现

研究目的 有效预测当前用户是否流失,针对高价值的潜在流失用户进行精细化运营以此挽留目标用户。 用户流失预测 2.1用户流失定义 流失用户:上一个周期有下单而本周期没有下单的用户 非流失用户:上一个周期和本周期都有下单的用户 2.2用户流失率 以一个季度为周期,用户流失率指的是上一个周期有下单而本周期没有下单的用户数与上一个周期有下单的用户之比。 下图为近四个周期的用户流失率,平均流失率为19.76...

banban008的博客 1万+

【硬件】LT3763中文手册

1)精确控制输入和输出电流;2) 3000:1真彩色PWM™调光;3) ±1.5%电压调节精度;4) ±6%电流调节精度;5)6V至60 V输入电压范围;6)宽输出范围最高可达55V;7)<2µA关断电流;8)用于负载电流热控制的控制引脚;9)输入和输出电流监控和限制;10)开路、短路和C/10故障检测;11)适用于LED应用的PWM驱动器输出;12)热增强型28引脚FE封装。

qq_39200110的博客 491

【ComfyUI】SD1.5 + ControlNet 边缘检测融合动漫转真人

本文介绍了一个基于ComfyUI的动漫转真人图像生成工作流,通过多模型协同实现高质量的二次元图像转换。该工作流集成了Canny线稿预处理、ControlNet结构控制、VAE编码解码和人脸精细化处理等核心环节,采用majicmixRealistic_v7作为主模型,配合yolov8、SAM等辅助模型。整个流程包含11个标准化步骤,从图像输入、预处理到最终超分输出,通过ControlNet引导和CLIP语义控制确保生成图像的写实感和结构准确性,特别针对人脸区域进行专业优化,最终可输出高分辨率写实人像。

Mr数据杨 1132

用户流失分析:如何使用Python训练一个用户流失预测模型?

在当今商业环境中,客户流失分析是至关重要的一环。随着市场竞争的加剧,企业需要更加注重保持现有客户,并深入了解他们的离开原因。本文探讨了用户流失分析的核心概念以及如何构建客户流失预测模型的案例。通过分析用户行为数据和交易模式,以及利用机器学习算法,企业可以更好地预测潜在的流失风险,并采取相应措施提高客户满意度。随着持续性的监控和迭代,企业将能够建立智能化的流失分析体系,为业务发展提供持续支持。

WHYbeHERE的博客 3931

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

电信用户流失分析与预测

电信用户流失分析与预测一. 研究背景二. 分析结论与建议三. 任务与实现四. 数据集解析五. 数据分析套餐1.准备工作导入相关的库导入数据集2.数据预处理类型转换缺失值处理重复值处理3.查看流失情况4.类别特征的描述性分析5.连续型变量的分析差异检验-两样本t检验分箱离散化6.机器学习基模型的建立基模型的初始评分异常值处理数据标准化处理样本不均衡处理&逻辑回归网格交叉验证&KNN决策树流水线&朴素贝叶斯多层感知器模型得分总结 这是作者自己做的一个数据分析项目,通篇采用大量python

weixin_46274061的博客 8544

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

python数分实战|电信用户流失分析与预测

3. 合法性:数据的。

aobulaien001的博客 2235

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: 搞AI的注意了,停下手头的活,再忙也要看一下这个!
下一篇: 做过这个NLP项目的面试通过率高达 90%!!
Wang_AI
博客等级 码龄12年 997粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值