2025数据科学家核心能力:从建模到端到端数据系统交付

SpringBoot+Vue+Mysql社区医院信息平台(源码+文档) SpringBoot+Vue+Mysql学生宿舍信息管理系统 WEB端软件项目(源码+文档) 项目包含:①完整源码(后端+管理后台+用户前台);②数据库脚本文件;③万字论文文档;④开题报告;⑤答辩PPT;⑥项目运行视频教程。 项目架构: B/S 架构、MVC 分层设计 技术栈: Java、MySQL、SpringBoot、MyBatis-Plus、Token 权限校验、管理后台 Vue+ElementUI+ECharts、用户前台 Layui+jQuery、Maven 构建。 一、角色设计 学生用户: 注册登录、浏览宿舍信息、查询宿舍安排、在线报修、缴费查询、失物招领、桶装水预订、评论交流、收藏等。 商家用户: 注册登录、桶装水品牌与商品信息维护、预订订单查看与处理。 维修人员: 注册登录、查看待处理报修、接单维修、填写报修处理结果与进度反馈。 管理员: 学生管理、班级管理、宿舍信息管理、宿舍安排管理、报修处理管理、缴费信息管理、卫生检查与文明宿舍管理、失物招领管理、桶装水与商家管理、维修人员管理、公告资讯与轮播图管理等。 二、前台功能模块(学生端) 1. 首页展示:轮播图、宿舍公告、最新动态推荐、常用服务快速入口 2. 宿舍信息模块:宿舍列表、楼栋与房间条件筛选、宿舍详情查看、我的宿舍安排查询 3. 在线报修模块:在线提交宿舍设施报修申请、上传故障描述、查看报修进度与维修处理结果 4. 缴费模块:水电等缴费记录查询、缴费状态查看 5. 卫生检查与文明宿舍:宿舍卫生检查结果公示、文明宿舍展示 6. 失物招领模块:失物信息发布、招领信息发布、详情查看、评论互动 7. 桶装水预订:桶装水品牌与商品浏览、在线预订、我的预订记录查询 8. 假期留宿:假期留校申请提交、申请记录查询 9. 评论与收藏:信息评论、查看他人评论、评论回复互动、收藏感兴趣的内容 10. 个人中心... 立即下载

1. 项目概述:当数据科学家不再只是“调参侠”

我带过三届校招新人,也给五家不同行业的企业做过数据团队能力诊断。去年帮一家做智能风控的公司重构数据岗位JD时,HR总监把初稿发给我,里面还写着“熟练使用Scikit-learn构建XGBoost模型”——我直接划掉,加了一行:“能独立设计并交付一个从原始日志接入、特征实时计算、模型AB测试到业务指标归因的端到端链路”。对方愣了三秒,说:“这不应该是MLOps工程师干的吗?”我回了一句:“现在没人给你划这条线了,你得自己踩出一条路来。”

这就是2025年数据科学岗位的真实切口。关键词里那个“Towards AI - Medium”不是随便贴的标签,它代表一种正在快速沉淀的行业共识: 数据科学家的核心价值,正从“能不能跑通模型”,转向“能不能让模型在真实业务中持续产生可衡量的收益” 。这不是概念炒作,而是技术演进倒逼角色重构的必然结果。LLM让SQL生成、报告撰写、甚至基础代码补全变成几秒钟的事;AutoML平台把超参搜索、特征工程自动化封装成点选操作;开源模型库中,90%以上常见任务(用户流失预测、商品推荐、异常检测)都有成熟预训练方案可直接微调。你还在花三天写个PySpark清洗脚本?隔壁实习生用低代码平台拖拽完流程,顺手把监控告警也配好了。

但别误会——这不意味着数据科学家要失业。恰恰相反,门槛在物理性抬高:过去靠“Python+SQL+一个模型”就能拿下offer,现在招聘方看的是你能否在24小时内,把销售部门临时提出的“下周大促前预测各区域库存缺口”需求,拆解成数据源评估→实时特征管道搭建→轻量模型选型→灰度发布策略→业务指标埋点→效果归因分析这一整套动作。我见过太多候选人卡在“模型部署”环节:简历写“精通TensorFlow”,一问“怎么把训练好的模型变成API供APP调用”,立刻开始背诵Flask文档;或者聊到“如何监控线上模型性能”,只答得出“看准确率”,却说不清AUC衰减多少算触发重训、数据漂移检测该用KS检验还是PSI、线上延迟突增是模型本身问题还是特征服务超时。这些细节,才是区分“会用工具的人”和“能扛住业务压力的人”的分水岭。

所以这篇文章不谈“AI会不会取代数据科学家”,而聚焦一个更务实的问题: 如果你今天刚拿到Offer,或正准备跳槽,接下来6个月该把时间砸在哪几个具体动作上,才能确保自己不被新入行者或AI工具快速替代? 我不会列一堆“需要学习Kubernetes”“掌握云原生架构”这种空泛建议,而是告诉你:为什么必须学Dockerfile而不是只用现成镜像?为什么Cloud Run比EC2更适合你的第一个MVP?为什么在BigQuery里写UDF比在本地Python处理更值得投入时间?这些选择背后,是成本、迭代速度、协作效率的真实权衡。下面我们就从最底层的思维切换开始,一层层拆解这个新角色的实操骨架。

2. 核心能力重构:从“建模工程师”到“数据系统架构师”

2.1 为什么“端到端”不再是口号,而是生存刚需

