您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    教你用Python写一个电信客户流失预测模型
    时间:2020-10-15 21:12 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    明天教大家如何用Python写一个电信誉户流失预测模型。之前我们用Python写了员工流失预测模型,这次我们试试Python预测电信誉户的流失。

    01、商业了解

    流失客户是指那些曾经运用过产品或效劳,由于对产品失掉兴味等种种缘由,不再运用产品或效劳的顾客。

    电信服务公司、互联网效劳提供商、保险公司等常常运用客户流失剖析和客户流失率作为他们的关键业务目的之一,由于留住一个老客户的成本远远低于取得一个新客户。

    预测剖析运用客户流失预测模型,经过评价客户流失的风险倾向来预测客户流失。由于这些模型生成了一个流失概率排序名单,关于潜在的高概率流失客户,他们可以有效地实施客户保留营销方案。

    下面我们就教你如何用Python写一个电信誉户流失预测模型,以下是详细步骤和关键代码。

    02、数据了解

    此次剖析数据来自于IBM Sample Data Sets,统计自某电信公司一段时间内的消费数据。共有7043笔客户材料,每笔客户材料包含21个字段,其中1个客户ID字段,19个输入字段及1个目的字段-Churn(Yes代表流失,No代表未流失),输入字段主要包含以下三个维度目的:用户画像目的、消费产品目的、消费信息目的。字段的详细阐明如下:

    教你用Python写一个电信客户流失预测模型

    03、数据读入和概览

    首先导入所需包。

    df = pd.read_csv('./Telco-Customer-Churn.csv'

    df.head()   

    读入数据集

    df = pd.read_csv('./Telco-Customer-Churn.csv'

    df.head()   

    04、数据初步清洗

    首先停止初步的数据清洗任务,包含错误值和异常值处置,并划分类别型和数值型字段类型,其中清洗部分包含:

    OnlineSecurity、OnlineBackup、DeviceProtection、TechSupport、StreamingTV、StreamingMovies:错误值处置

    TotalCharges:异常值处置

    tenure:自定义分箱

    定义类别型和数值型字段

    # 错误值处置 

    repl_columns = ['OnlineSecurity''OnlineBackup''DeviceProtection',  

                    'TechSupport','StreamingTV''StreamingMovies'

     

    for i in repl_columns: 

        df[i]  = df[i].replace({'No internet service' : 'No'})  

     

    # 交流值SeniorCitizen 

    df["SeniorCitizen"] = df["SeniorCitizen"].replace({1"Yes"0"No"})  

     

    # 交流值TotalCharges 

    df['TotalCharges'] = df['TotalCharges'].replace(' ', np.nan)  

     

    # TotalCharges空值:数据量小,直接删除 

    df = df.dropna(subset=['TotalCharges'])  

    df.reset_index(drop=True, inplace=True)  # 重置索引 

     

    # 转换数据类型 

    df['TotalCharges'] = df['TotalCharges'].astype('float'

     

    # 转换tenure 

    def transform_tenure(x): 

        if x <= 12

            return 'Tenure_1' 

        elif x <= 24

            return 'Tenure_2' 

        elif x <= 36

            return 'Tenure_3' 

        elif x <= 48

            return 'Tenure_4' 

        elif x <= 60

            return 'Tenure_5' 

        else

            return 'Tenure_over_5'  

     

    df['tenure_group'] = df.tenure.apply(transform_tenure) 

     

    # 数值型和类别型字段 

    Id_col = ['customerID'

    target_col = ['Churn'

     

    cat_cols = df.nunique()[df.nunique() < 10].index.tolist()  

    num_cols = [i for i in df.columns if i not in cat_cols + Id_col]  

     

    print('类别型字段:\n', cat_cols) 

    print('-' * 30)  

    print('数值型字段:\n', num_cols) 

    类别型字段: 

     ['gender''SeniorCitizen''Partner''Dependents''PhoneService',  

      'MultipleLines''InternetService''OnlineSecurity'

      'OnlineBackup''DeviceProtection''TechSupport'

      'StreamingTV''StreamingMovies''Contract''PaperlessBilling',  

      'PaymentMethod''Churn''tenure_group'

    ------------------------------ 

    数值型字段: 

     ['tenure''MonthlyCharges''TotalCharges'

    05、探求性剖析

    对目的停止归结梳理,分用户画像目的,消费产品目的,消费信息目的。探求影响用户流失的关键要素。

    1. 目的变量Churn散布

    (责任编辑:admin)