此文转载,原文https://learning.snssdk.com/feoffline/toutiao_wallet_bundles/toutiao_learning_wap/online/article.html?item_id=6738628737799045646&app_name=news_article <侵删>
注意:原文使用的pandas为0.17版本之前,在新版的pd一部分函数已被弃用或改写,以下代码已修改
SeniorCitizen 老年人 Partner 配偶 Dependents 家属 renure 职位 MultipleLines 互联网服务 SreamingTV 额… Contract 合同 PaperLessBilling 账单 Churn 流失
# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
import os
#输出文件夹input 中储存的文件名
print(os.listdir(r"D:\opensource\dataSource\电信客户流失数据"))
import matplotlib.pyplot as plt
import seaborn as sns
from pylab import rcParams
import matplotlib.cm as cm
import sklearn
from sklearn import preprocessing
from sklearn.preprocessing import LabelEncoder #偏码转换
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import StratifiedShuffleSplit
from sklearn.ensemble import RandomForestClassifier #随机森林
from sklearn.svm import SVC,LinearSVC #支持向量机
from sklearn.linear_model import LogisticRegression #逻辑回归
from sklearn.neighbors import KNeighborsClassifier #KNN算法
from sklearn.naive_bayes import GaussianNB #朴素贝叶斯
from sklearn.tree import DecisionTreeClassifier #决策树分类器
from xgboost import XGBClassifier
from catboost import CatBoostClassifier
from sklearn.ensemble import AdaBoostClassifier
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.metrics import classification_report, precision_score,recall_score,f1_score
from sklearn.metrics import confusion_matrix
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import make_scorer
from sklearn.ensemble import VotingClassifier
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score #none
import warnings
warnings.filterwarnings('ignore')
#spyder&pycharm中可以#下段code
#仅有jynote时候才用 表示:调用matplotlib.pyplot的绘图函数plot()进行绘图的时候,或者生成一个figure画布的时候,可以直接在你的python console里面生成图像
%matplotlib inline
#读取数据文件
telcom=pd.read_csv(r"D:\opensource\dataSource\电信客户流失数据\WA_Fn-UseC_-Telco-Customer-Churn.csv")
# 使用热地图显示相关系数
'''
heatmap 使用热地图展示系数矩阵情况
linewidths 热力图矩阵之间的间隔大小
annot 设定是否显示每个色块的系数值
'''
plt.figure(figsize=(20,16))
ax = sns.heatmap(corr,xticklabels=corr.columns,yticklabels=corr.columns,
linewidths=0.2,
cmap="YlGnBu",
annot=True)
plt.title('Correlation between variables')
#conclusuin:
上图看出,互联网服务、网络安全服务、在线备份业务、设备保护业务、技术支持服务、网络电视和网络电影之间存在较强的相关性,多线业务和电话服务之间也有很强的相关性,且都呈正相关关系。