基于随机森林的电信客户分类预测

一、 导入库包

import numpy as np 
import pandas as pd 
from sklearn.preprocessing import LabelEncoder 
from imblearn.over_sampling import SMOTE 
import matplotlib.pyplot as plt 
from sklearn.model_selection import train_test_split 
from sklearn import tree 
import prettytable 
from sklearn.metrics import accuracy_score,auc,confusion_matrix,f1_score,precision_score,recall_score,roc_curve#分类指标库 
from sklearn.model_selection import GridSearchCV 
from sklearn.ensemble import RandomForestClassifier 
from subprocess import call 

二、 数据审查

#读取数据 
train_set=pd.read_excel('./typedata.xls',sheet_name='training') 
test_set=pd.read_excel('./typedata.xls',sheet_name='test') 
data=pd.concat([train_set,test_set])#合并两个工作表 
#数据预览 
print('{:-^60}'.format('预览前3条源数据'),'\n',train_set.head(3).T) 
print('{:-^60}'.format('源数据描述性统计'),'\n',train_set.describe(include='all').round(2).T)#输出包括离散型变量在内的所有变量描述性统计 
print('{:-^60}'.format('查看源数据的数据类型'),'\n',train_set.dtypes) 
#查看缺失值 
na_lines = train_set.isnull().any(axis=1) 
print('{:-^60}'.format('查看缺失值')) 
print ('具有缺失值的行记录总数: {0}'.format(na_lines.sum()) 

本实验源数据共有1990条记录,包含12个变量,其中GENDER、MARITAL_STATUS、PAY_METD、PAY_METD_PREV、CUSTOMER_TYPE均为离散型变量;AGE、CUSTOMER_CLASS、LINE_TENURE、SUBPLAN、SUBPLAN_PREVIOUS、NUM_TEL、NUM_ACT_TEL均为数值型变量;CUSTOMER_TYPE为目标变量,其余均为预测变量。
通过describe(include=‘all’)得到所有变量的最大值、最小值、唯一值个数、众数等数据信息,观察输出结果可知,SUBPLAN_PREVIOUS、NUM_TEL、NUM_ACT_TEL的均值与最大值相差较大,存在数据异常的可能性。此外,通过isnull()方法的输出结果可知,源数据没有缺失值。

三 、数据预处理及清洗

本实验的数据预处理及清洗包括类型转换、重复值处理、异常值处理、多重共线性问题、编码转换、样本不均衡处理。

1、查看数据类型可知,源数据年龄字段为浮点型。利用groupby()对年龄的值域分布进行统计,可知存在48条年龄为37.411584的异常记录,且根据经验判断,年龄为4同属于异常值,因此利用astype(int)将字段转成整数,并利用data[-data[‘AGE’].isin([4])]更新剔除年龄值为4的异常记录后的数据集。

print('{:-^60}'.format('年龄值域分布'),'\n',data.groupby(by='AGE')['CUSTOMER_TYPE'].count()) 
data['AGE']=data['AGE'].astype(int)#将年龄字段转成整数型 
data=data[-data['AGE'].isin([4])
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值