【数据挖掘机器学习】招聘网站的职位招聘数据的分位数图、分位数-分位数图以及散点图、使用线性回归算法拟合散点图处理详解

news2025/1/12 21:07:00

文章目录

  • 一.本次需求背景
  • 二.职位招聘数据的分位数图、分位数-分位数图
  • 三.使用散点图、使用线性回归算法拟合散点图处理数据

一.本次需求背景

本文主题:招聘网站的职位招聘数据的分位数图、分位数-分位数图以及散点图、使用线性回归算法拟合散点图处理详解

之前的文章我们已经对爬取的数据做了清洗处理,然后又对其数据做了一个薪资数据的倾斜情况以及盒图离群点的探究。

我们这次的需求是:

使用散点图、使用线性回归算法拟合散点图处理数据 使用局部回归(Loess)曲线(增加一条光滑曲线到散布图)方法处理数据

技术要点:爬虫库(Beautifulsoup、requests-html、Scrapy)、数据预处理(python、kettle)、数据可视化(matplotlib、pyecharts、tebleau)、python-web框架(Flask)

二.职位招聘数据的分位数图、分位数-分位数图

我们这次先看一下效果图:本次任务最后的效果就是下面这俩个图:

img

img

1.这块与上面几篇都一样:

使用关键词“java”对数据进行筛选,循环筛选过程中将职位名,薪资需要的关键字放到列表里面,然后存入字典里,经过pandas的处理: 将上限和下限分别处理:

xingzhi={}
zhiwei =[]
xin1 = []
xin2 =[]
for i in range(len(data)):
    if "java" in data.iloc[i]['职位名']:
        a = re.findall("\d+.?\d*", data.iloc[i]['薪资'])
        # print(data.iloc[i]['职位名'])
        zhiwei.append(data.iloc[i]['职位名'])
        xin1.append(int(a[0]))
        xin2.append(int(a[1]))
xingzhi={"职位名":zhiwei,'最低薪资':xin1,'最高薪资':xin2}
df = pd.DataFrame(xingzhi)
java_min=xin1
java_max=xin2
​

2.开始画图:将java数据的上限和下限分别作为两个特征值,传入进行绘图工作:

这里注意一点,我们在进行绘图之前需要使用sort对数据进行一个排序操作。X轴是公司个数,Y轴是薪资,单位K:

java岗位的薪资分位数图 java职位工资下限:绿色。java职位工资上限:红色

x=range(0, df['最高薪资'].count())
y=np.sort(xin1)
y1=np.sort(xin2)
plt.scatter(x,y,marker='.', c='green',alpha=0.4,label='bulge')
plt.scatter(x,y1,marker='.',c='red',alpha=0.4, label='scratch')
plt.xlabel('公司个数')
plt.ylabel('薪资,单位K')
plt.title('java岗位的薪资分位数图\njava职位工资下限:绿色。java职位工资上限:红色')
plt.show()

3.绘图效果如下:

java岗位的薪资分位数图

img

Python岗位的薪资分位数图

img

Go岗位的薪资分位数图

img

5.分位数—分位数图: 因为java岗位的数据远远的大于Python岗位的数据,我这里的想法是将java岗位的下限和上限分别和Python岗位的下限和上限做为特征值,进行绘图工作。 下限代码如下:

分位数——分位数图

特征值:java下限薪资和python下限薪资:

ava_min=java_min[:len(python_min)]
y=np.sort(java_min)
y1=np.sort(python_min)
​
plt.scatter(y,y1)
plt.plot([y[0],y[-1]],[y1[0],y1[-1]])
plt.scatter([np.quantile(y,0.25),np.quantile(y,0.5),np.quantile(y,0.75)],[np.quantile(y1,0.25),np.quantile(y1,0.5),np.quantile(y1,0.75)])
plt.xlabel('java下限薪资:单位k')
plt.ylabel('python下限薪资:单位k')
plt.title('分位数——分位数图\n特征值:java下限薪资和python下限薪资')
plt.show()

上限代码如下::

分位数——分位数图

特征值:java上限薪资和python上限薪资