很多人把“端到端数据科学家”理解为“啥都得会一点”的杂家,这是致命误区。真正的端到端,核心是 建立对数据价值流的完整掌控力 ——从原始数据产生那一刻起,到最终驱动业务决策的闭环,你能清晰定义每个环节的输入输出、质量标准、失败兜底方案,并在其中关键节点拥有不可替代的判断力。这和“会所有技术栈”有本质区别:就像一个顶级外科医生不需要亲手锻造手术刀,但他必须清楚每把刀的材质特性、适用场景、消毒标准,以及当器械故障时如何用替代方案完成关键步骤。

我拿一个真实案例说明这种思维差异。去年某电商客户提出需求:“想预测未来7天各SKU的退货率,用于优化仓配调度”。传统做法可能是:

  • 数据工程师拉取订单表、售后表、物流表 →
  • 数据科学家写SQL做关联、构造特征(如“近30天同品类退货率”“发货地到收货地距离分段”)→
  • 训练LightGBM模型 →
  • 输出特征重要性报告

但实际落地时崩在第三步:模型上线后发现,特征“发货地到收货地距离分段”在生产环境根本无法实时计算——因为物流轨迹数据延迟高达4小时,而仓配调度要求分钟级响应。这时候,如果数据科学家只会调参,结局就是项目搁置;而具备端到端思维的人会立刻切换路径:

  1. 溯源数据瓶颈 :确认物流轨迹延迟是ETL链路固有缺陷,还是API限流导致;
  2. 设计降级方案 :用发货城市GPS坐标预计算全国城市对距离矩阵,存入Redis缓存,查询耗时从秒级降至毫秒级;
  3. 验证业务影响 :对比“实时距离”与“预计算距离”对模型AUC的影响(实测仅下降0.3%,但满足时效要求);
  4. 推动基建升级 :同步向数据平台团队提交需求,将物流轨迹数据接入Flink实时计算引擎。

这个过程里,他没写一行Flink代码,但精准定义了实时计算的需求规格;没碰Redis配置,但明确了缓存更新频率和失效策略;甚至没参与模型重训,却主导了特征工程的可行性重构。这才是端到端能力的本质: 在技术约束与业务目标间找到最优解,并驱动跨职能协作落地 。而AutoML或LLM能帮你生成特征代码,却无法替代这种基于业务上下文的技术判断力。

提示:检验自己是否具备端到端思维,有个极简测试:当业务方说“我们需要一个能预测XX的模型”,你脱口而出的第一句话是“数据源在哪里?更新频率?质量基线?下游怎么用?”,而不是“用什么算法?”。前者是架构师视角,后者仍是工程师视角。

2.2 理论根基的“升维”:从模型原理到系统级失效模式

很多数据科学家对“模型原理”钻研很深,却对“模型在系统中如何失效”知之甚少。这导致一个尴尬现实:实验室AUC 0.92的模型,上线后两周内性能断崖式下跌,而排查方向全是错的。比如曾有个金融客户,信用评分模型上线后坏账率预测偏差突然扩大,团队花了三天查特征分布、重跑训练,最后发现是上游数据平台升级了Hive版本,导致某个日期字段解析逻辑变更——原本“2025-01-01”被解析为当天零点,升级后变成前一天23:59:59,造成所有“当日申请”样本的时间戳偏移24小时,特征“距上次申请天数”集体失真。

因此,2025年必备的理论根基,必须包含三个新维度:

第一,数据血缘与依赖图谱认知 。你得清楚自己用的每张表,它的上游是谁(是业务数据库直连?还是经过ODS层清洗?)、更新机制(T+1离线?还是Flink实时?)、质量保障(是否有空值率监控?主键重复率告警?)。这不是数据工程师的活,而是你设计特征时的前置条件。例如,若要用“用户最近一次登录时间”作为活跃度特征,必须确认该字段在实时数仓中的延迟上限——如果延迟常达2小时,那它就不适合用于分钟级风控决策。

第二,模型服务化协议的理解 。别再只关注模型输出概率,要深挖服务接口的SLA:

  • 请求超时阈值是多少?(影响前端用户体验)
  • 是否支持批量推理?(决定能否用于离线报表)
  • 错误码体系如何设计?(关系到监控告警有效性)
  • 特征缺失时的默认值策略?(避免因单个字段异常导致整批请求失败)

我见过最典型的坑:某推荐系统API返回JSON格式,但未约定 null 字段的处理方式。当用户画像缺失时,部分客户端解析失败直接崩溃,而服务端日志只显示“HTTP 200”,排查耗时两天。

第三,分布式系统基础概念 。不必成为K8s专家,但必须懂:

  • 为什么容器化部署能解决“在我机器上能跑”的问题?(核心是环境隔离:OS内核、依赖库、配置文件全部打包)
  • 为什么Airflow的DAG执行失败后,重试可能引发数据重复?(需理解幂等性设计,如用 INSERT ... ON CONFLICT DO NOTHING 替代 INSERT INTO )
  • 为什么Kubernetes的HPA(水平扩缩容)不能无脑开启?(模型加载内存占用大,频繁启停容器反而增加延迟)

这些知识不来自教科书,而来自你亲手部署第一个Flask API时遇到的502错误,来自调试Airflow任务时看到的 TaskInstance 状态流转,来自Cloud Run实例冷启动耗时超过3秒的告警。它们共同构成你判断“这个需求技术上是否可行”的底层标尺。

2.3 编程能力的重新定位:从“写代码”到“读透代码并改造”

现在招聘JD里还写“精通Python”,已经像十年前写“精通Windows XP”一样荒诞。真正值钱的,是你面对一段陌生代码时的 逆向工程能力 ——30分钟内搞清它在做什么、依赖什么、哪里可能出错、如何安全修改。因为现实中,90%的数据项目不是从零造轮子,而是改造现有资产:可能是维护前任留下的Airflow DAG,可能是给遗留的TensorFlow 1.x模型添加ONNX导出功能,也可能是把Jupyter Notebook里的探索代码重构为可测试的Python模块。

