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

《数据挖掘》- 房价数据分析

这里写目录标题

  • 采用的技术
    • 1. Python编程语言
    • 2. 网络爬虫库
    • 技术点对比与区别
    • 项目技术栈的协同工作流程
  • 代码解析
    • 1. 导入头文件
    • 2. 读取原始数据
    • 3. 清洗数据
    • 4. 数据分割
      • 4.1 统计房屋信息的分段数量
      • 4.2 将房屋信息拆分为独立列
      • 4.3 处理面积字段
      • 4.4 删除原始房屋信息列
    • 5. 可视化分析
      • 5.1 房屋户型数量统计
      • 5.2 房源面积与总价
      • 5.3 各区二手房平均单价的热力图
      • 5.4 不同户型的占比分布
      • 5.5 **不同行政区的修类型分布情况**
  • 聚类分析
    • 数据准备与标准化
    • 确定最佳聚类数量(肘部法则)
  • 结论
  • 后记

采用的技术

链家网有反爬机制,频繁请求可能会被封IP

1. Python编程语言

作用:Python是一种高级、解释型、通用的编程语言,以其简洁的语法和强大的生态系统著称。
特点
易读性:Python代码接近自然语言,适合快速开发和维护。
丰富的库支持:拥有大量第三方库(如aiohttp、requests、parsel),适合各种应用场景。
跨平台:可在Windows、Linux、macOS等系统上运行。
适用场景:数据抓取、数据分析、Web开发、自动化脚本等。

2. 网络爬虫库

网络爬虫库是专门用于从网页上提取数据的工具。本项目使用了以下库:

  • a) aiohttp
    作用:基于asyncio的异步HTTP客户端/服务器框架,用于高效发送HTTP请求和处理响应。
    特点
    异步非阻塞:支持高并发请求,适合大规模爬取。
    轻量级:比requests更高效,但学习曲线稍陡。
    支持WebSocket:可用于实时数据抓取。
    适用场景:需要高并发、高性能的爬虫项目。
  • b) requests
    作用:简单易用的HTTP库,用于发送同步HTTP请求。
    特点
    同步阻塞:每次请求需等待响应,不适合高并发。
    API友好:代码简洁直观,适合初学者。
    功能全面:支持会话(Session)、Cookie、代理等。
    适用场景:小规模爬取或简单API调用。
  • c) parsel
    作用:基于lxml和cssselect的HTML/XML解析库,用于从网页中提取结构化数据。
    特点
  • CSS选择器/XPath:支持两种方式定位元素,灵活性强。
    高性能:底层依赖lxml,解析速度快。
    Scrapy兼容:与Scrapy框架的Selector API一致。
    适用场景:需要精确提取网页数据的场景。

技术点对比与区别

在这里插入图片描述

项目技术栈的协同工作流程

发起请求:
使用aiohttp(异步)或requests(同步)获取网页HTML。
解析数据:
通过parsel的CSS选择器/XPath提取目标数据。
并发控制:
利用asyncio管理多个爬取任务,避免阻塞。
数据处理:
将提取的数据存储到列表或数据库(如Pandas、SQLite)。

请添加图片描述

代码解析

在这里插入图片描述

1. 导入头文件

%matplotlib inline
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 设置matplotlib的字体为支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei']  # 黑体
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
  • %matplotlib inline:魔术命令,用于在 Notebook 中内嵌显示 matplotlib 图形。
  • pandas:数据处理库(通常用于数据清洗和分析)。
  • matplotlib.pyplot:Python 最基础的绘图库,plt 是约定俗成的别名。
  • seaborn:基于 matplotlib 的高级统计可视化库,默认风格更美观。
  • rcParamsmatplotlib 的全局参数配置字典。

2. 读取原始数据

data = pd.read_csv("./data/二手房数据.csv")
data.head()

这一部分就比较简单,所以就不多赘述 请添加图片描述

3. 清洗数据

我们获取到的野生数据也会出现重复或者缺失值,所以在开始统计之前我们需要清洗数据

