文章目录
- 系列文章目录
- 前言
- 1.删除无用列
- 2.对客户的职位、月费用和总费用进行去均值和方差缩放,对数据进行标准化
- 3.使用箱线图查看数据是否存在异常值
- 4.查看对象类型字段中存在的值
- 5.使用Scikit-learn标签编码,将分类数据转换为整数编码
前言
在经过前面的博客后,相信你已经对于这个项目有了一定的认识。在这里我们井进行数据处理的最后过程,将我们所需要的数据进行整合,去标准化等操作,便于后续建模。
1.删除无用列
由前面结果可知,CustomerID表示每个客户的随机字符,对后续建模不影响,我这里选择删除CustomerID列;gender 和 PhoneService 与流失率的相关性低,可直接忽略。
telconvar=telcon.iloc[:,2:20]
telconvar.drop('PhoneService',axis=1,inplace=True)
#提取ID
telcon_id=telcon['customerID']
print(telconvar.head())
2.对客户的职位、月费用和总费用进行去均值和方差缩放,对数据进行标准化
# #对客户的职位、月费用和总费用进行去均值和方差缩放,对数据进行标准化:
# '''
# 标准化数据,保证每个维度的特征数据方差为1,均值为0,使得预测的结果不会被某些维度过大的特征而主导
# '''
# StandardScaler----计算训练集的平均值和标准差,以便测试数据集使用相同的变换
scaler=StandardScaler(copy=False)
#fit_transform()的作用就是拟合数据,然后将它准换为标准形式
scaler.fit_transform(telconvar[['tenure', 'MonthlyCharges', 'TotalCharges']])
3.使用箱线图查看数据是否存在异常值
plt.figure(figsize=(8,4))
numbox=sns.boxplot(data=scaler.fit_transform(telconvar[['tenure',
'MonthlyCharges', 'TotalCharges']]),palette='Set2')
plt.title('Chenk outliers of standardized tenure,MonthlyCharges and TotalCharges')
plt.show()
由以上结果可以看出,在三个变量中不存在明显的异常值。
4.查看对象类型字段中存在的值
def uni(columnlabel):
print(columnlabel, '--', telconvar[columnlabel].unique()) #unique函数去除其中重复的元素,返回唯一值
telconobject=telconvar.select_dtypes(['object'])
for i in range(0,len(telconobject.columns)):
uni(telconobject.columns[i])
综合之前的结果来看,在六个变量中存在No internet service,即无互联网服务对客户流失率影响很小,这些客户不使用任何互联网产品,因此可以将No internet service 和 No 是一样的效果,可以使用 No 替代 No internet service。
def uni(columnlabel):
print(columnlabel, '--', telconvar[columnlabel].unique())
telconobject=telconvar.select_dtypes(['object'])
#替换值
telconvar.replace(to_replace='No internet service',value='No',inplace=True)
telconvar.replace(to_replace='No phone service',value='No',inplace=True)
for i in range(0,len(telconobject.columns)):
uni(telconobject.columns[i])
5.使用Scikit-learn标签编码,将分类数据转换为整数编码
def labelencode(columnlabel):
telconvar[columnlabel] = LabelEncoder().fit_transform(telconvar[columnlabel])
#LabelEncoder可以将标签分配一个0—n_classes-1之间的编码
for i in range(0,len(telconobject.columns)):
labelencode(telconobject.columns[i])
for i in range(0,len(telconobject.columns)):
uni(telconobject.columns[i])
我还在码代码中,预计明天会进行建模的处理。然后在分享出来!!!