我总结出高效改造代码的四步法:

  1. 定位入口与出口 :先找 main() 函数或DAG定义处,明确数据从哪来( read_parquet("gs://bucket/feature/") )、到哪去( to_gbq("project.dataset.table") );
  2. 绘制数据流图 :用纸笔画出关键变量传递路径,标注类型(DataFrame?Dict?Bytes?)和大小(10MB还是10GB?);
  3. 识别脆弱点 :检查硬编码路径( "/tmp/data.csv" )、魔法数字( if score > 0.7: )、未捕获异常( except: 裸抓)、全局变量( CONFIG = {...} );
  4. 设计最小改动 :优先用装饰器注入新逻辑(如 @log_execution_time ),而非修改核心函数;用配置文件替代硬编码;为关键步骤添加断言( assert len(df) > 0, "Empty input!" )。

举个实例:某客户需要给现有用户分群模型增加“高潜力新客”标签。原代码是单体脚本,直接改风险大。我的做法是:

  • 新建 potential_customer.py 模块,封装新逻辑;
  • 在主脚本中用 import potential_customer 引入,通过配置开关控制是否启用;
  • 新增单元测试,用 pytest 验证新标签在模拟数据上的准确性;
  • 最后提交PR时,附上AB测试方案:新旧标签并行计算,对比3天内转化率差异。

这种工作方式,让业务方看到的是“新增能力”,技术团队看到的是“可追溯、可测试、可回滚”,而你自己则积累了可复用的模块资产。编程能力的价值,从来不在敲键盘的速度,而在你重构混乱代码时,能让整个系统变得更健壮、更易协作。

3. 实操能力图谱:从开发到运维的七层穿透

3.1 模型部署:从Notebook到生产API的生死线

很多数据科学家卡在“模型部署”这关,不是技术不会,而是没想清楚 部署的本质是建立可信的服务契约 。你在Jupyter里 model.predict(X) 得到一个数组,这只是内部调用;而部署成API后,你承诺的是:任何符合规范的HTTP请求,在99.9%时间内,返回符合Schema的JSON响应,且延迟低于200ms。这个承诺背后,是整整一套工程实践。

我们以Flask部署为例,拆解一个常被忽略的关键动作: 模型加载时机 。新手常把 model = joblib.load("model.pkl") 写在路由函数里,结果每次请求都反序列化模型,100MB模型加载耗时2秒,QPS直接归零。正确做法是:

# app.py
import joblib
from flask import Flask, request, jsonify

# ✅ 在应用启动时加载一次(全局变量)
model = joblib.load("/app/models/production_v2.pkl")

app = Flask(__name__)

@app.route('/predict', methods=['POST'])
def predict():
    # ✅ 直接使用已加载模型,毫秒级响应
    data = request.get_json()
    prediction = model.predict([data['features']])
    return jsonify({'score': float(prediction[0])})

但这只是第一步。真正的生产级部署,必须解决四个核心问题:

问题一:模型热更新 。业务不可能接受“停服半小时更新模型”。解决方案是双模型加载+配置中心:

  • 启动时加载 model_v1.pkl 和 model_v2.pkl 两个版本;
  • 用Redis存储当前生效版本号(如 "active_model": "v2" );
  • 路由函数中动态读取版本号,从内存中选择对应模型实例;
  • 运维只需 SET active_model v3 ,流量瞬间切换,零停机。

问题二:特征服务化 。别再让每个模型自己拼SQL!统一特征服务(Feature Store)是2025年标配。以Feast为例,你定义特征时:

# feature_repo/feature_views/user_features.py
user_fv = FeatureView(
    name="user_features",
    entities=["user_id"],
    ttl=timedelta(hours=24),
    schema=[
        Field(name="age", dtype=Int32),
        Field(name="last_7d_order_count", dtype=Int64),
    ],
    source=user_batch_source,  # 指向离线数仓表
)

模型API只需调用 feast_client.get_online_features(...) ,自动获取最新特征,无需关心数据源位置或更新逻辑。

问题三:请求熔断 。当模型计算超时,不能让前端无限等待。用 tenacity 库实现优雅降级:

from tenacity import retry, stop_after_attempt, wait_exponential

@retry(stop=stop_after_attempt(3), 
       wait=wait_exponential(multiplier=1, min=1, max=10))
def safe_predict(features):
    try:
        return model.predict(features)
    except TimeoutError:
        # ✅ 降级返回历史均值
        return np.array([0.42])  # 业务可接受的兜底值

问题四:可观测性埋点 。每个请求必须记录:

  • 输入特征(采样1%哈希后存ES,防敏感信息泄露);
  • 模型版本号;
  • 推理耗时;
  • 输出置信度;
  • 异常堆栈(仅开发环境全量,生产环境只记错误码)。

这些日志不是为了“看”,而是为后续AB测试、归因分析、故障定位提供原子数据。我见过最惨的案例:某推荐API线上抖动,因未记录请求ID,无法关联前端报错与后端日志,排查耗时48小时。而加一行 request_id = str(uuid.uuid4()) ,再把ID注入所有日志,问题当场解决。

注意:别迷信“一键部署”。Cloud Run虽简单,但冷启动延迟对实时场景不友好;K8s灵活但运维成本高。我的经验是:MVP阶段用Cloud Run(省心),稳定后迁移到K8s集群(可控),中间过渡期用Cloud Functions(平衡点)。选择依据永远是:你的业务对延迟、并发、成本的敏感度排序。

3.2 容器化与编排:让代码在任何环境“即插即用”