java_max=java_min[:len(python_max)]
y=np.sort(java_max)
y1=np.sort(python_max)
​
plt.scatter(y,y1)
plt.plot([y[0],y[-1]],[y1[0],y1[-1]])
plt.scatter([np.quantile(y,0.25),np.quantile(y,0.5),np.quantile(y,0.75)],[np.quantile(y1,0.25),np.quantile(y1,0.5),np.quantile(y1,0.75)])
plt.xlabel('java上限薪资:单位k')
plt.ylabel('python上限薪资:单位k')
plt.title('分位数——分位数图\n特征值:java上限薪资和python上限薪资')
plt.show()

6.分位数—分位数图效果图如下:

java薪资下限和Python薪资下限的分位数-分位数图:

img

java薪资上限和Python薪资上限的分位数-分位数图

img

三.使用散点图、使用线性回归算法拟合散点图处理数据

注意:Linear Regression

线性回归算法:线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。 其表达形式为y = w’x+e,e为误差服从均值为0的正态分布。

线性回归算法模型非常简单。每个数据有n个特征,每个特征对应于其自身的权重值。权重加上偏移值的乘积就是线性回归模型。公式如下:image-20221216212908164

公式如下:

image-20221216212824232

在回归分析中,只包括一个自变量和一个因变量,它们的关系可以近似地用一条直线表示。这种回归分析称为线性回归分析。如果回归分析包括两个或多个自变量,且因变量和自变量之间的关系是线性的,则称为多元线性回归分析。

1.与上文一样,我们使用关键词“java”对数据进行筛选,循环筛选过程中将职位名,薪资需要的关键字放到列表里面,然后存入字典里,经过pandas的处理: 将上限和下限分别处理:

xingzhi={}
zhiwei = []
xin1 = []
xin2 =[]
for i in range(len(data)):
    if "java" in data.iloc[i]['职位名']:
        a = re.findall("\d+.?\d*", data.iloc[i]['薪资'])
        # print(data.iloc[i]['职位名'])
        zhiwei.append(data.iloc[i]['职位名'])
        xin1.append(int(a[0]))
        xin2.append(int(a[1]))
xingzhi={"职位名":zhiwei,'最低薪资':xin1,'最高薪资':xin2}
df = pd.DataFrame(xingzhi)
java1=xin1
java2=xin2

2.使用上面的列表数据进行绘图—散点图:

X轴:各岗位薪资下限,y轴:各岗位薪资上限

plt.scatter(java1,java2, c="red", marker='o', label='java')
plt.scatter(python1,python2, c="green", marker='+', label='python')
plt.scatter(go1,go2, c="yellow", marker='^', label='go')
plt.xlabel('各岗位薪资下限')
plt.ylabel('各岗位薪资上限')
plt.legend(loc=2)
plt.show()

以java为例,其他的俩种语言类似:

plt.scatter(java1,java2, c="red", marker='o', label='java')
plt.xlabel('Java岗位薪资下限')
plt.ylabel('Java岗位薪资上限')
plt.legend(loc=1)
plt.show()

3,效果图如下:

各岗位薪资的的下限和上限散点图:

img

java岗位薪资的的下限和上限散点图:

img

Python岗位薪资的的下限和上限散点图

img

Go岗位薪资的的下限和上限散点图

img

4.使用线性回归算法拟合散点图 使用线性回归算法进行计算,拟合值。

from sklearn import linear_model
linear=linear_model.LinearRegression()
linear.fit(np.reshape(java1,(-1, 1)),np.reshape(java2,(-1, 1)))
print("training score",linear.score(np.reshape(java1,(-1, 1)),np.reshape(java2,(-1, 1))))

5.对其拟合结果进行绘图

X轴:java岗位薪资下限 y轴:java岗位薪资上限

使用线性回归算法拟合散点图

特征值:java岗位薪资下限和java岗位薪资上限

