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

使用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_yskill_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博客

相关文章:

  • MongoDB的部署
  • 成倍提高生产力工具Notion
  • 解决ansible批量加入新IP涉及known_hosts报错的问题
  • uniapp中解决swiper高度自适应内容高度
  • 后端返回图片流前端展示图片
  • 【蓝桥杯软件赛 零基础备赛20周】第5周——高精度大数运算与队列
  • linux(3)之buildroot配置软件包
  • JavaScript中的时间日期函数new Date()(JS中5种获取时间戳的函数)
  • SELinux refpolicy详解(5)
  • 无人机助力电力设备螺母缺销智能检测识别,python基于YOLOv5开发构建电力设备螺母缺销小目标检测识别系统
  • [github全教程]github版本控制最全教学------- 大厂找工作面试必备!
  • uniapp uni-popup组件在微信小程序中滚动穿透问题
  • python获取网络时间,0延时
  • 使用Xshell启动远程服务器上的tensorboard:本地浏览器打开
  • uniapp在H5端实现PDF和视频的上传、预览、下载
  • “大数据应用场景”之隔壁老王(连载四)
  • export和import的用法总结
  • JavaScript DOM 10 - 滚动
  • JAVA之继承和多态
  • maya建模与骨骼动画快速实现人工鱼
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • SSH 免密登录
  • Swift 中的尾递归和蹦床
  • v-if和v-for连用出现的问题
  • 动态魔术使用DBMS_SQL
  • 分享一份非常强势的Android面试题
  • 基于webpack 的 vue 多页架构
  • 排序(1):冒泡排序
  • 前端相关框架总和
  • 新手搭建网站的主要流程
  • ionic入门之数据绑定显示-1
  • #HarmonyOS:基础语法
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • $().each和$.each的区别
  • $L^p$ 调和函数恒为零
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (16)Reactor的测试——响应式Spring的道法术器
  • (4)logging(日志模块)
  • (9)STL算法之逆转旋转
  • (二)Linux——Linux常用指令
  • (二十四)Flask之flask-session组件
  • (算法设计与分析)第一章算法概述-习题
  • (转)jQuery 基础
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • .NET 药厂业务系统 CPU爆高分析
  • .net开发时的诡异问题,button的onclick事件无效
  • .net下简单快捷的数值高低位切换
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • /run/containerd/containerd.sock connect: connection refused
  • @Responsebody与@RequestBody
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