在其他博客上看到许多人以此数据集为例做聚类分析,在借鉴了大家的方法后,根据自己对聚类算法的理解我也完成了对该数据的聚类。一下聚类方式供大家借鉴。
数据集:链接: https://pan.baidu.com/s/1sEyyLKf8wgGBr1gENOtdbA 密码: ucw5
导入所需要的库,读取数据
import pandas as pd
import numpy as np
import scipy
import seaborn as sns
from sklearn.cluster import KMeans
#from sklearn.cluster import SpectralClustering
from sklearn.preprocessing import MinMaxScaler,OrdinalEncoder
from sklearn import metrics
data = pd.read_csv('/Users/mac/Downloads/ad_performance.txt',delimiter='\t')
初步查看数据
data.head(5)
data.info()
处理缺失值及无用的列
data['平均停留时间'] = data['平均停留时间'].fillna(data['平均停留时间'].mean())
data = data.drop('渠道代号',axis=1)
提取出用来聚类的特征,在这个地方大多数其它博客使用全部特征进行聚类,但该做法可能并不那么正确。在实际运用中聚类分析所选取的特征应遵循’少而精‘的原则,且应围绕具体分析目的和业务需求来挑选变量。详情请参考《数据挖掘与数据化运营实战》。
num_cols = [f for f in data.columns if data[f].dtypes != 'object']
num_cols.remove('投放总时间')
num_cols
标准化数据,该步骤可以有效削减异常值得影响及加快模型运行速度。(对Kmeans非常重要)
num_data = data[num_cols]
num_data = MinMaxScaler().fit_transform(num_data)
num_data = pd.DataFrame(