Docker不是炫技工具,而是解决“环境一致性”的终极方案。我带过的团队里,80%的线上Bug源于“开发环境能跑,测试环境报错,生产环境崩溃”。根源往往是:

  • 开发用Python 3.9,测试用3.8,生产用3.7;
  • 本地装了 xgboost==1.7.0 ,服务器只有 1.6.2 ;
  • 依赖的C++库版本不匹配(如 libgomp.so.1 找不到)。

Docker通过 镜像分层 彻底终结这类问题:

  • FROM python:3.9-slim :基础OS层;
  • COPY requirements.txt . + RUN pip install -r requirements.txt :依赖层(一旦安装成功,该层永久缓存);
  • COPY . /app :代码层(每次修改只重建此层);
  • CMD ["gunicorn", "app:app"] :启动层。

构建时,Docker daemon会复用已缓存的依赖层,极大加速CI流程。更重要的是, 镜像ID就是环境指纹 ——当你发现线上故障,只需 docker inspect <image_id> ,就能100%还原当时运行环境,无需猜测“是不是某个库版本变了”。

但光有Docker不够,还得解决“多个容器如何协同”。Airflow是数据领域最实用的编排工具,但新手常陷入两个误区:
误区一:把所有逻辑塞进PythonOperator 。比如用 PythonOperator 执行 pd.read_csv() 读取10GB文件——这会让Worker内存爆满。正确姿势是:

  • 用 BashOperator 调用 gsutil cp 下载文件到本地;
  • 用 PythonOperator 只处理内存友好的计算(如聚合统计);
  • 大数据量走 SparkSubmitOperator 或 BigQueryOperator 。

误区二:忽略DAG的幂等性 。Airflow默认重试会重复执行任务,若任务是 INSERT INTO table SELECT ... ,重试三次就插入三份重复数据。必须改为:

# ✅ 幂等写法:先删后插
delete_sql = "DELETE FROM {{ params.table }} WHERE dt = '{{ ds }}'"
insert_sql = "INSERT INTO {{ params.table }} SELECT ... WHERE dt = '{{ ds }}'"

# Airflow中组合为两个任务
delete_task = BigQueryOperator(
    task_id='delete_today',
    sql=delete_sql,
    params={'table': 'dwh.fact_orders'}
)

insert_task = BigQueryOperator(
    task_id='insert_today',
    sql=insert_sql,
    params={'table': 'dwh.fact_orders'}
)
delete_task >> insert_task

Kubernetes则是更高阶的战场。不必掌握所有命令,但必须懂三个核心对象:

  • Pod :最小部署单元,一个Pod可含多个容器(如模型服务+Prometheus exporter);
  • Service :为Pod提供稳定访问入口(ClusterIP供内部调用,NodePort供外部访问);
  • Ingress :七层路由,把 api.example.com/predict 转发到对应Service。

我建议新手从 kubectl apply -f deployment.yaml 开始,而非 kubectl run 命令行。YAML文件强制你思考:资源限制(CPU/Memory)、健康检查(livenessProbe)、滚动更新策略(maxSurge/maxUnavailable)。这些不是可选项,而是生产环境的准入门槛。

3.3 云平台实战:在AWS/GCP/Azure中找准发力点

三大云厂商的差异,本质是 生态位竞争策略不同 ,而非技术优劣。选哪个不重要,重要的是理解其核心优势场景:

Google Cloud(GCP) 的杀手锏是 无缝集成的数据AI栈 。BigQuery不是普通数仓,而是“查询即服务”:

  • 无需预建集群, SELECT COUNT(*) FROM bigquery-public-data.usa_names.usa_1910_2013``秒级返回;
  • 内置ML函数: CREATE MODEL mydataset.mymodel OPTIONS(model_type='logistic_reg') AS SELECT label, feature1, feature2 FROM mydataset.train ,训练完直接 SELECT * FROM ML.PREDICT(MODEL mydataset.mymodel , (SELECT ...)) ;
  • Vertex AI是真正的MLOps平台:从数据标注、超参搜索、模型注册、到在线/批量预测、监控告警,全在同一个UI完成。

AWS 的优势在于 企业级稳定性与合规性 。金融、医疗客户首选,因其:

  • GovCloud专区满足严格监管要求;
  • SageMaker Studio Lab提供免费GPU算力,适合个人开发者起步;
  • Step Functions实现复杂工作流编排(如“数据清洗→特征工程→模型训练→AB测试→自动发布”)。

Azure 则胜在 与微软生态的深度绑定 。如果你的公司已用Office 365、Dynamics 365、Power BI,那么:

  • Azure Machine Learning可直接连接Power BI数据集;
  • Synapse Analytics与Power BI共享语义模型,报表开发零数据搬运;
  • Azure DevOps与GitHub Actions无缝互通,CI/CD流程平滑。

我的实操建议是: 用GCP练手,用AWS落地,用Azure整合 。

  • 入门阶段:在GCP免费额度内,用BigQuery + Vertex AI跑通一个端到端案例(如用公开航班数据预测延误),重点体会“免运维”的便利;
  • 项目落地:选AWS,因其文档最详尽、社区最庞大,遇到问题总能找到答案;
  • 企业级项目:若客户已有Azure AD或Power BI,直接拥抱Azure,节省80%集成成本。

无论选谁,必须掌握的通用能力是 基础设施即代码(IaC) 。别再手动点控台创建资源!用Terraform管理云资源:

# main.tf
provider "google" {
  project = var.project_id
  region  = "us-central1"
}

resource "google_storage_bucket" "data_lake" {
  name     = "${var.project_id}-data-lake"
  location = "US"
}