清洗前:

# 缺失值统计
data.isnull().sum()# 重复值统计
data.duplicated().sum()# 获取数值型数据的统计摘要(计数、均值、标准差、最小值、四分位数、最大值)
data.describe()

在这里插入图片描述

# 删除关键数值缺失的行
data = data.dropna(subset=['单价(元/平米)', '总价(万)'])  # 删除区和位置都缺失的行(地理位置信息很重要)
data = data.dropna(subset=['区', '位置'])
data = data.dropna(subset=['房屋信息'])

4. 数据分割

原始数据中某一列可能包含多个信息,将复杂或复合型数据拆解为结构化字段,以便后续分析和建模

4.1 统计房屋信息的分段数量

统计 房屋信息 列中每条记录通过 | 分割后的字段数量

# 统计房屋信息的分段数量
nrec = data.房屋信息.map(lambda x: len(x.split('|')))
print(nrec.value_counts())
  • map(lambda x: …):对 房屋信息 列的每个元素应用函数。
  • x.split(‘|’):按 | 分割字符串,返回列表。
  • len():计算列表长度(即分段数量)。
  • value_counts():统计不同分段数量的出现次数。
    在这里插入图片描述
    这里返回的意思是:分成7段的数据有43878条;分成6段的数据有1263条(可能缺失数据);以此类推。那么为了后续的统计,我们就只保留分成7段的所有数据即可
# 只保留字段书数量为7的数据行
data = data[nrec == 7]
data.info()

4.2 将房屋信息拆分为独立列

将 房屋信息 列按 | 分割为7个独立字段,并赋值到新列

data['户型'] = data.房屋信息.map(lambda x: x.split(' | ')[0])
data['面积(平米)'] = data.房屋信息.map(lambda x: x.split(' | ')[1])
data['朝向'] = data.房屋信息.map(lambda x: x.split(' | ')[2])
data['装修类型'] = data.房屋信息.map(lambda x: x.split(' | ')[3])
data['楼层'] = data.房屋信息.map(lambda x: x.split(' | ')[4])
data['建成时间'] = data.房屋信息.map(lambda x: x.split(' | ')[5])
data['结构'] = data.房屋信息.map(lambda x: x.split(' | ')[6])
data.head()

在这里插入图片描述

4.3 处理面积字段

在后面制图表需要用到房屋面积的数值,但是有些数据里面会出现 xxx.xx平米 在后缀有中文的情况下是不能识别出来的,所以下一步需要将后缀的中文删除

data['面积(平米)'] = data['面积(平米)'].apply(lambda x: float(x.split('平米')[0]))
  • x.split(‘平米’)[0]:按 “平米” 分割字符串,取第一部分(数字)。
  • float():将字符串转为数值类型。

4.4 删除原始房屋信息列

删除已拆分完毕的原始列 房屋信息,避免数据冗余。

data.drop(labels='房屋信息', axis=1, inplace=True)
  • labels=‘房屋信息’:指定要删除的列名。
  • axis=1:表示按列删除(axis=0 为行)。
  • inplace=True:直接修改原DataFrame,不返回新对象。

5. 可视化分析

  • plt.figure() 用于创建一个新的图形/画布
  • figsize=(10, 6) 设置图形的宽度为10英寸,高度为6英寸
  • dpi=150 设置图形分辨率为150 dots per inch (每英寸点数)

5.1 房屋户型数量统计

👉条形图绘制

sns.barplot(x=house_layout_counts.index, y=house_layout_counts.values)
  • sns.barplot() 是 seaborn 库中绘制条形图的函数
  • x 参数指定条形图的x轴数据(户型类别)
  • y 参数指定条形图的高度(各户型数量)
  • seaborn 是基于 matplotlib 的高级可视化库,提供更美观的默认样式和更简洁的API

👉坐标轴调整
✈当x轴标签较长或较多时,旋转可以避免标签重叠