import matplotlib.pyplot as plt
import numpy as np
plt.scatter(np.reshape(java1,(-1, 1)),np.reshape(java2,(-1, 1)),color="red")
plt.scatter(np.reshape(java1,(-1, 1)),np.reshape(java2,(-1, 1)))
plt.scatter(np.reshape(java1,(-1, 1)),np.dot(np.reshape(java1,(-1, 1)),linear.coef_)+linear.intercept_)
plt.xlabel('java岗位薪资下限')
plt.ylabel('java岗位薪资上限')
plt.title("使用线性回归算法拟合散点图\n特征值:java岗位薪资下限和java岗位薪资上限")
plt.show()

6.效果图如下:

java岗位薪资的的下限和上限的线性拟合散点图

img

Python岗位薪资的的下限和上限的线性拟合散点图:

img

Go岗位薪资的的下限和上限的线性拟合散点图

img

总结:

体会从需求出发,到设计、编码、测试、发布的整体流程,熟悉软件开发过程。熟悉和掌握数据预处理流程。能够在实际中运用数据清理、数据集成、数据变换、数据规约的技术和方法处理数据。培养快速学习和分享新知识,并在项目中使用的能力及独立解决问题的能力。

本次完成了:招聘网站的职位招聘数据的分位数图、分位数-分位数图以及散点图、使用线性回归算法拟合散点图处理。

后面我们研究:使用局部回归(Loess)曲线(增加一条光滑曲线到散布图)方法处理数据以及使用分箱、回归、聚类方法 检查离群点及光滑数据;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/94415.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《Python多人游戏项目实战》第三节 在窗口上显示玩家ID以及对话内容

目录 3.1 显示不同的人物图片 3.2 显示玩家ID 3.3 显示玩家对话内容 3.4 完整代码下载地址 本节只是在上一节内容的基础上加一些小功能:显示不同的人物图片、在人物头顶上显示玩家ID以及人物头顶上显示一个聊天对话框。大家可以把这一节内容当做一个过渡&#x…

【OpenCV-Python】教程:6-2 Pose Estimation (姿态估计)

OpenCV Python Pose Estimation (姿态估计) 【目标】 利用calib3d模块在图像中创建一些3D效果。 【理论】 这是一小部分。在上一节中,已经找到了摄像机矩阵,失真系数等。给定一个图案图像,我们可以利用上面的信息来计算它的姿态&#xff…

【云原生进阶之容器】第一章Docker核心技术1.5.2节——cgroups原理剖析

2 cgroups原理解析 上面是说的cgroups 是内核提供的功能,但现在我们在用户空间想使用的是cgroup的功能。其原理是:linux 内核有一个很强大的模块叫做VFS(vritual File System),VFS 把具体的文件系统的细节隐藏起来,给用户态进程提供一个完备的文件系统API接口。linux 也是通…

昆仑万维重磅发布AIGC全系列算法与模型,领跑未来

2022年12月15日,昆仑万维在北京举行AIGC技术发布会,会上昆仑万维CEO方汉正式发布了「昆仑天工」AIGC全系列算法与模型,并宣布模型开源。「昆仑天工」旗下模型包括天工巧绘SkyPaint、天工乐府SkyMusic、天工妙笔SkyText、天工智码SkyCode&…

[附源码]Python计算机毕业设计高校学科竞赛报名系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

四、移动手机自动化测试

移动手机自动化测试4.1 Appium 介绍4.1.1 Appium 中的常用术语1. Session2. Desired Capabilities3. Appium Server4.1.2 Appium 服务关键字Appium 服务相关参数的说明4.1 Appium 介绍 Appium 是一个开源、跨平台的自动化测试工具,可以用来测试 Native 及混合的移动…

Web3中文|Reddit用户在Polygon上铸造了超500万个NFT

Reddit用户通过Collectible Avatars 计划,已经铸造了超过 500 万个NFT。 Reddit的NFT头像是在以太坊扩展网络Polygon上铸造的,大多数都是免费赠送给Reddit用户。 在NFT销量下滑和加密货币市场动荡的情况下,Reddit对NFT头像的推动是一个罕见…

Spring 之类元数据封装—MetadataReader

