最近朋友想请我帮忙分析一下关于他们公司客户群体的数据,他的目的是希望将用户分为几个类别,当然我首先想到的便是聚类了。但是数据中有一个问题令我十分困惑,那便是数据集中既有分类变量又有数值变量,针对这种情况我们应该怎么处理呢?
经过一番搜索与尝试,我个人利用了两种方法,仅供大家参考。
一、数据预览
当然,作为一个数据分析师,第一步要对数据进行初步探索,
import pandas as pd
import numpy as np
np.set_printoptions(suppress=True)
data = pd.read_csv("123.csv",encoding="gb2312")#载入数据
data.describe()
data.info()#数据预览
del data["Chassis number"]#删除无关的行
当然,还要进行数据的预处理,删除缺失值等等,但是因为重点不在这就略过了。
二、两种聚类方法
2.1创建虚拟变量(0,1)
第一种方法便是将分类变量转换为虚拟变量,然后运用聚类方法进行聚类。让我们来看看处理过程
dummies_Model = pd.get_dummies(data['Model'], prefix='Model')#将变量转化为虚拟变量
df = pd.concat([data,dummies_Model], axis=1)#加入原本数据框
from sklearn.cluster import DBSCAN
train_np = df.as_matrix()
params = ((0.2, 5), (0.2, 10), (0.2, 20), (0.3, 5), (0.3, 10), (0.3, 15))
for i in range(6):
eps, min_s