是从原始数据到价值挖掘的完整流程解析,涵盖数据采集、清洗、存储、处理、建模、可视化等核心环节,并附上完整代码示例(含详细注释)及技术选型建议表
以下是从原始数据到价值挖掘的完整流程解析,涵盖数据采集、清洗、存储、处理、建模、可视化等核心环节,并附上完整代码示例(含详细注释)及技术选型建议表。
一、全流程技术栈概览
阶段 | 核心任务 | 关键技术/工具 |
---|---|---|
数据采集 | 获取原始数据 | Flume/Kafka/API/Web Scraping |
数据清洗 | 去重/补缺/标准化 | Pandas/Spark SQL/Data Wrangler |
数据存储 | 结构化存储 | HDFS/Hive/ClickHouse/HBase |
批处理 | 离线计算 | Spark/Flink Batch/Hadoop MapReduce |
流处理 | 实时计算 | Flink/Spark Streaming/Kafka Streams |
特征工程 | 构造机器学习输入 | Scikit-learn/TensorFlow/Featuretools |
模型训练 | 构建预测/分类模型 | XGBoost/Deep Learning Frameworks |
可视化 | 输出业务洞察 | Tableau/Matplotlib/Echarts/Dashboards |
二、分阶段详解与代码示例
1. 数据采集 - 通过API获取原始数据(Python)
import requests
import json# 示例:调用公共天气API获取JSON数据
url = "https://api.weatherapi.com/v1/current.json"
params = {"key": "your_api_key","q": "Beijing","aqi": "no"
}response = requests.get(url, params=params)
raw_data = response.json()# 将原始数据保存为JSON文件
with open("raw_weather_data.json", "w") as f:json.dump(raw_data, f, indent=2)print("✅ 原始数据已采集并保存")
2. 数据清洗 - 使用Pandas处理缺失值与异常值
import pandas as pd# 读取原始CSV数据
df = pd.read_csv("sensor_data.csv")# 查看数据质量报告
print(df.describe())
print("\n缺失值统计:\n", df.isnull().sum())# 处理缺失值(填充均值)
df['temperature'] = df['temperature'].fillna(df['temperature'].mean())# 删除异常值(温度>60°C)
df_cleaned = df[df['temperature'] <= 60]# 保存清洗后数据
df_cleaned.to_parquet("cleaned_sensor_data.parquet")
print("✅ 数据清洗完成,清洗后数据量:", len(df_cleaned))
3. 数据存储 - 使用Apache Spark写入Parquet格式
from pyspark.sql import SparkSessionspark = SparkSession.builder \.appName("DataStorage") \.getOrCreate()# 读取清洗后的Parquet数据
df_spark = spark.read.parquet("cleaned_sensor_data.parquet")# 写入分区表(按日期分区)
df_spark.write \.partitionBy("date") \.mode("overwrite") \.parquet("hdfs:///user/data/sensor_partitioned")print("✅ 数据已按日期分区存储至HDFS")
4. 批处理 - 使用Spark SQL进行离线分析
# 注册临时表
df_spark.createOrReplaceTempView("sensor_table")# 执行SQL查询(计算每日平均温度)
daily_avg = spark.sql("""SELECT date, AVG(temperature) AS avg_tempFROM sensor_tableGROUP BY date
""")# 保存结果至MySQL
daily_avg.write \.format("jdbc") \.option("url", "jdbc:mysql://localhost:3306/weather_db") \.option("dbtable", "daily_temperature") \.option("user", "root") \.option("password", "password") \.mode("overwrite") \.save()print("✅ 批处理完成,结果已写入MySQL")
5. 流处理 - Kafka Streams实时过滤日志
// Java示例:Kafka Streams实时处理
Properties props = new Properties();
props.put(APPLICATION_ID_CONFIG, "log-filter-app");
props.put(BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");StreamsBuilder builder = new StreamsBuilder();
KStream<String, String> logs = builder.stream("raw_logs");// 过滤错误日志
logs.filter((key, value) -> value.contains("ERROR")).to("error_logs");KafkaStreams streams = new KafkaStreams(builder.build(), props);
streams.start();System.out.println("✅ 流处理启动,实时过滤错误日志...");
6. 特征工程 - 使用Scikit-learn构建特征矩阵
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split# 文本数据示例
texts = ["机器学习很有趣", "深度学习改变世界", "数据分析驱动决策"]
labels = [0, 1, 0] # 0=传统AI, 1=深度学习# TF-IDF向量化
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(texts)# 划分训练集/测试集
X_train, X_test, y_train, y_test = train_test_split(X, labels, test_size=0.2)
print("✅ 特征工程完成,特征维度:", X.shape[1])
7. 模型训练 - 训练文本分类器
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score# 训练逻辑回归模型
model = LogisticRegression()
model.fit(X_train, y_train)# 预测与评估
y_pred = model.predict(X_test)
print(f"✅ 模型训练完成,准确率: {accuracy_score(y_test, y_pred):.2%}")
8. 可视化 - Matplotlib生成趋势图
import matplotlib.pyplot as plt
import pandas as pd# 读取批处理结果
daily_df = pd.read_sql("SELECT * FROM daily_temperature", engine)# 绘制时间序列图
plt.figure(figsize=(10, 6))
plt.plot(daily_df["date"], daily_df["avg_temp"], marker="o")
plt.title("每日平均温度变化趋势")
plt.xlabel("日期")
plt.ylabel("平均温度(℃)")
plt.grid(True)
plt.savefig("temperature_trend.png")
print("✅ 可视化图表已生成")
三、全流程技术选型对比表
阶段 | 关键处理动作 | 主流工具 | 适用场景 |
---|---|---|---|
数据采集 | API调用/Web爬虫/Kafka生产者 | Requests/BeautifulSoup/Flume | 日志收集/传感器数据接入 |
数据清洗 | 格式转换/去噪/归一化 | Pandas/OpenRefine/Trifacta | 清洗脏数据/统一单位 |
数据存储 | 分层存储/分区管理 | HDFS/ClickHouse/HBase/Cassandra | 高并发写入/低成本存储 |
批处理 | 聚合/关联/ETL | Spark/Flink Batch/HiveQL | 月度报表/数据仓库构建 |
流处理 | 实时过滤/窗口计算 | Flink/Spark Streaming/Kafka Streams | 实时告警/欺诈检测 |
特征工程 | 编码/缩放/降维 | Scikit-learn/Featuretools/TensorFlow | 构建机器学习输入 |
模型训练 | 算法选择/超参数调优 | XGBoost/TensorFlow/PyTorch | 分类/回归/聚类 |
可视化 | 图表生成/仪表盘制作 | Matplotlib/Tableau/Power BI | 管理驾驶舱/运营监控 |
四、演进路径与优化建议
- 自动化管道:使用Airflow实现端到端流水线调度
- 增量计算:结合Delta Lake实现精准更新
- MLOps实践:通过MLflow管理模型生命周期
- Serverless架构:采用AWS Lambda/Azure Functions降低运维成本
📌 最佳实践原则:
- 在数据采集阶段即定义Schema约束
- 对敏感数据实施GDPR合规脱敏
- 为不同延迟需求划分冷热数据通道
- 采用A/B测试验证模型效果
通过以上流程设计,可系统性地将原始数据转化为商业洞察,支撑智能决策与自动化应用。
相关文章:
是从原始数据到价值挖掘的完整流程解析,涵盖数据采集、清洗、存储、处理、建模、可视化等核心环节,并附上完整代码示例(含详细注释)及技术选型建议表
以下是从原始数据到价值挖掘的完整流程解析,涵盖数据采集、清洗、存储、处理、建模、可视化等核心环节,并附上完整代码示例(含详细注释)及技术选型建议表。 一、全流程技术栈概览 阶段核心任务关键技术/工具数据采集获取原始数据…...
【爬虫】案例-获取cbh电影
以cupfox.in为例子: 观察ts文件和m3u8文件,可以知道一个完整的视频是由多个ts文件组合,而m3u8则是记录所有ts文件信息的文本 思路 1.先爬一个ts,测试能否观看 2.爬m3u8文件,通过正则分析出变化的部分 3.完整的把每个…...
分治而不割裂—分治协同式敏捷工作模式
分治而不割裂:解密敏捷协同工作模式如何驱动大企业持续领跑 在数字化浪潮中,亚马逊仅用11天完成Prime Day全球技术架构升级,华为5G基站项目组创造过单周迭代47个功能模块的纪录,这些商业奇迹的背后,都隐藏着一个共性秘…...
【MySQL】聚合查询 和 分组查询
个人主页:♡喜欢做梦 欢迎 👍点赞 ➕关注 ❤️收藏 💬评论 目录 🌴 一、聚合查询 🌲1.概念 🌲2.聚合查询函数 COUNT() SUM() AVG(&…...
Weka通过10天的内存指标数据计算内存指标动态阈值
在数据处理和监控系统中,动态阈值的计算是一种常见的方法,用以根据数据的实际分布和变化来调整阈值,从而更有效地监控和预警。在Weka中,虽然它主要是用于机器学习和数据挖掘的工具,但你可以通过一些间接的方法来实现…...
iOS签名的包支持推送功能吗?
推送失败的可能原因: 1. 生产包没有上报token ,所以无法推送成功,需要检查是否在企业包签名后导致无法完成apns的注册,无法从Apple取到token 2. 问题可能出在证书上,因为iOS推送有一个开发证书和一个生产证书ÿ…...
JavaWeb:后端web基础(TomcatServletHTTP)
一、今日内容 二、Tomcat 介绍与使用 介绍 基本使用 小结 配置 配置 查找进程 三、Servlet 什么是Servlet 快速入门 需求 步骤 1.新建工程-模块(Maven) 2.修改打包方式-war 3.编写代码 /*** 可以选择继承HttpServlet*/ WebServlet("/hello&q…...
关于浏览器对于HTML实体编码,urlencode,Unicode解析
目录 HTML实体编码 URL编码 Unicode编码 解析层次逻辑 为什么<script></script>不可以编码符号 为什么不能编码JavaScript:协议 为什么RCDATA标签中的都会被解析成文本 为什么HTML编码了<>无法执行 HTML实体编码 通过特殊语法(<、>…...
C++智能指针滥用带来的性能与内存问题有哪些
在现代C编程中,智能指针(Smart Pointers)已经成为开发者工具箱中不可或缺的一部分。它们作为一种对传统裸指针(Raw Pointers)的替代方案,旨在解决长期困扰C开发者的内存管理难题。C作为一门高性能的系统编程…...
C++算法(17):reverse函数用法详解,头文件<algorithm>与实战示例
在C中,std::reverse 函数用于反转容器或数组中元素的顺序,需包含头文件 <algorithm>。以下是其用法详解: 基本用法 函数原型: template <class BidirIt> void reverse(BidirIt first, BidirIt last); 参数…...
【滑动窗口】最大连续1的个数|将x减到0的最小操作数
文章目录 1.最大连续1的个数2.将x减到0的最小操作数 1.最大连续1的个数 解法: 1.暴力解法给定一个left指针固定左端点元素,再给定一个right指针从左端点元素开始遍历。 当遇到1时,让一个计数器cnt1,当遇到0时,让统计0…...
MySQL 在 CentOS 7 环境下的安装教程
🌟 各位看官好,我是maomi_9526! 🌍 种一棵树最好是十年前,其次是现在! 🚀 今天来学习C语言的相关知识。 👍 如果觉得这篇文章有帮助,欢迎您一键三连,分享给更…...
嵌入式复习第一章
1. 嵌入式系统概念、应用与特点 2. 嵌入式系统的硬件( CPU 、外设) 3. 主要嵌入式软件系统(应用及 OS ) 4. 嵌入式系统的发展趋势 嵌入式系统定义 “以 应用为中心 ,以计算机技术为基础,并且软硬件…...
【C#】.net core6.0无法访问到控制器方法,直接404。由于自己的不仔细,出现个低级错误,这让DeepSeek看出来了,是什么错误呢,来瞧瞧
🌹欢迎来到《小5讲堂》🌹 🌹这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解。🌹 🌹温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!&#…...
Tailwind CSS 实战:基于 Kooboo 构建企业官网页面(三)
基于前两篇内容,继续完善企业官网页面: Tailwind CSS 实战:基于 Kooboo 构建企业官网页面(一)-CSDN博客 Tailwind CSS 实战:基于 Kooboo 构建企业官网页面(二)-CSDN博客 3.5 联系方…...
Opencv中图像深度(Depth)和通道数(Channels)区别
在OpenCV中,图像深度(Depth)和通道数(Channels)是两个完全不同的概念,需严格区分。以下是详细解析: 图像深度(Depth) 定义:指图像中每个像素通道的位数&#…...
【网络原理】从零开始深入理解HTTP的报文格式(一)
本篇博客给大家带来的是网络HTTP协议的知识点, 重点介绍HTTP的报文格式. 🐎文章专栏: JavaEE初阶 🚀若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅Ὠ…...
Go语言之路————接口、泛型
Go语言之路————接口 前言接口定义实操,接口的定义和实现接口的继承空接口和Any 泛型类型集 结语 前言 我是一名多年Java开发人员,因为工作需要现在要学习go语言,Go语言之路是一个系列,记录着我从0开始接触Go,到后…...
Go语言中的 `time.Tick` 函数详解
time.Tick 是 Go 标准库中用于创建周期性定时器的简便函数。 函数签名 func Tick(d Duration) <-chan Time核心功能 创建一个周期性的定时器通道当 d < 0 时返回 nil返回一个只读的时间通道,定期发送当前时间 与 NewTicker 的关系 time.Tick 是 time.New…...
打印及判断回文数组、打印N阶数组、蛇形矩阵
打印回文数组 1 1 1 1 1 1 2 2 2 1 1 2 3 2 1 1 2 2 2 1 1 1 1 1 1方法1: 对角线对称 左上和右下是对称的。 所以先考虑左上打印, m i n ( i 1 , j 1 ) \text min(i1,j1) min(i1,j1),打印出来: 1 1 1 1 1 2 2 2 1 2 3 3 1 2 …...
【图像融合】基于非负矩阵分解分解 CNMF的高光谱和多光谱数据融合附MATLAB代码
基于CNMF的高光谱与多光谱数据融合技术详解 一、非负矩阵分解(NMF)与约束非负矩阵分解(CNMF)的核心原理 NMF的基本概念 非负矩阵分解(NMF)是一种通过将非负矩阵分解为两个非负矩阵乘积的降维方法。给定非负…...
HarmonyOS NEXT 诗词元服务项目开发上架全流程实战(一、项目介绍及实现效果)
在当今数字化时代,如何让传统文化与现代科技相结合,成为了一个值得思考的问题。诗词作为中国传统文化的重要组成部分,承载着丰富的历史信息和文化内涵。为了让更多人了解和欣赏诗词的魅力,我们决定开发一款基于HarmonyOS NEXT的诗…...
线性代数与数据学习
The Functions of Deep Learning (essay from SIAM News, December 2018) Deep Learning and Neural Nets...
Linux中的计划任务
一次性任务 功能介绍: 如果我们希望在将来的某个时间点去执行某件事件,这个事件执行完后任务就结束,那么我们 就可以使用一性计划任务。而要实现这种功能,我们需要任务 atd 服务。我们先查询一下系 统是否存在这个服务。 查看是…...
【C++】线程池
C 线程池介绍 什么是线程池? 线程池(Thread Pool) 是一种并发编程模型,用于管理和复用多个线程,避免频繁创建/销毁线程的开销。它通过预创建一组线程,并将任务提交到队列中,由空闲线程自动执行…...
美团社招一面
美团社招一面 做题 1、面试题 <style> .outer{width: 100px;background: red;height: 100px; }.inner {width: 50px;height: 50px;background: green; }</style> <div class"outer"><div class"inner"></div> </div>…...
C++:BST、AVL、红黑树
C:BST、AVL、红黑树 二叉搜索树(BST)二叉平衡搜索树(AVL)红黑树(RBT)三者对比什么情况下使用?C 标准库中的使用总结 二叉搜索树(BST) 二叉搜索树(Binary Sea…...
算法笔记.染色法判断二分图
题目:(来自AcWing) 给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环。 请你判断这个图是否是二分图。 输入格式 第一行包含两个整数 n 和 m。 接下来 m 行,每行包含两个整数 u 和 v,表示点 u …...
在 IDEA 中写 Spark 程序:从入门到实践
在大数据处理领域,Apache Spark 凭借其出色的性能和丰富的功能受到广泛欢迎。而 IntelliJ IDEA 作为一款功能强大的 Java 集成开发环境,为编写 Spark 程序提供了极大的便利。本文将详细介绍如何在 IDEA 中搭建 Spark 开发环境并编写运行 Spark 程序&…...
[Spring] Sentinel详解
🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…...
让数据优雅落地:用 serde::Deserialize 玩转结构体实体
前言 想象一下,服务器突然飞来一堆 JSON 数据,就像一群无头苍蝇冲进办公室,嗡嗡作响,横冲直撞。此刻,你的任务,就是把这群“迷路数据”安置进正确的格子里,分门别类,秩序井然,不混不乱,不漏一只。 好在 Rust 早就为我们备好瑞士军刀:serde::Deserialize。它不仅刀…...
【wpf】 WPF中实现动态加载图片浏览器(边滚动边加载)
WPF中实现动态加载图片浏览器(边滚动边加载) 在做图片浏览器程序时,遇到图片数量巨大的情况(如几百张、上千张),一次性加载所有图片会导致界面卡顿甚至程序崩溃。 本文介绍一种 WPF Prism 实现动态分页加…...
Flow原理
fun main() {runBlocking {launch {flow4.collect{println("---collect-4")}println("---flow4")}}val flow4 flow<Boolean>{delay(5000)emit(false) } 我们分析下整个流程 1.flow为什么之后在collect之后才会发送数据 2.collect的调用流程 我…...
业绩回暖、股价承压,三只松鼠赴港上市能否重构价值锚点?
在营收重返百亿俱乐部后,三只松鼠再度向资本市场发起冲击。 4月25日,这家坚果零食巨头正式向港交所递交上市申请书,若成功登陆港股,将成为国内首个实现“AH”双上市的零食品牌。 其赴港背后的支撑力,显然来自近期披露…...
基于大模型的胆总管结石全流程预测与临床应用研究报告
目录 一、引言 1.1 研究背景 1.2 研究目的与意义 1.3 研究方法和创新点 二、大模型在胆总管结石预测中的应用原理 2.1 大模型概述 2.2 模型构建的数据来源与处理 2.3 模型训练与优化 三、术前预测与准备 3.1 术前胆总管结石存在的预测 3.2 基于预测结果的术前检查方…...
QT—布局管理器之BoxLayout篇
1.布局管理器的概述 在Qt中,使用布局管理器的主要原因是它能够自动管理组件的大小和位置,从而实现灵活且动态的界面布局。布局管理器可以自动调整组件以适应窗口大小的变化,确保界面在不同分辨率和设备上都能保持良好的显示效果。这不仅减少了…...
如何在 IntelliJ IDEA 中编写 Speak 程序
在当今数字化时代,语音交互技术越来越受到开发者的关注。如果你想在 IntelliJ IDEA(一个强大的集成开发环境)中编写一个语音交互(Speak)程序,那么本文将为你提供详细的步骤和指南。 一、环境准备 在开始编…...
湖北理元理律师事务所:债务优化的法律机制与民生实践
在债务纠纷日益增多的社会背景下,合法、规范的债务管理服务成为民生需求的重要环节。湖北理元理律师事务所作为经国家司法局注册登记的债事服务机构,以法律为工具,探索出一套覆盖债务咨询、规划与风险防控的服务体系。 1.法律服务的专业化框…...
练习普通话,说话更有节奏
玲珑塔,塔玲珑,玲珑宝塔第一层,一张高桌四条腿, 一个和尚一本经。一个铙钹一口磬,一个木鱼一盏灯。 一个金玲,整四两,风儿一刮响哗愣。 玲珑塔,隔过两层数三层,三张高桌十…...
链表相关——Python实现
一、链表的创建及数据插入 示例代码: #1.定义一个结点类 class ListNode():def __init__(self,x,nextNone):self.valxself.nextnext #2.定义单链表 class LinkList():#2.1 创建一个头指针为空的链表def __init__(self,headNone):self.headNone#2.2 将数据插入链表…...
[OS_9] C 标准库和实现 | musl libc | offset
在你感觉有困难的时候,计算机 一定有解决办法 操作系统为我们提供了对象和操作它们的 API:我们学习了进程管理的 fork, execve, exit, waitpid;内存管理的 mmap;文件 (对象) 管理的 open, read, write, dup, close, pipe, …… 大…...
【氮化镓】质子辐照对 GaN-on-GaN PiN 二极管电导调制的影响
2025 年,中国科学技术大学的 Xuan Xie 等人采用实验研究的方法,深入探究了 10-MeV 和 50-MeV 质子辐照( fluence 最高达 11014 cm−2)对 kV 级垂直 GaN-on-GaN PiN 二极管的导电调制影响。研究背景在于空间应用中的功率电子电路易受质子、α 粒子和重离子等影响而降级甚至失…...
深入浅出限流算法(一):简单但有“坑”的固定窗口计数器
在现代分布式系统和 API 设计中,限流 (Rate Limiting) 是一个不可或缺的环节。它像一个尽职的门卫,保护着我们的服务资源,防止因突发流量或恶意攻击导致系统过载,同时也能确保资源的公平分配。 实现限流的算法多种多样࿰…...
项目上线流程梳理(Linux宝塔面板)
项目部署(Linux宝塔面板) 一、准备工作 1、 后端项目 梳理配置添加application-prod.yml使用maven进行打包生成jar包 2、前端项目 修改request.ts请求的后端端口(服务器地址)打包 二、服务器 1、服务器环境安装 2、初始化数…...
MCP Servers玩玩WebUI自动化
MCP Servers快速了解 一文搞懂 MCP Servers mcp server网站 https://mcpservers.orghttps://mcp.sohttps://glama.ai/mcp/servershttps://www.pulsemcp.com 一、安装&配置mcp clients mcp clients可以使用客户端(常见claude desktop,但claude需…...
永磁同步电机控制算法-转速环电流环SMC控制器
一、原理介绍 为改进传统PI转速环电流环控制器易超调、抗干扰性能差的问题,转速环采用一阶滑模控制器,电流环采用二阶滑模控制器。 二、仿真验证 在MATLAB/simulink里面验证所提算法,采用和实验中一致的控制周期1e-4,电机部分计…...
Nginx支持HTTP2/HTTP3的并用CURL测试
对比HTTP2和HTTP3 HTTP/3 相比 HTTP/2 的主要优势: 项目HTTP/2HTTP/3传输层基于 TCP( TLS)基于 QUIC(内置 TLS)建立连接速度慢,至少 2~3 次握手(TCP TLS)快,只需 1 次握…...
阅读MySQL实战45讲第11天
目录 引言: 基本原理 排序方式 索引排序 文件排序(File Sort) 优化建议 一、全字段排序 二、rowid 排序 如果 MySQL 认为排序的单行长度太大会怎么做呢? 1. 使用磁盘临时表 2. 分阶段排序 3. 产生警告或错误 三、全字段排序 VS ro…...
linux 使用nginx部署vue、react项目
前言 本文基于:操作系统 CentOS Stream 8 使用工具:Xshell8、Xftp8 1.安装依赖 安装gcc、gcc-c yum install gcc gcc-c -y安装pcre、pcre-devel yum install pcre pcre-devel -y安装zlib、zlib-devel yum install zlib zlib-devel -y安装openssl、…...
逆向设计——CWDM_splitter
一、创建结构 switchtolayout; selectall; delete;## SIM PARAMS num_wg = 4; wg_width = 0.5e-6; out_wg_dist = 1e-6; mode_width = 3*wg_width; total_wg_h = num_wg*wg_width + (num_wg-1)*out_wg_dist;opt_size_x=6e-6; opt_size_y=6e-6;size_x=opt_size_x+1e-6; size_y=o…...