在 Spring 中最喜欢干的事情就是将多个参数封装到一个对象,这里就挑选一个例子讲讲——MetadataReader,这个对象是将一个类封装成了三部分:File 文件本身,类元数据,注解元数据。 MetadataReader 元数据对象 先看下这…

架构设计(四):CDN

架构设计(四):CDN 作者:Grey 原文地址: 博客园:架构设计(四):CDN CSDN:架构设计(四):CDN CDN 全称 Content delivery…

Redis面试准备

1. redis网站 Redis Redis文档中心 -- Redis中国用户组(CRUG) 数据库排名网站:DB-Engines - Knowledge Base of Relational and NoSQL Database Management Systems 2. 基础知识 磁盘中的寻址速度是毫秒级,内存中寻址速度是纳…

[ vulhub漏洞复现篇 ] struts2远程代码执行漏洞s2-048(CVE-2017-9791)

一、漏洞编号 s2-048 CVE-2017-9791二、影响范围 Apache Struts 2.3.x系列中启用了struts2-struts1-plugin插件的版本三、漏洞描述 Apache Struts2 2.3.x 系列启用了struts2-struts1-plugin 插件并且存在 struts2-showcase 目录,其漏洞成因是当ActionMessage接收客户可控的参…

【论文精读】Focal Inverse Distance Transform Maps for Crowd Localization

文章目录摘要主要贡献主要内容一、FIDT二、LMDS三。I-SSIM loss摘要 在本文中,我们关注人群定位任务,这是人群分析的一个重要课题。基于回归的方法大多使用卷积神经网络( CNN )对密度图进行回归,在极度稠密的场景中无法准确定位实例&#xf…

跨境卖家如何以最少量的预算建立品牌知名度?

关键词:跨境卖家、品牌知名度 什么是品牌知名度? 品牌知名度反映了您的目标受众对您的品牌的了解、认可和记忆程度。 为什么品牌知名度至关重要? 当您的目标受众需要您提供的产品或服务时,您希望他们考虑您的品牌。为此&#xf…

windows下nginx隐藏HTTP 请求头文件中的Server信息

简介 本文主要是隐藏HTTP 请求头文件中的Server信息 解决问题主要分下面几步 一、准备编译所需要的环境 二、修改nginx源码改变配置 三、编译nginx源码生成新的nginx.exe 四、替换nginx.exe,重新启动nginx 1. 准备所需环境 环境都需要准备好,因为编译是…

精品spring boot+MySQL线上点餐系统vue

《spring bootMySQL线上点餐系统》该项目含有源码、论文等资料、配套开发软件、软件安装教程、项目发布教程等 使用技术: 操作系统:Windows 10、Windows 7、Windows 8 开发语言:Java 使用框架:spring boot 前端技术&#xff…

大数据毕业设计人体跌倒检测系统

文章目录前言1 实现方法传统机器视觉算法基于机器学习的跌倒检测SVM简介SVM跌倒检测原理算法流程算法效果实现代码深度学习跌倒检测最终效果网络原理最后前言 背景和意义 在美国,每年在65岁以上老人中,平均每3人中就有1人发生意外跌倒,每年…

[附源码]Node.js计算机毕业设计关于人脸识别的实验教学管理系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

嵌入式分享合集122

一、分析电容降压电路工作原理 电容降压电路,因其成本低廉、体积小而被广泛地使用,此一优点足以掩盖其它所有缺点:输出电流小(一般控制在100mA以内),与市电直通非隔离而存在安全隐患,输出电压波…

饥荒服务器搭建(windows)

文章目录1. 获取服务器票据2. 新建游戏存档3. 饥荒服务器配置1. 获取服务器票据 步骤1:登录Klei官网 步骤2:点击菜单栏游戏——选择饥荒服务器 步骤3:创建服务器获取票据,后面将会用到。 2. 新建游戏存档 步骤1:下载…

Python开发游戏?也太好用了吧

程序员宝藏库:https://gitee.com/sharetech_lee/CS-Books-Store 当然可以啦! 现在日常能够用到和想到的场景,绝大多数都可以用Python实现。 效果怎么样暂且不提,但是得益于丰富的第三方工具包,的确让Python能够很容易…