Airbnb客户分群——Kmeans简单运用

2020-03-20  本文已影响0人  Brian_mingzhi

问题描述
根据airbnb用户信息对客户进行分群
数据字段

image.png

一、数据准备

1.引入数据

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
airbnb=pd.read_csv(airbnb_kmeans.csv)
airbnb.describe()
airbnb.info()

1.1发现age的异常值有“2岁”和“2014岁”

age.png
1.2data_account和data_first为object型 且gender为字符型变量
image.png

2.异常值处理

2.1处理年龄

#筛选出年龄大于5岁且小于100岁的用户
airbnb = airbnb[airbnb['age']>5]
airbnb = airbnb[airbnb['age']<100]

2.2处理时间变量

#将object转化为datetime变量
airbnb['date_account_created']=pd.to_datetime(airbnb['date_account_created'])
airbnb['date_first_booking']=pd.to_datetime(airbnb['date_first_booking'])

#创建新变量:“用户注册了多少年”
airbnb['year_date_account_created']=airbnb['date_account_created'].map(lambda x:2020-x.year)
#创建新变量:“距离用户第一次订单多少年”
airbnb['year_date_first_booking']=airbnb['date_first_booking'].map(lambda x:2020-x.year)

2.3处理gender字符型

airbnb['gender']=pd.get_dummies(airbnb['gender'])

二、建模

1.利用肘方法看分多少类

import sklearn.cluster
import matplotlib.pyplot as plt 
%matplotlib inline

kmeans_score = [] #存放模型拟合后的inertia
for i in range(1,11):
    model = KMeans(n_clusters=i,random_state=10)
    model.fit(airbnb_5)
    kmeans_score.append(model.inertia_) #inertia表示各点到中心之和
plt.plot(range(1,11),kmeans_score)
plt.xlabel('clusters')
plt.ylabel('interia')
plt.show()#用肘方法查看最合适的类数

可见n=3时,出现拐点,所以分类数定为3

image.png

2.分3类


model = KMeans(n_clusters=3,random_state=10)#注意KMeans两个大写字母
model.fit(airbnb_5)
result = model.predict(airbnb_5)
airbnb['K-means'] = result #创建“类别”列

3.查看分类后各中心点位置 并且解读

#查看分类后的各中心
model.cluster_centers_
分类中心.png
解读:
1.第一类为安卓使用者偏度,喜好通过PC端下单
2.第二类为通过手机移动网页下单
3.第三类为“果粉”,特征为很少使用PC端网页下单
image.png
上一篇下一篇

猜你喜欢

热点阅读