plt.xticks(rotation=90, horizontalalignment='right')
  • plt.xticks() 用于自定义x轴刻度标签
  • rotation=90 将x轴标签旋转90度(垂直显示)
  • horizontalalignment=‘right’ 设置标签右对齐,使显示更整齐

👉 图表保存

plt.savefig('./image/house_layout_distribution.png', dpi=300, bbox_inches='tight')
  • plt.savefig() 用于将图表保存为图像文件
  • dpi=300 设置保存图像的分辨率为300dpi(高于显示分辨率)
  • bbox_inches=‘tight’ 自动调整边界框,避免标签被截断

给出的图片显示如下:
在这里插入图片描述

5.2 房源面积与总价

这段代码主要用于处理和分析二手房数据中的面积与总价关系,并通过散点图进行可视化展示

👉数据类型转换

data['面积(平米)'] = pd.to_numeric(data['面积(平米)'], errors='coerce')
data['总价(万)'] = pd.to_numeric(data['总价(万)'], errors='coerce')
  • pd.to_numeric() 是 pandas 中将数据转换为数值类型的函数
  • errors=‘coerce’ 参数表示当转换失败时(如遇到非数字字符串),将值设为 NaN(Not a Number)

👉 散点图绘制

sns.scatterplot(x='面积(平米)', y='总价(万)', data=data)
  • sns.scatterplot() 是 seaborn 中绘制散点图的函数

5.3 各区二手房平均单价的热力图

👉数据聚合计算

average_price_by_district = data.groupby('区')['单价(元/平米)'].mean().reset_index()
print(average_price_by_district)
districts = average_price_by_district['区'].tolist()
average_prices = average_price_by_district['单价(元/平米)'].tolist()
  • groupby() 是 pandas 的分组聚合函数,按’区’列分组
  • mean() 计算每个分组的平均值
  • reset_index() 将分组结果转换回DataFrame格式
  • tolist() 将Series转换为Python列表,便于后续使用

DataFrame是Python中Pandas库的核心数据结构,是一种二维的、表格型的数据结构,类似于Excel表格或SQL数据库中的表

👉数据重构

pd.DataFrame(average_prices, index=districts, columns=['Average Price (Yuan/M^2)'])
  • 将列表数据重新构建为DataFrame
  • 使用行政区名作为索引(index)
  • 单列数据,列名为Average Price (Yuan/M^2)
  • 这种结构适合热力图输入要求

👉热力图绘制
✈ 热力图适合展示单变量在不同类别上的数值分布

sns.heatmap(data=...,  # 数据源annot=True,  # 显示数值fmt=".0f",  # 数值格式化为整数cmap="Reds",  # 红色系颜色映射cbar_kws={'label': 'Average Price (/平米)'}  # 颜色条标签
)
  • annot=True 在每个单元格中显示数值
  • fmt=“.0f” 控制数值显示格式(0位小数)
  • cmap=“Reds” 使用红色渐变表示数值大小
  • cbar_kws 自定义颜色条属性

5.4 不同户型的占比分布

👉数据统计

house_type_counts = data['户型'].value_counts(normalize=True)
  • value_counts() 是 pandas 中统计唯一值出现次数的方法
  • normalize=True 参数返回的是比例而非绝对计数
  • 结果是一个 Series,索引是户型类别,值是对应的占比(0-1之间)
  • 这种统计方式适合展示类别数据的分布比例

👉饼图绘制

plt.pie(house_type_counts,  # 数据labels=house_type_counts.index,  # 标签autopct='%1.1f%%',  # 百分比格式startangle=140,  # 起始角度colors=plt.cm.tab20.colors  # 颜色方案
)
  • house_type_counts:占比数据
  • labels:每个扇区对应的标签(户型名称)
  • autopct=‘%1.1f%%’:在扇区上显示百分比,保留1位小数
  • startangle=140:从140度开始绘制第一个扇区(顺时针方向)
  • colors=plt.cm.tab20.colors:使用tab20色板的颜色

5.5 不同行政区的修类型分布情况