resource "google_cloud_run_service" "model_api" {
  name     = "fraud-detection-api"
  location = "us-central1"
  template {
    spec {
      containers {
        image = "gcr.io/${var.project_id}/fraud-model:v1.2"
      }
    }
  }
}

执行 terraform apply ,所有资源自动创建;修改配置后再次执行,自动计算差异并增量更新。这不仅是效率提升,更是 将环境配置变为可审查、可版本化、可审计的代码资产 。

3.4 CI/CD与监控:让模型持续“健康运转”

数据科学家常误以为“模型上线=项目结束”,实则真正的挑战才刚开始。CI/CD不是DevOps团队的专利,而是你保障模型长期有效的生命线。一个完整的MLOps CI/CD流水线应包含:

阶段一:代码与数据验证(CI)

  • 代码扫描: pylint 检查PEP8规范, bandit 检测安全漏洞(如硬编码密码);
  • 单元测试:覆盖核心函数(如特征计算、模型加载), pytest --cov=src 生成覆盖率报告;
  • 数据质量检查:用Great Expectations验证训练数据分布(如 expect_column_mean_to_be_between("age", min_value=18, max_value=80) );
  • 模型性能基线:对比新模型与基准模型在验证集上的AUC差异,若下降超0.01则阻断发布。

阶段二:模型训练与注册(CD-Train)

  • 触发条件:Git Push到 main 分支,或定时任务(每日凌晨);
  • 执行环境:专用GPU Runner(AWS EC2 p3.2xlarge或GCP A2 VM);
  • 输出物:模型文件( .pkl )、特征工程代码( transformer.py )、元数据( model_card.json 含训练数据描述、公平性评估);
  • 注册:自动上传至模型仓库(如MLflow Model Registry),标记为 Staging 版本。

阶段三:部署与AB测试(CD-Deploy)

  • 部署策略:蓝绿发布(Blue-Green)或金丝雀发布(Canary);
  • AB测试框架:用Statsig或自建Redis计数器,按用户ID哈希分流( hash(user_id) % 100 < 5 为实验组);
  • 关键指标监控:不仅看模型指标(AUC、F1),更要盯业务指标(实验组转化率 vs 对照组)。

阶段四:生产监控(Post-Deploy)
这才是区分专业与业余的分水岭。监控不是“看图表”,而是建立 多维度告警体系 :

监控层级 指标示例 告警阈值 应对动作
基础设施 CPU使用率 > 90% 持续5分钟 自动扩容Pod
服务健康 HTTP 5xx错误率 > 1% 持续2分钟 切换备用API实例
数据质量 特征 user_age 空值率 > 5% 单次检测 触发数据修复DAG
模型性能 AUC下降 > 0.03 持续1天 启动模型重训流程
业务影响 实验组GMV下降 > 2% 持续30分钟 立即终止AB测试

工具链推荐:

  • 日志 :ELK Stack(Elasticsearch+Logstash+Kibana)或GCP Cloud Logging;
  • 指标 :Prometheus + Grafana(自定义仪表盘,如“模型延迟P95”“特征新鲜度”);
  • 告警 :PagerDuty或Opsgenie(避免微信告警被淹没);
  • 数据漂移 :Evidently(可视化PSI/KL散度)或自研轻量检测( scipy.stats.ks_2samp )。

我坚持一个原则: 所有告警必须附带可执行的Runbook 。比如“特征空值率告警”不能只写“检查数据源”,而要明确:

  1. 登录Airflow,查看 data_quality_check DAG最近一次执行日志;
  2. 执行 bq query "SELECT COUNT(*) FROM project.dataset.raw_events WHERE user_age IS NULL" ;
  3. 若结果>0,运行 bq query "UPDATE project.dataset.raw_events SET user_age = 0 WHERE user_age IS NULL" ;
  4. 手动触发 feature_pipeline DAG重跑。

这样,夜班运维同学收到告警,3分钟内就能完成处置,无需等你第二天上班。

4. 不可替代的软实力:业务洞察、沟通与成本意识

4.1 业务理解:从“数据翻译官”到“价值策展人”

技术再强,如果不懂业务,产出的就是精致的废品。我见过最典型的失败案例:某零售客户要求“提升会员复购率”,数据团队交付了一个AUC 0.85的复购预测模型,准确识别出高流失风险用户。但业务部门反馈:“这模型没用,我们不知道怎么干预。”——因为模型只输出概率,没告诉运营:“对概率>0.9的用户,推送‘满199减50’券转化率最高;对概率0.7~0.9的用户,发送个性化商品推荐邮件效果更好。”

这就是 业务理解的断层 。真正的数据科学家,必须成为“价值策展人”:

  • 向上策展 :向CTO解释“为什么我们要投入资源建特征平台”,不能只说“提升模型效果”,而要算账:“当前人工构造特征耗时占项目70%,建平台后单项目节省20人日,年节约成本XXX万,且支持AB测试提速3倍”;
  • 向下策展 :向运营同事说明“模型建议的干预策略”,用他们熟悉的语言:“给这批用户发券,预计提升复购率2.3个百分点,相当于每月多赚120万GMV”;
  • 横向策展 :向产品团队同步“用户行为数据洞察”,不是罗列“点击率下降”,而是指出:“首页‘猜你喜欢’模块曝光量下降15%,但点击率上升8%,说明算法更准了,建议增加该模块曝光权重”。

