KMEANS算法-NBA球队实力聚类分析

from sklearn.cluster import KMeans
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
data = pd.read_csv('nba.csv')
data.head()

minmax_scaler = MinMaxScaler()
# 标准化数据
X = minmax_scaler.fit_transform(data.iloc[:,1:])
X[:5]

# 肘部法则
loss = []
for i in range(2,10):model = KMeans(n_clusters=i).fit(X)loss.append(model.inertia_)plt.plot(range(2,10),loss)
plt.xlabel('k')
plt.ylabel('loss')
plt.show()

k = 4
model = KMeans(n_clusters=k).fit(X)# 将标签整合到原始数据上
data['clusters'] = model.labels_data.head()

for i in range(k):print('clusters:',i)label_data = data[data['clusters'] == i].iloc[:,0]print(label_data.values)

KMEANS算法-广告效果聚类分析

import numpy as np
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline# 显示中文
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']
# 载入数据,空格为间隔
df = pd.read_csv('ad_performance.txt', delimiter='\t')# 数据概观
df.tail(5)

df.isnull().sum()

df.describe().round(3)

plt.figure(figsize=(12,10))
# 画热力图,数值为两个变量之间的相关系数
p=sns.heatmap(df.corr(), annot=True)
plt.show()

# 使用平均值替换缺失值
df['平均停留时间'] = df['平均停留时间'].fillna(df['平均停留时间'].mean())# 字符串分类转整数分类
conver_cols = ['素材类型', '广告类型', '合作方式', '广告尺寸', '广告卖点']# 用get_dummies进行one hot编码
dummy_df = pd.get_dummies(df[conver_cols])# 清除原来的特征
df2 = df.drop(conver_cols, axis=1)
# 当axis = 1的时候,concat就是行对齐,然后将不同列名称的两张表合并
df2 = pd.concat([df2, dummy_df], axis=1)
df2.tail().T


# 获取数值特征转换成矩阵
scale_matrix = df2.iloc[:, 1:8]
# 建立MinMaxScaler模型对象
minmax_scaler = MinMaxScaler()
# 标准化数据
df2.iloc[:, 1:8] = minmax_scaler.fit_transform(scale_matrix)
X = np.array(df2.iloc[:,1:])# 肘部法则
loss = []
for i in range(2,10):model = KMeans(n_clusters=i).fit(X)loss.append(model.inertia_)plt.plot(range(2,10),loss)
plt.xlabel('k')
plt.ylabel('loss')
plt.show()

k = 4
model = KMeans(n_clusters=k).fit(X)# 将最优情况的标签整合到原始数据上
df['clusters'] = model.labels_# 每个聚类的样本量
cluster_count = pd.DataFrame(df.clusters.value_counts()).rename(columns={'clusters': 'counts'})
# 获取样本占比
cluster_count['percentage'] = (cluster_count['counts']/cluster_count['counts'].sum()).round(2)
cluster_count.head()

# 设置颜色
colors='yellowgreen','gold','lightskyblue','lightcoral'
# 设置分离
explode=0.1,0.1,0.1,0.1
# 设置画幅
plt.figure(figsize=(5, 5))
# 作图
plt.pie(cluster_count.counts,explode=explode,labels=cluster_count.index,colors=colors,autopct='%1.1f%%',shadow=True)
plt.show()

df.describe()


# 空列表,用于存储最终合并后的所有特征信息
cluster_features = []
# 读取每个类索引
for line in range(k):  # 获得特定类的数据label_data = df[df['clusters'] == line]  # 获得数值型数据特征part1_data = label_data.iloc[:, 1:8]  # 得到数值型特征的描述性统计信息part1_desc = part1_data.describe().round(3) # 得到数值型特征的均值merge_data1 = part1_desc.iloc[1, :]  # 获得字符串型数据特征part2_data = label_data.iloc[:, 8:-1]  # 获得字符串型数据特征的描述性统计信息part2_desc = part2_data.describe(include='all')  # 获得字符串型数据特征的最频繁值merge_data2 = part2_desc.iloc[2, :]  # 将数值型和字符串型典型特征沿行合并merge_line = pd.concat((merge_data1, merge_data2), axis=0)  # 将每个类别下的数据特征追加到列表cluster_features.append(merge_line)
# 将列表转化为矩阵
cluster_pd = pd.DataFrame(cluster_features)
# 将信息合并
all_cluster_set = cluster_count.join(cluster_pd).sort_index().T
all_cluster_set


聚类0:各方面的特征都不明显,换句话说就是效果比较平庸,没有明显的优势或短板。但这些“中庸”的广告媒体却构成了整个广告的主体。因此需要业务部门重点考虑其投放的实际价值。

聚类1:这类广告媒体在访问深度、平均停留时间、订单转化率以及平均搜索量等流量质量的特征上的表现较好,除了注册转化率较低外,该类渠道各方面比较均衡。更重要的是该类媒体的数量占据了31%的数量,因此是一类规模较大且综合效果较好的媒体。聚类1的广告渠道的短板是日均UV和平均注册率,因此该类媒体无法为企业带来大量的流量以及新用户。不过这类广告订单转化率高适合有关订单转化的提升。