👉数据统计与透视

total_by_district = data.groupby('区')['装修类型'].value_counts(normalize=True) * 100
pivot_table = total_by_district.unstack(fill_value=0).fillna(0)
  • groupby(‘区’)[‘装修类型’] 按行政区对装修类型分组
  • value_counts(normalize=True) 计算每种装修类型的占比(0-1)
  • *100 将比例转换为百分比(0-100)
  • unstack() 将多级索引的Series转换为DataFrame(装修类型变为列)
  • fill_value=0和fillna(0)确保没有数据的组合显示为0%

👉折线图绘制

for column in pivot_table:plt.plot(pivot_table.index, pivot_table[column], marker='o', label=column)
  • 遍历DataFrame的每一列(每种装修类型)
  • plt.plot()绘制折线图,参数包括:
    • x轴数据:区域名称(pivot_table.index)
    • y轴数据:装修占比(pivot_table[column])
    • marker='o’在数据点显示圆形标记
    • label=column设置图例标签

请添加图片描述

聚类分析

为了自动分类相似属性的房源,揭示市场细分结构,帮助理解不同群体的住房需求,评估房价合理性,为买家、卖家及投资者提供定制化信息和策略指导,同时也能洞察市场趋势,优化资源配置,提升决策效率与服务质量。我们对上海市的二手房数据进行聚类分析。
我们使用sklearn库中的KMeans聚类方法来对数据进行聚类工作。Scikit-learn(通常简称为sklearn)是一个开源的机器学习库,它构建于Python编程语言之上,是Python中最广泛使用的机器学习框架之一。
我们选取单价、总价、面积这三个数值型字段进行作为特征。在这之前,我们还需要对这三个字段的数据进行标准化操作。K-means等基于距离的聚类算法依赖于数据点间的距离计算。如果没有标准化,不同特征的量纲和大小可能导致计算出的距离失去实际意义。

数据准备与标准化

from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScalerfeatures = ['单价(元/平米)', '总价(万)', '面积(平米)']
X = data[features]
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
  1. 数据标准化:使用StandardScaler对数据进行标准化处理(均值为0,方差为1)
  2. 消除不同特征量纲的影响
  3. 使各特征对聚类结果的贡献度相同
  4. fit_transform():计算均值和标准差并立即应用转换

确定最佳聚类数量(肘部法则)

inertias = []
for i in range(1, 11):kmeans = KMeans(n_clusters=i, init='k-means++', random_state=42)kmeans.fit(X_scaled)inertias.append(kmeans.inertia_)

K-means参数:

  1. n_clusters:尝试1到10个聚类
  2. init=‘k-means++’:智能初始化聚类中心,加速收敛
  3. random_state=42:统一随机值,确保结果可复现

请添加图片描述

结论

本数据分析报告通过深入挖掘上海市二手房市场中的户型、单价、面积、总价以及区域分布,并结合聚类分析,揭示了市场的主要特征和潜在趋势。分析结果显示,上海市二手房市场呈现出明显的层次化和差异化特征,主要可分为三类群体:低价小户型、中价中型房、以及高价大户型,且这些群体在地理位置上也表现出特有的分布规律。

后记

本博客主要的代码参考原csdn付费文章——上海二手房数据分析
加上临近期末,于是把这个项目拆开总结成知识点共初学者学习
可以更好的加深对这门课的理解
所需源代码还请支持原作者!


原创不易,还请大家多多支持!
请添加图片描述

相关文章:

《数据挖掘》- 房价数据分析

这里写目录标题 采用的技术1. Python编程语言2. 网络爬虫库技术点对比与区别项目技术栈的协同工作流程 代码解析1. 导入头文件2. 读取原始数据3. 清洗数据4. 数据分割4.1 统计房屋信息的分段数量4.2 将房屋信息拆分为独立列4.3 处理面积字段4.4 删除原始房屋信息列 5. 可视化分…...

centos中的ulimit命令