达成这种策展能力,需要你主动做三件事:

  1. 定期参加业务会议 :不带电脑,只带笔记本,记录业务方提到的痛点词(如“库存周转慢”“新客留存差”),会后查定义、看报表;
  2. 反向梳理指标树 :从CEO关注的“年度营收”出发,逐层分解:营收=客单价×订单量,订单量=新客订单+老客订单,老客订单=复购用户数×人均订单...直到你能说出“哪个数据表、哪个字段、哪个计算逻辑支撑着最末端的指标”;
  3. 建立业务术语映射表 :把技术语言转译成业务语言。例如:
    • 技术词:“特征重要性Top3是用户生命周期价值、最近30天浏览时长、收藏夹商品数”;
    • 业务词:“影响复购最关键的三个因素是:用户历史消费金额、近期活跃度、对商品的兴趣强度”。

这种转换不是“降维”,而是 在业务语境中锚定数据价值 。当你说“提升复购率”时,业务方想到的是促销预算;而你说“通过优化收藏夹商品推荐,预计提升高价值用户复购率2.3%”,他们立刻明白该投多少钱。

4.2 沟通表达:让非技术人员听懂“为什么”

数据科学家最大的沟通陷阱,是把“技术正确”当成“沟通有效”。我曾用30分钟向CFO解释“为什么模型需要重训”,全程围绕梯度下降、学习率衰减、验证集损失曲线...对方礼貌听完,最后问:“所以,这会导致下季度利润少多少?”——我哑口无言。

真正的沟通高手,遵循 三层漏斗法则 :

  • 顶层(10秒) :用业务结果开场。“重训模型后,预计减少15%的无效营销支出,相当于每年节省200万”;
  • 中层(2分钟) :用类比解释原理。“就像汽车定期保养,模型也会‘老化’。当前模型基于3个月前的数据训练,现在用户行为已变化,就像旧地图导航会把车带到死胡同”;
  • 底层(可选) :只在对方追问时展开技术细节。“我们检测到‘用户下单间隔’分布偏移了22%(PSI=0.22),超过0.15的阈值,所以必须用新数据重训”。

针对不同角色,调整表达重心:

  • 对高管 :聚焦ROI、风险、战略对齐。不说“我们用了XGBoost”,而说“该方案比当前规则引擎多识别37%的高潜客户,预计提升首单转化率1.8%”;
  • 对产品经理 :强调用户体验与数据闭环。“新模型上线后,APP首页推荐点击率提升12%,我们将把用户行为数据实时回传,用于下一轮迭代”;
  • 对销售团队 :提供可执行话术。“模型识别出这批客户对‘环保材质’最敏感,建议在沟通中强调产品可持续性认证”。

工具上,我强烈推荐 用Excel代替PPT做汇报 。不是因为Excel高级,而是因为它强迫你呈现原始数据:

  • 把AB测试结果做成交互式透视表,让业务方自己拖拽筛选“华东区”“35岁以上用户”;
  • 用条件格式标红“转化率提升>2%”的渠道,绿色标出“成本下降>10%”的方案;
  • 插入迷你图(Sparklines)展示各渠道周度趋势,比静态柱状图更有说服力。

当业务方能亲手操作数据,质疑自然消失。因为数据不会撒谎,而你的解读,就是他们决策的依据。

4.3 成本意识:每个技术决策都是财务决策

数据科学家常忽略一个残酷事实: 你写的每一行代码,都在消耗公司的真金白银 。在云时代,技术选型直接挂钩财务报表。比如:

  • 用 pandas.read_csv() 读取10GB CSV文件,比用 dask.dataframe.read_csv() 多花3倍计算时间,意味着多付3倍EC2费用;
  • 在GCP上用 n1-standard-8 (8核30GB)训练模型,比用 a2-highgpu-1g (1 GPU)慢5倍,多烧掉400美元;
  • 每天全量重跑一个特征表,比增量更新多消耗70%的BigQuery计算资源。

因此,2025年的数据科学家,必须掌握基础成本核算能力:

  1. 云资源定价解构 :以AWS为例, m5.2xlarge 实例$0.384/小时,但若开启Spot实例(竞价实例),价格可降至$0.092/小时,节省76%。代价是可能被中断,但对可重入的训练任务完全可接受;
  2. 数据移动成本 :GCP中,跨区域复制数据收费$0.01/GB,而同一区域传输免费。所以把模型训练集群和特征存储放在同一区域,每年省下数万美元;
  3. 存储分层策略 :热数据(近30天)用SSD存储,温数据(30-180天)转到HDD,冷数据(180天以上)归档到Nearline Storage,成本可降90%。

我在团队推行“成本影响评估表”,任何技术方案必须填写:

项目 当前方案 新方案 成本差异 风险
模型训练 EC2 c5.4xlarge × 24h SageMaker ml.p3.2xlarge × 4h $120 → $48 GPU驱动兼容性需验证
特征存储 BigQuery Standard BigQuery BI Engine $2000/月 → $500/月 BI Engine缓存容量有限制
日志
YOLOv8作物病害检测实战源码 这是一套基于YOLOv8n的农田病虫害目标检测系统,对叶片照片做目标检测,识别健康叶片、褐斑病、白粉病、锈病四类,并给出对应防治建议。全流程纯CPU可跑,配套交付完整Python源码、9章实战教程(md/html/pdf三种格式)、100张自造样本及YOLO标签、训练曲线与混淆矩阵截图、Tkinter界面和答辩PPT。 系统围绕五项功能展开:同一套推理逻辑覆盖图像、视频、摄像头三种来源;图形界面选文件即检测,画面叠彩色框标注病名与置信度,右侧面板同步给出症状与防治措施;检测记录自动写入CSV,统计页一键生成四类病害占比饼图;训练结束自动产出损失与精度曲线;内置防治建议文案库,检测命中即回填面板。 选型用YOLOv8n nano档,参数量约320万、权重约6.2MB,CPU单帧几十毫秒,小样本训练5到8分钟完成。数据由data_gen.py程序化绘制100张叶片图,固定随机种子,重跑分布一致,不依赖公开数据集。依赖全部锁版本,教程第7章整理了19条真实报错及排查方法,第8章给出换模型档、换PlantVillage数据集的迁移路径。 适合做计算机视觉方向课程设计或毕业设计的学生,也适合智慧农业方向想了解检测模型如何落进业务面板的学习者。不需要GPU,不需要系统学过目标检测,教程第3章会按需补齐原理。 使用时先pip install -r requirements.txt装好依赖,download_data.py下载预训练权重,data_gen.py生成样本后train.py训练,完成后用main.py infer批量检测或main.py gui启动界面。 立即下载

