文章目录

  • 系列文章目录
  • 前言
  • 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())

python如何设置预测值与实际值相差10为正确的_机器学习

2.对客户的职位、月费用和总费用进行去均值和方差缩放,对数据进行标准化

# #对客户的职位、月费用和总费用进行去均值和方差缩放,对数据进行标准化:
# '''
# 标准化数据,保证每个维度的特征数据方差为1,均值为0,使得预测的结果不会被某些维度过大的特征而主导
# '''
# StandardScaler----计算训练集的平均值和标准差,以便测试数据集使用相同的变换
scaler=StandardScaler(copy=False)
#fit_transform()的作用就是拟合数据,然后将它准换为标准形式
scaler.fit_transform(telconvar[['tenure', 'MonthlyCharges', 'TotalCharges']])

python如何设置预测值与实际值相差10为正确的_机器学习_02

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()

python如何设置预测值与实际值相差10为正确的_数据分析_03

由以上结果可以看出,在三个变量中不存在明显的异常值。

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])

python如何设置预测值与实际值相差10为正确的_数据分析_04


综合之前的结果来看,在六个变量中存在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])

python如何设置预测值与实际值相差10为正确的_机器学习_05

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])

python如何设置预测值与实际值相差10为正确的_数据_06


我还在码代码中,预计明天会进行建模的处理。然后在分享出来!!!