centos中的ulimit命令 ulimit的作用CENTOS系统文件配置配置文件地址配置格式 配置方法 ulimit的作用 ulimit用于限制shell启动进程所占用的资源,支持以下各种类型的限制:所创建的内核文件的大小、进程数据块的大小、Shell进程创建文件的大小、内存锁住的…...

git提交代码和解决冲突修复bug

提交到分支的步骤如下: 确保你当前在开发分支上,可以使用命令 git branch 来查看当前所在分支,并使用 git checkout 命令切换到开发分支。使用 git add 命令将修改的文件添加到暂存区。使用 git commit 命令提交代码到本地仓库。 解决合并冲…...

华为仓颉语言初识:并发编程之同步机制(上)

前言 线程同步机制是多线程下解决线程对共享资源竞争的主要方式,华为仓颉语言提供了三种常见的同步机制用来保证线程同步安全,分别是原子操作,互斥锁和条件变量。本篇文章详细介绍主要仓颉语言解决同步机制的方法,建议点赞收藏&a…...

php中实现邮件发送功能

要在php项目中实现邮件发送功能,推荐使用phpmailer库通过smtp协议配置。首先安装phpmailer扩展,可通过composer命令composer require phpmailer/phpmailer安装;若未使用composer则手动引入源码。接着配置smtp信息,包括服务器地址&…...

C++之动态数组vector