相关推荐

数据挖掘实战:决策树 + 聚类 + 关联规则,零 Key 离线可跑(Python 源码)

数据挖掘实战包。用 Python 标准库实现 CART 风格决策树、K-Means 聚类与 Apriori 关联规则,在虚构「星河便利店」会员表和购物篮上跑通分类、分群与购物篮分析,并给出准确率、轮廓系数、支持度/置信度/提升度。零第三方依赖、零 API Key 即可离线跑通。含 4 个样例、离线冒烟、中文 README(含「使用方法」)。均为作者原创可运行源码。MIT。作者 blog.youkuaiyun.com/mtl1994

MailMail

    当前最新版本:1.0.2.5   概述 MailMail是一款独特的邮件发送工具,或许它独特到你从未感受过的地步,它可使你通过轻松、简单、愉快的操作完成日常邮件发送操作,当然,它肯定不是因“会发邮件”而独特,而是在于“怎么发”,相信我,你一定要自己来感受一下。  通过MailMail,你可以达成很多你所未曾尝试的邮箱应用,如备份文件、分享音乐、分发资料、提交工作文档、群发消息等...

weixin_34388207的博客 484

产业园区如何高效对接企业技术需求与高校科研成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

linux 发送邮件过程,linux下使用 mail 命令发送电子邮件的方法

操作系统 fedora 10mail 是系统自带的一个邮件客户端程序。首先需要了解 mail 命令的常用参数Usage: mail -eiIUdEFntBDNHRV~ -T FILE -u USER -h hops -r address -sSUBJECT -a FILE -q FILE -f FILE -A ACCOUNT -b USERS -c USERS-S OPTION users-vV...

weixin_33313117的博客 383

国央企创新负责人如何快速掌握本地科技资源分布与匹配情况?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

国央企创新负责人如何实现科技成果的精准识别与高效筛选?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

Linux学习-->如何通过Shell脚本实现发送邮件通知功能?

1、安装和配置sendmail不需要注册公网域名和MX记录(不需要架设公网邮件服务器),通过Linux系统自带的mail命令即可对公网邮箱发送邮件。不过mail命令是依赖sendmail的,所以我们需要先检查安装和配置sendmail。一般系统都自带sendmail,但是只能给内网的邮箱发邮件。如果想给公网的邮箱发邮件(比如qq邮箱)就需要配置sendmail.这里记录sendmail的安装启动配置...

字节卷动 8万+

AI虚拟人物 数字人直播,不用出镜,不用露脸的直播方式(附教程 软件)

我们先来看一组数据,这是我通过蝉妈妈查到的某位虚拟主播的一个带货数据,粉丝还不到 3000 人,每次直播 1 到 4 个小时,30天的总销量达到了1200单,15天,总销售额 2 万,可能相对来说客单价还是比较低,最关键的是才直播了 6 场,如果说他能够一个月直播 20 天,每天花 4个小时去直播,当个副业来做,就可以达到最起码月入 3 万的一个收入水平,我个人觉得是非常的不错的。大家把商品图片放在背景,只要场景设置的不错,场景和产品的关联度高,直播的时候挂上购买链接也会有一定的成交。

. 7万+

linux常用命令及使用

94linux环境变量设置 94.1 什么是环境变量?,环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或多个应用程序将使用到的信息。Linux是一个多用户的操作系统,每个用户登录系统时都会有一个专用的运行环境,通常情况下每个用户的默认的环境都是相同的。这个默认环境就是一组环境变量的定义。每个用户都可以通过修改环境变量的方式对自己的运行环境进行配置。 94.2 环境变量怎么分类...

Eplusing 3509

统计信号处理基础 习题解答1-1

1-1:在雷达习题中,双程延时时间的估计量具有PDF τ0~Nτ0,στ02,其中τ0是真值。假如要估计距离请提出一种估计量R,并求它的PDF。然后,确定标准偏差στ0,使得距离估计值的99%在真值的100m以内,对电磁波传播速度取c=3×108m/s。 解答: 问题1: 由于电磁波传播速度c,信号可观察的双程传播延时τ0和双程传播距离τ0满足关系: R=cτ02 因此可采用如下估计量: R=cτ02 问题2: 由于τ0满足正态分布,且: Eτ0=τ0 varτ0=στ02 那么: E

weixin_43270276的博客 2806

LSTM预测股票数据---数据预处理

# 导入相应的模块 import pandas as pd import numpy as np import matplotlib.pyplot as plt import tensorflow as tf # 获取训练集 def get_train_data(data,batch_size = 60 ,time_step = 20,train_begin = 0,train_end = 58...

qq_35358021的博客 3360

初创公司数据科学家生存指南:资源零、定义模糊下的价值交付

