当前位置: 首页 > article >正文

使用K-means把人群分类

1.前言

K-mean 是无监督的聚类算法

算法分类:

2.实现步骤

1.数据加工:把数据转为全数字(比如性别男女,转换为0 和 1)

2.模型训练 fit

3.预测

3.代码

原数据类似这样(source:http:img-blog.csdnimg.cn/20201212150816452.png):

代码:

from sklearn.cluster import KMeans
from sklearn import preprocessing
skill_info_df.to_excel("C:/work/20230224待分类数据/test.xlsx")

# fordrop the string people Chinese name
for_train_skill_info_df = skill_info_df.iloc[:, 1:]

# set k
k_model = KMeans(n_clusters=5)

# 数据归一化
min_max_scaler = preprocessing.MinMaxScaler()

train_x = min_max_scaler.fit_transform(for_train_skill_info_df)

# 训练模型
k_model.fit(train_x)

predict_y = k_model.predict(train_x)

print(predict_y)

# add predict result to data
skill_info_df['class'] = predict_y

skill_info_df.to_excel("C:/work/20230224预测结果/classified_info.xlsx")

4.常见问题

4.1 数据加工:  行列转换:

python实现列转行--pivot_table函数-CSDN博客

ps:pivot 函数遇到为空情况填充NAN,导入模型会报字符串非数字错误。
解决办法:设置 fill_value 参数:数据为空情况处理,默认填充NAN值。可以修改如果原数据为空,比如设为0

4.2 数据加工:查找df行特定列的值

问题描述:当使用  isin 函数 或者 == 判断时候,返回的是Series 数据类型。不是单独的数值all_prod_df[all_prod_df['product_id'].isin(sample_list)]

直接投到模型中训练会报错 

pandas的iloc和loc行列定位-CSDN博客

4.3 修改df数据中的男女为 0 1

basic_info_df['性别'][basic_info_df['性别'] == '男'] = 1
basic_info_df['性别'][basic_info_df['性别'] == '女'] = 0

4.4 df中新增一列,根据list新增

方法1:直接指定df列名赋值为list即可

skill_info_df['age'] = age_list

ps:list的长度要和df对齐

方法二:

df新增一列数据,并指定列名-CSDN博客

4.5 根据df的几列创建新的df

直接 df1 = df[[ '列名' ]]

python中dataframe,df中挑选几列生成新df-CSDN博客


http://www.kler.cn/a/159957.html

相关文章:

  • Bugku CTF_Web——点login咋没反应
  • 力扣662:二叉树的最大宽度
  • HBase 安装与基本操作指南
  • 2024年11月12日Github流行趋势
  • 1.7 JS性能优化
  • Linux基础1
  • MySql概述及其性能说明
  • 【PUSDN】centos查看日志文件内容,包含某个关键字的前后5行日志内容,centos查看日志的几种方法
  • 9个典型的交通行业AI应用
  • Java面试题(每天10题)-------连载(43)
  • kubeadm快速搭建k8s高可用集群
  • 目标检测常用评价指标
  • MATLAB Simulink +STM32硬件在环 (HIL)实现例程测试
  • 前后端数据传输格式(上)
  • 「音视频处理」音频编码AAC详解,低码率提高音质?
  • 【Python】Python读Excel文件生成xml文件
  • 智能优化算法应用:基于梯度算法无线传感器网络(WSN)覆盖优化 - 附代码
  • Spring boot -- 学习HttpMessageConverter
  • 【LeetCode 0170】【哈希】两数之和(3) 数据结构设计
  • Unity 加载本地或网络图片并转为精灵(Sprite)的方法
  • java WebSocket带参数处理使用
  • 逆向爬虫进阶实战:突破反爬虫机制,实现数据抓取
  • UEC++ 探索虚幻5笔记(捡金币案例) day12
  • Webgis学习总结
  • 数据增强改进,实现检测目标copypaste,增加目标数据量,提升精度
  • 安全行业招聘信息汇总