Vector 一、什么是 std::vector?二、std::vector 的基本特性(一)动态扩展(二)随机访问(三)内存管理 三、std::vector 的基本操作(一)定义和初始化(二&#xf…...

arc3.2语言sort的时候报错:(sort < `(2 9 3 7 5 1)) 需要写成这种:(sort > (pair (list 3 2)))

arc语言sort的时候报错&#xff1a;(sort < (2 9 3 7 5 1)) arc> (sort < (2 9 3 7 5 1)) Error: "set-car!: expected argument of type <pair>; given: 9609216" arc> (sort < (2 9 3 )) Error: "Function call on inappropriate object…...

Android动态广播注册收发原理

一、动态广播的注册流程 1. ​​注册方式​​ 动态广播通过代码调用 Context.registerReceiver() 方法实现&#xff0c;需显式指定 IntentFilter 和接收器实例&#xff1a; // 示例&#xff1a;在 Activity 中注册监听网络变化的广播 IntentFilter filter new IntentFilter…...

Ubuntu 系统通过防火墙管控 Docker 容器

Ubuntu 系统通过防火墙管控 Docker 容器指南 一、基础防火墙配置 # 启用防火墙 sudo ufw enable# 允许 SSH 连接&#xff08;防止配置过程中断联&#xff09; sudo ufw allow 22/tcp二、Docker 配置调整 # 编辑 Docker 配置文件 sudo vim /etc/docker/daemon.json配置文件内…...

AI 模型分类全解:特性与选择指南

人工智能&#xff08;AI&#xff09;技术正以前所未有的速度改变着我们的生活和工作方式。AI 模型作为实现人工智能的核心组件&#xff0c;种类繁多&#xff0c;功能各异。从简单的线性回归模型到复杂的深度学习网络&#xff0c;从文本生成到图像识别&#xff0c;AI 模型的应用…...

【Zephyr 系列 11】使用 NVS 实现 BLE 参数持久化:掉电不丢配置,开机自动加载

🧠关键词:Zephyr、NVS、非易失存储、掉电保持、Flash、AT命令保存、配置管理 📌目标读者:希望在 BLE 模块中实现掉电不丢配置、支持产测参数注入与自动加载功能的开发者 📊文章长度:约 5200 字 🔍 为什么要使用 NVS? 在实际产品中,我们经常面临以下场景: 用户或…...

【Android】Android Studio项目代码异常错乱问题处理(2020.3版本)

问题 项目打开之后&#xff0c;发现项目文件直接乱码&#xff0c; 这样子的 这本来是个Java文件&#xff0c;结果一打开变成了这种情况&#xff0c;跟见鬼一样&#xff0c;而且还不是这一个文件这样&#xff0c;基本上一个项目里面一大半都是这样的问题。 处理方法 此时遇到…...

n皇后问题的 C++ 回溯算法教学攻略

一、问题描述 n皇后问题是经典的回溯算法问题。给定一个 nn 的棋盘&#xff0c;要求在棋盘上放置 n 个皇后&#xff0c;使得任何两个皇后之间不能互相攻击。皇后可以攻击同一行、同一列以及同一对角线上的棋子。我们需要找出所有的合法放置方案并输出方案数。 二、输入输出形…...

一些免费的大A数据接口库

文章目录 一、Python开源库&#xff08;适合开发者&#xff09;1. AkShare2. Tushare3. Baostock 二、公开API接口&#xff08;适合快速调用&#xff09;1. 新浪财经API2. 腾讯证券接口3. 雅虎财经API 三、第三方数据平台&#xff08;含免费额度&#xff09;1. 必盈数据2. 聚合…...

DeepSeek本地部署及WebUI可视化教程

前言 DeepSeek是近年来备受关注的大模型之一,支持多种推理和微调场景。很多开发者希望在本地部署DeepSeek模型,并通过WebUI进行可视化交互。本文将详细介绍如何在本地环境下部署DeepSeek,并实现WebUI可视化,包括Ollama和CherryStudio的使用方法。 一、环境准备 1. 硬件要…...

机器学习算法时间复杂度解析:为什么它如此重要?

时间复杂度的重要性 虽然scikit-learn等库让机器学习算法的实现变得异常简单&#xff08;通常只需2-3行代码&#xff09;&#xff0c;但这种便利性往往导致使用者忽视两个关键方面&#xff1a; 算法核心原理的理解缺失 忽视算法的数据适用条件 典型算法的时间复杂度陷阱 SV…...

SSIM、PSNR、LPIPS、MUSIQ、NRQM、NIQE 六个图像质量评估指标

评价指标 1. SSIM&#xff08;Structural Similarity Index&#xff09; &#x1f4cc; 定义 结构相似性指数&#xff08;Structural Similarality Index&#xff09;是一种衡量两幅图像相似性的指标&#xff0c;考虑了亮度、对比度和结构信息的相似性&#xff0c;比传统的 P…...

【笔记】旧版MSYS2 环境中 Rust 升级问题及解决过程

下面是一份针对在旧版 MSYS2&#xff08;安装在 D 盘&#xff09;中&#xff0c;基于 Python 3.11 的 Poetry 虚拟环境下升级 Rust 的处理过程笔记&#xff08;适用于 WIN 系统 SUNA 人工智能代理开源项目部署要求&#xff09;的记录。 MSYS2 旧版环境中 Rust 升级问题及解决过…...

centos查看开启关闭防火墙状态

执行&#xff1a;systemctl status firewalld &#xff0c;即可查看防火墙状态 防火墙的开启、关闭、禁用命令 &#xff08;1&#xff09;设置开机启用防火墙&#xff1a;systemctl enable firewalld.service &#xff08;2&#xff09;设置开机禁用防火墙&#xff1a;system…...

[论文阅读] 人工智能 | 大语言模型计划生成的新范式:基于过程挖掘的技能学习

#论文阅读# 大语言模型计划生成的新范式&#xff1a;基于过程挖掘的技能学习 论文信息 Skill Learning Using Process Mining for Large Language Model Plan Generation Andrei Cosmin Redis, Mohammadreza Fani Sani, Bahram Zarrin, Andrea Burattin Cite as: arXiv:2410.…...

MS31912TEA 多通道半桥驱动器 氛围灯 照明灯 示宽灯 转向灯驱动 后视镜方向调节 可替代DRV8912

MS31912TEA 多通道半桥驱动器 氛围灯 照明灯 示宽灯 转向灯驱动 后视镜方向调节 可替代DRV8912 产品简述 MS31912 是集成多种高级诊断功能的多通道半桥驱动。 MS31912 具有 12 个半桥&#xff0c;典型工作电压 13.5V 下&#xff0c;每一个半桥支持 1A 电流&#xff0c;典型工…...

软考 系统架构设计师系列知识点之杂项集萃(84)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之杂项集萃&#xff08;83&#xff09; 第151题 在软件系统工具中&#xff0c;版本控制工具属于&#xff08;&#xff09;&#xff0c;软件评价工具属于&#xff08;&#xff09;。 第1空 A. 软件开发工具 B. 软件维…...

矩阵QR分解

1 orthonormal 向量与 Orthogonal 矩阵 orthonormal 向量定义为 &#xff0c;任意向量 相互垂直&#xff0c;且模长为1&#xff1b; 如果将 orthonormal 向量按列组织成矩阵&#xff0c;矩阵为 Orthogonal 矩阵&#xff0c;满足如下性质&#xff1a; &#xff1b; 当为方阵时&…...

UDP与TCP的区别是什么?

UDP和TCP是互联网通信中最常用的两种传输层协议&#xff0c;它们在数据传输方式、可靠性、速度和适用场景等方面存在显著差异。本文将围绕UDP与TCP的核心区别展开详细分析&#xff0c;包括连接方式、数据传输机制、传输效率以及各自适合的应用场景&#xff0c;帮助开发者和网络…...

撰写脚本,通过发布/joint_states话题改变机器人在Rviz中的关节角度

撰写脚本&#xff0c;通过发布/joint_states话题改变机器人在Rviz中的关节角度 提问 为我写一个改变关节base_spherical_center_high_joint角度的python脚本吧。适用于ROS2的humble 回答 下面是一个适用于 ROS 2 Humble 的 Python 脚本&#xff0c;它会以指定频率持续发布 …...

AOP实现Restful接口操作日志入表方案

文章目录 前言一、基础资源配置1.操作日志基本表[base_operation_log] 见附录1。2.操作日志扩展表[base_operation_log_ext] 见附录2。3.定义接口操作系统日志DTO&#xff1a;OptLogDTO4.定义操作日志注解类WebLog5.定义操作日志Aspect切面类SysLogAspect6.定义异步监听日志事件…...

【MATLAB去噪算法】基于CEEMDAN联合小波阈值去噪算法(第四期)

CEEMDAN联合小波阈值去噪算法相关文献 一、EMD 与 EEMD 的局限性 &#xff08;1&#xff09;EMD (经验模态分解) 旨在自适应地将非线性、非平稳信号分解成一系列 本征模态函数 (IMFs)&#xff0c;这些 IMFs 从高频到低频排列。 核心问题&#xff1a;模态混合 (Mode Mixing) 同…...

Webhook 配置备忘

本文地址&#xff1a;blog.lucien.ink/archives/552 将下列代码保存为 install.sh&#xff0c;然后 bash install.sh。 #!/usr/bin/env bash set -e wget https://github.mirrors.lucien.ink/https://github.com/adnanh/webhook/releases/download/2.8.2/webhook-linux-amd64.…...

从理论崩塌到新路径:捷克科学院APL Photonics论文重构涡旋光技术边界

理论预言 vs 实验挑战 光子轨道角动量&#xff08;Orbital Angular Momentum, OAM&#xff09;作为光场调控的新维度&#xff0c;曾被理论预言可突破传统拉曼散射的对称性限制——尤其是通过涡旋光&#xff08;如拉盖尔高斯光束&#xff09;激发晶体中常规手段无法探测的"…...

机器学习笔记【Week7】

一、SVM的动机&#xff1a;大间隔分类器 1、逻辑回归回顾 假设函数为 sigmoid 函数&#xff1a; h θ ( x ) 1 1 e − θ T x h_\theta(x) \frac{1}{1 e^{-\theta^Tx}} hθ​(x)1e−θTx1​ 分类依据是 h θ ( x ) ≥ 0.5 h_\theta(x) \geq 0.5 hθ​(x)≥0.5 为正类&a…...