数据科学在初创环境中的核心挑战,不在于算法复杂度或模型精度,而在于如何在资源极度受限、需求高度模糊、优先级频繁切换的混沌系统中,持续交付可感知、可验证、可落地的业务价值。这要求从业者超越传统建模能力,掌握数据连接、问题考古、角色切换与反脆弱工程等复合技能。‘最小可行数据栈’(Segment+BigQuery+Looker Studio)、‘规则优先的生存型建模’、‘反讽式专业沟通’等实践方法,本质是将数据工作从技术输出转化为业务杠杆。本文聚焦初创场景下真实存在的数据基建断层、指标定义失焦与知识传承脆弱性,提

weixin_30326515的博客 342

无感无刷电机三段式启动避坑指南:从预定位到闭环切换的STM32代码实现

本文深入解析无感无刷电机的三段式启动流程,涵盖预定位、启动加速与闭环切换三大阶段。重点对比了恒频升压、恒压升频与升频升压三种核心启动策略的优劣,并提供了基于STM32的详细状态机代码实现与关键参数调试指南,帮助工程师有效规避启动失步、线圈过热等常见问题,实现稳定可靠的无感驱动。

herb5的博客 535

Gemini数据科学Agent:可落地的人机协同工作流重构方案

数据科学工作流正从手动编码与BI拖拽式分析,迈向具备上下文感知、动态推理和业务规则嵌入的智能编排新范式。其核心在于将重复性ETL、特征工程、模型选择等任务自动化,同时保留关键人工卡点以保障业务语义准确性。这类AI原生工作流依赖数据契约、人话指令、主动诊断与知识沉淀四大支柱,显著提升分析可信度与协作效率。尤其适用于需快速响应业务问题、强调归因解释性、并追求组织知识持续积累的中大型企业场景。Gemini Data Science Agent正是这一演进路径下的典型实践。

weixin_30873847的博客 330

QGIS编译(跨平台编译)001:Flex、Bison编译(安装)(Windows、Linux、MacOS环境下安装)

QGIS编译;Flex、Bison编译(安装)(Windows、Linux、MacOS环境下安装)

LuckyHanMo的博客 3080

OpenCV入门(一)Python环境的搭建

因为有点Python基础,并且Python是比较好入门的编程语言,所以,机器视觉后面打算在Python这个平台下进行。

小幽余生不加糖 8123

2026年AI大模型工程师岗位大全:全国名企职位一网打尽,抓住AI风口,机遇就在你手中!

本文汇总了全国多个行业的大模型相关招聘信息,涵盖算法工程师、数据工程师、产品经理等职位类型。涉及科技、金融、医疗、汽车等多个领域,包括字节跳动、腾讯、快手等知名企业的岗位需求,反映了AI行业对大模型人才的高度需求。职位分布广泛,为求职者提供了丰富的就业机会,是了解AI行业发展和职业规划的重要参考资源。

Android23333的博客 1452

2025年下半年网络工程师案例分析真题及答案解析

2025年下半年网络工程师案例分析真题及答案解析

鹿鸣天涯 1089

linux命令查询邮件发送状态,Linux发邮件之mail命令详解

一、mail命令1.配置vim /etc/mail.rc文件尾增加以下内容set from=1968089885@qq.com smtp="smtp.qq.com"set smtp-auth-user="1968089885@qq.com" smtp-auth-password="123456"set smtp-auth=login说明:from: 对方收到邮件时显示的发件人smtp: 指定第三方...

weixin_36402316的博客 1331

leaflet 综合教程170+ 【目录 】(已包含162篇文章)

vue+leaflet系列教程旨在为开发者提供简单快捷的,。在每一个示例中,解释相应的API知识点,做到。注意本示例目录中的内容可能加载是vue+openlayers的示例, 本目录是要加载vue+leaflet的示例,只是内容少,逐渐更新中。

大剑师兰特的GIS世界 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Linux发邮件之mail命令

一、mail命令 1.配置 vim /etc/mail.rc 文件尾增加以下内容 set from=1968089885@qq.com smtp="smtp.qq.com" set smtp-auth-user="1968089885@qq.com" smtp-auth-password="123456" set smtp-auth=login 说明: from: 对方收到邮件时显示的发件人...

星辰大海是我的征途 4708

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

linux下简单的mail使用

1、安装mail命令 通过以下命令进行安装:yum -y install mail 或者 yum -y install mailx两种命令都是可以安装成功。2、配置mail.rcvi /etc/mail.rc在其末尾添加以下配置:set from="xxxxx@163.com" smtp="smtp.163.com" set smtp-auth-user="xxxxx@163.com" smtp-

codecocktail的博客 1954

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

linux mail命令用法浅析【用最简单的测试一下就可以了如 "mail 真实的邮箱账号"具体操作见下一篇文章】

文章来源:http://www.jb51.net/LINUXjishu/183047.html 这篇文章主要介绍了linux mail命令用法浅析,分别讲解了邮件发送方法、发送附件的方法、查看邮件的方法等,需要的朋友可以参考下 在这里整理一下Linux中mail命令的使用。mail也是一个常用的命令,我们在很多地方都要用到它,比如定时把系统状况或日志

Thinking 1199

配置Mail使用SMTP发送邮件

今天分享在Linux上使用mail命令通过SMTP对外发邮件。  mail、mailx和sendmail  先看一下三者的关系:mail是mailx的别名,最初叫nail(与arch linux目前用的S nail基因相同);mail是Heirloom的一个子项目,sendmail是Eric Allman的作品,都是开源项目;mail是用户代理(客户端),sendmail是邮件传输代理(服务器);...

u012662731的博客 4万+
上一篇: 医学RAG新范式:分层图谱架构精准定位临床证据
下一篇: 高德、百度、丰图地理编码API对比:Python实战与选型指南
weixin_33728708
博客等级 码龄11年 5472粉丝 1452原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值