聚类2:这类广告媒体渠道效果很好,特别是日均UV和用户停留时间表现很好,但综合其只占8%的媒体数量,由于实例比较少,不排除是因为个例导致效果扩大,可以合理增加此类渠道投放,继续深入测试其真实效果。

聚类3:这类渠道其日均UV还不错,平均注册率非常突出,证明这是一类“引流”+“拉新”的渠道,适合在大规模的广告宣传和引流时使用。

机器学习实战-聚类分析KMEANS算法-25相关推荐

  1. 数据建模-聚类分析-K-Means算法 --聚类可视化工具TSNE

    使用TSNE口可视化工具显示 数据建模-聚类分析-K-Means算法 #-*- coding: utf-8 -*-import sys reload(sys) sys.setdefaultencodi ...

  2. 机器学习实战——密度聚类算法

    机器学习实战--密度聚类算法 1 密度聚类 2 sklearn中的实现 1 密度聚类 密度聚类假设聚类结构能够通过样本分布的密集程度确定,通常情形下,密度聚类算法从样本密度的角度来考察样本之间的可连接 ...

  3. 机器学习实战——层次聚类算法

    机器学习实战--层次聚类算法 1 层次聚类概述 2 sklearn中的实现 1 层次聚类概述 层次聚类试图在不同层次对数据集进行划分,从而形成树形的聚类结构. 数据集的划分可采用"自底向上& ...

  4. python 聚类分析实战案例:K-means算法(原理源码)

    K-means算法: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xvV44zrK-1573127992123)(https://img-blog.csdn.net/ ...

  5. python聚类分析案例_python 聚类分析实战案例:K-means算法(原理源码)

    K-means算法: 关于步骤:参考之前的博客 关于代码与数据:暂时整理代码如下:后期会附上github地址,上传原始数据与代码完整版, 各种聚类算法的对比:参考连接 Kmeans算法的缺陷 1.聚类 ...

  6. 数据建模-聚类分析-K-Means算法

    常用聚类方法 类别 包括主要算法 划分(分裂)方法 K-Means算法(K-平均).K-MEDOIDS算法(K-中心点).CLARANS算法(基于选择的算法) 层次分析方法 BIRCH算法(平衡迭代规 ...

  7. 算法代码[置顶] 机器学习实战之KNN算法详解

    改章节笔者在深圳喝咖啡的时候突然想到的...之前就有想写几篇关于算法代码的文章,所以回家到以后就奋笔疾书的写出来发表了     前一段时间介绍了Kmeans聚类,而KNN这个算法刚好是聚类以后经常使用 ...

  8. 《机器学习实战》KNN算法实现

    本系列都是参考<机器学习实战>这本书,只对学习过程一个记录,不做详细的描述! 注释:看了一段时间Ng的机器学习视频,感觉不能光看不练,现在一边练习再一边去学习理论! KNN很早就之前就看过 ...

  9. 机器学习之聚类分析---K-means(一)

    初探k-means(Matlab) 俗话说:"物以类聚,人以群分",聚类分析的目的是:在数据中发现数据对象之间的关系,并将数据进行分组,使得组内的相似性尽可能大,组间的差别尽可能大 ...

最新文章

  1. 加密货币交易APP Robinhood增加了对以太坊经典的支持
  2. vue+vant 移动端H5 商城项目_03
  3. asp.net最常用的三十三种编程代码
  4. 删除MySql表中的大量记录后,文件不变小的解决方法
  5. wow 私服trinitycore
  6. 计算机软件技术信息安全哪个好,国内哪个大学的计算机安全专业最好?
  7. Java基础教程【第二章:Java数据类型和变量】
  8. PHP-----文件系统的交互
  9. linux下查看进程与线程
  10. 几行python代码实现Windows软件卸载
  11. iOS 新浪微博客户端Demo实践之(六) 微博评论列表页面和发评论
  12. WooCommerce接入支付宝支付功能(二)——WooCommerce中添加新的支付网关
  13. 计算机网络笔记(王道考研) 第二章:物理层
  14. 【LSTM实战】股票走势预测全流程实战(stock predict)
  15. unity加载文件夹下的所有预制体
  16. 快手春节红包背后,高并发存储架构设计
  17. Android 手札小记
  18. 苹果cms伪静态常见几种问题解决教程
  19. python学习3:IDEL(python shell)运行python脚本helloworld程序
  20. 百度地理围栏的一个坑

热门文章

  1. jQuery的prev next
  2. u盘往linux考文件过大,U盘拷贝时提示文件过大怎么办,教您如何解决
  3. 通信网络基础实验报告_建设亚太信息枢纽港、实现5G网络全覆盖!临港新片区通信基础设施规划发布...
  4. ansa打开catia文件_关于CATIA文件格式的那些事儿
  5. lindex.php,Redis学习笔记:命令
  6. qpython3使用手册图_qpython图形
  7. a - 数据结构实验之串一:kmp简单应用_中高级面试必备:快速入门数据结构和算法
  8. tcp伪报头_TCP和UDP报头的比较
  9. java制表符_Java地位无可动摇的12个原因
  10. c#连接oracle11,C#连接远程oracle11g数据库