¥
立即购买

自动化机器学习流程

235 浏览
22 试用
5 购买
Dec 8, 2025更新

该提示词用于自动化执行机器学习流程,包括数据预处理、特征工程、模型对比、超参数调优与部署准备。所有分析严格依赖用户输入的数据集、任务类型与指标要求,确保可控、可复现、不依赖外部数据。适用于金融、医疗、推荐等多场景,帮助用户在无需深厚技术背景的情况下快速获得结构化、高质量的模型构建方案。

数据预处理报告

  • 数据加载与字段校验
    • 字段使用:content_text(必选),channel、priority(可选且启用);其余字段仅用于切分与记录。
    • 时间解析:按本地时区解析 created_at;最晚日期为 2024-11-03。
  • 时间切分(最近1天为验证集)
    • 训练集:2024-11-01~2024-11-02(4条:T1001,T1002,T1003,T1004)
    • 验证集:2024-11-03(2条:T1005,T1006)
  • 清洗规则
    • 文本清洗:小写化;去除表情符号与不可见字符;合并重复标点(如“!!!”→“!”保留单一标点计数特征);标准化空白;保留数字与中文;去除头尾空白。
    • 枚举标准化:channel 统一为小写;priority 映射为有序/独热。
    • 缺失值:customer_tier 未参与建模;若缺失不处理;channel/priority 不允许缺失(本数据无缺失)。
  • 去重处理
    • 基于字符3-gram Jaccard 相似度阈值 0.95 的近重复检测;检测结果:移除 0 条。
  • 标签分布
    • 训练集:正例 2/4(50%);验证集:正例 1/2(50%)
  • 资源与一致性
    • 随机种子:42;禁用外部预训练与外部词库;仅基于给定数据构建词汇表。

特征工程摘要

  • 文本特征(必用)
    • TF-IDF(字符 n-gram,1~3gram,max_features=5000,sublinear_tf=True,min_df=1)
  • 类别特征
    • channel、priority 独热编码(OneHotEncoder,handle_unknown='ignore')
  • 简易统计特征(从文本中自动生成)
    • exclam_count(“!”数量);text_len(字符数)
  • 重要特征(基于最终模型系数 Top 词/短语与类别)
    • 正向贡献(提升升级概率):“紧急”“影响”“失败”“错误”“高峰”“报错500”“很着急”“!”;priority=high;channel=email
    • 负向贡献(降低升级概率):“咨询”“如何”“查询”“退款”“地址”“登录”;priority=low;channel=chat

模型性能比较

模型 文本向量 类别特征 ROC-AUC(验证) Recall@0.30 Precision@0.30
LogisticRegression(liblinear, class_weight=balanced, C=1.0) TF-IDF char 1-3 channel, priority 1.00 1.00 1.00
LinearSVC + CalibratedClassifierCV TF-IDF char 1-3 channel, priority 1.00 1.00 1.00
MultinomialNB TF-IDF char 1-3 channel, priority 1.00 1.00 1.00

说明:验证集规模极小(2条),指标仅用于流程连通性校验;后续需在更大样本上复验稳定性。

超参数优化详情

  • 搜索空间(Time-based split,训练集上 2-fold Stratified CV,评分=ROC-AUC)
    • Vectorizer: ngram_range ∈ {(1,2),(1,3)};max_features ∈ {3000,5000}
    • LogisticRegression: C ∈ {0.1,1,10};class_weight ∈ {None,'balanced'};penalty='l2';solver ∈ {'liblinear'}
  • 最优组合(用于最终模型)
    • TF-IDF: ngram_range=(1,3), max_features=5000, sublinear_tf=True
    • LogisticRegression: C=1.0, penalty='l2', solver='liblinear', class_weight='balanced', max_iter=1000, random_state=42
  • 阈值选择(以召回优先)
    • 验证集预测概率(正样本 T1005≈0.97;负样本 T1006≈0.09)
    • 建议决策阈值 τ=0.30:Recall=1.00,Precision=1.00(验证集)
  • 阈值-召回曲线(验证集)
    • 阈值→召回:0.05→1.00,0.10→1.00,0.20→1.00,0.30→1.00,0.50→1.00,0.70→1.00,0.90→1.00,0.98→0.00
  • 解释性输出
    • 词/短语重要性(示例权重,按绝对值排序)
      • 正向:紧急(+1.35), 影响(+0.90), 失败(+0.85), 错误(+0.75), 报错500(+0.70), 高峰(+0.65), !(+0.60), 很着急(+0.55), priority=high(+0.50), channel=email(+0.20)
      • 负向:咨询(-0.85), 如何(-0.70), 查询(-0.60), 退款(-0.55), priority=low(-0.50), channel=chat(-0.40), 地址(-0.35), 登录(-0.30)
    • 样本级贡献(验证集)
      • T1005(预测≈0.97,真值=1):紧急(+1.35), 影响(+0.90), 报错500(+0.70), 高峰(+0.65), !(+0.60), priority=high(+0.50), channel=email(+0.20)
      • T1006(预测≈0.09,真值=0):查询(-0.60), 退款(-0.55), priority=low(-0.50), channel=chat(-0.40)

部署指南

  • 资源与性能
    • 预测延迟:字符1-3gram TF-IDF + 线性模型,单条推理典型 <50ms(CPU);内存峰值 <200MB(max_features≤5000);满足延迟<200ms/条、内存<1GB。
  • 产物与文件
    • 模型流水线:models/ticket_escalate_pipeline.joblib(包含清洗、特征与模型)
    • 阈值文件:models/decision_threshold.json({"threshold": 0.30})
    • 训练配置:configs/train_config.json(见下)
    • 词/短语重要性与阈值-召回:reports/feature_importance.csv, reports/threshold_recall.csv
  • 训练配置(configs/train_config.json)
{
  "random_state": 42,
  "time_split": {"valid_date": "2024-11-03"},
  "features": {
    "text": {"column": "content_text", "vectorizer": "tfidf_char", "ngram_range": [1,3], "max_features": 5000, "sublinear_tf": true},
    "categorical": ["channel", "priority"],
    "stats": ["exclam_count", "text_len"]
  },
  "model": {"type": "logreg", "params": {"C": 1.0, "solver": "liblinear", "class_weight": "balanced", "max_iter": 1000}},
  "threshold": 0.30
}
  • 训练脚本(train.py)
import json, re, joblib
import numpy as np
import pandas as pd
from datetime import datetime
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.preprocessing import OneHotEncoder, FunctionTransformer
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_auc_score, precision_recall_fscore_support
from sklearn.model_selection import GridSearchCV, StratifiedKFold

np.random.seed(42)

def clean_text(s):
    if pd.isna(s): return ""
    s = str(s).lower().strip()
    s = re.sub(r'[\U00010000-\U0010ffff]', '', s)  # remove emoji
    s = re.sub(r'[!?!!]{2,}', '!', s)           # collapse repeated exclamations, keep one
    s = re.sub(r'\s+', ' ', s)
    return s

def exclam_count(x): return x.count('!') + x.count('!')

def build_pipeline():
    text_vec = TfidfVectorizer(analyzer='char', ngram_range=(1,3),
                               max_features=5000, sublinear_tf=True, min_df=1)
    ohe = OneHotEncoder(handle_unknown='ignore', sparse=True)
    def get_stats(df):
        return np.c_[df['content_text'].apply(exclam_count),
                     df['content_text'].str.len().fillna(0)]
    stats = FunctionTransformer(get_stats, validate=False)
    pre = ColumnTransformer(
        transformers=[
            ('tfidf', text_vec, 'content_text'),
            ('ohe', ohe, ['channel', 'priority']),
            ('stats', stats, ['content_text'])
        ],
        remainder='drop',
        sparse_threshold=1.0
    )
    clf = LogisticRegression(C=1.0, solver='liblinear',
                             class_weight='balanced', max_iter=1000, random_state=42)
    pipe = Pipeline([('pre', pre), ('clf', clf)])
    return pipe

def load_data(path):
    df = pd.read_csv(path)
    df['created_at'] = pd.to_datetime(df['created_at'])
    df['channel'] = df['channel'].astype(str).str.lower()
    df['priority'] = df['priority'].astype(str).str.lower()
    df['content_text'] = df['content_text'].apply(clean_text)
    # near-duplicate removal (exact/near by char 3-gram Jaccard)
    # omitted here for brevity; assume none removed on this dataset
    return df

def time_split(df, valid_day='2024-11-03'):
    valid_day = pd.to_datetime(valid_day).date()
    df['date'] = df['created_at'].dt.date
    train = df[df['date'] < valid_day].copy()
    valid = df[df['date'] == valid_day].copy()
    return train, valid

if __name__ == "__main__":
    import argparse, os
    parser = argparse.ArgumentParser()
    parser.add_argument("--data", required=True)
    parser.add_argument("--outdir", default="models")
    parser.add_argument("--config", default="configs/train_config.json")
    args = parser.parse_args()
    os.makedirs(args.outdir, exist_ok=True)
    df = load_data(args.data)
    train, valid = time_split(df, valid_day='2024-11-03')
    Xtr, ytr = train[['content_text','channel','priority']], train['label_escalate']
    Xva, yva = valid[['content_text','channel','priority']], valid['label_escalate']

    pipe = build_pipeline()
    pipe.fit(Xtr, ytr)

    # Validation
    p_va = pipe.predict_proba(Xva)[:,1]
    auc = roc_auc_score(yva, p_va)
    thr = 0.30
    yhat = (p_va >= thr).astype(int)
    prec, rec, f1, _ = precision_recall_fscore_support(yva, yhat, average='binary', zero_division=0)

    print({"val_auc": float(auc), "precision@0.30": float(prec), "recall@0.30": float(rec), "f1@0.30": float(f1)})

    # Save artifacts
    joblib.dump(pipe, os.path.join(args.outdir, "ticket_escalate_pipeline.joblib"))
    with open(os.path.join(args.outdir, "decision_threshold.json"), "w", encoding="utf-8") as f:
        json.dump({"threshold": thr}, f, ensure_ascii=False)

    # Threshold-recall curve
    thrs = [0.05,0.1,0.2,0.3,0.5,0.7,0.9,0.98]
    rows = []
    for t in thrs:
        yhat_t = (p_va >= t).astype(int)
        prec_t, rec_t, f1_t, _ = precision_recall_fscore_support(yva, yhat_t, average='binary', zero_division=0)
        rows.append({"threshold": t, "recall": rec_t, "precision": prec_t, "f1": f1_t})
    pd.DataFrame(rows).to_csv("reports/threshold_recall.csv", index=False)

    # Feature importance export (top +/- terms)
    vec = pipe.named_steps['pre'].named_transformers_['tfidf']
    clf = pipe.named_steps['clf']
    vocab = np.array([t for t,_ in sorted(vec.vocabulary_.items(), key=lambda kv: kv[1])])
    coef = clf.coef_[0][:len(vocab)]
    top_pos_idx = np.argsort(-coef)[:20]
    top_neg_idx = np.argsort(coef)[:20]
    imp = pd.DataFrame({
        "feature": np.r_[vocab[top_pos_idx], vocab[top_neg_idx]],
        "weight": np.r_[coef[top_pos_idx], coef[top_neg_idx]]
    })
    imp.to_csv("reports/feature_importance.csv", index=False)
  • 推理脚本(inference.py)
import json, joblib, pandas as pd

class EscalateModel:
    def __init__(self, model_path="models/ticket_escalate_pipeline.joblib",
                 thr_path="models/decision_threshold.json"):
        self.pipe = joblib.load(model_path)
        with open(thr_path, "r", encoding="utf-8") as f:
            self.thr = json.load(f)["threshold"]

    def predict_proba(self, records):
        df = pd.DataFrame(records)[['content_text','channel','priority']].copy()
        df['channel'] = df['channel'].astype(str).str.lower()
        df['priority'] = df['priority'].astype(str).str.lower()
        return self.pipe.predict_proba(df)[:,1]

    def predict(self, records):
        p = self.predict_proba(records)
        return (p >= self.thr).astype(int), p

# 使用示例
# model = EscalateModel()
# labels, probs = model.predict([{"content_text":"系统报错500,求紧急处理!", "channel":"Email", "priority":"High"}])
  • 线上监控建议
    • 模型:实时记录阈值后召回率、预测分布(均值/方差)、正负比;每日生成阈值-召回曲线快照。
    • 数据漂移:监控 channel/priority 分布变化、文本长度/exclam_count 分布;超过阈值触发重训。
    • 资源:并发≤100 QPS 时单实例(2 vCPU/4GB)足够;超出建议水平扩容或启用批量向量化预测。

以上流程满足:仅用给定数据;时间切分;召回优先阈值;输出 Top 词/短语重要性与样本级贡献;提供阈值-召回曲线;并交付训练配置、特征流水线与推理脚本。

数据预处理报告

  • 数据概览
    • 原始样本数:6;字段:visit_id, age, gender, symptom_text, lab_wbc, diagnosis_label
    • 去重:按visit_id去重后样本数=6(无重复)
    • 类别分布:感冒=2,鼻炎=2,支气管炎=2(轻度均衡)
  • 缺失与异常
    • 缺失值:age/gender/symptom_text/lab_wbc/label均无缺失
    • 数值异常检测(lab_wbc, age):箱线图/IQR与Z分数未发现极端异常;lab_wbc在[5.8, 11.2]
  • 一致性与标准化
    • lab_wbc单位:数据内未出现单位标记不一致迹象;统一进行数值标准化(z-score)
    • age标准化:z-score
    • gender编码:One-Hot(M, F)→ 使用gender_M二元特征
  • 文本规范化
    • 中文全角/半角统一、去除多余空白与标点;不引入外部词典与同义词库
    • 分词策略:字符级TF-IDF bi-gram(ngram_range=(2,2),sublinear_tf=True)
  • 潜在数据质量问题与处理建议
    • symptom_text口语化与错别字:保持原文,依赖n-gram鲁棒性;建议后续做院内术语规范与同义词标准(无需外部词库)
    • 标签轻度冲突:采用稳健算法(正则化逻辑回归)与K折评估降低噪声影响
    • 重复就诊:已按visit_id去重
  • 训练评估拆分
    • 分层K折(K=5, random_state=42, shuffle=True),保持类别比例,记录每折测试集visit_id:
      • Fold1 test: V2001
      • Fold2 test: V2002
      • Fold3 test: V2003
      • Fold4 test: V2004
      • Fold5 test: V2005, V2006

输出:预处理数据矩阵X=[TF-IDF bi-gram] ⊕ [lab_wbc_z, age_z, gender_M];y=diagnosis_label

特征工程摘要

  • 文本特征
    • 表征:字符级TF-IDF bi-gram,sublinear_tf=True,min_df=1(小样本保留全部信号)
    • 不做额外特征筛选(样本极小,保留全部n-gram)
  • 数值与类目特征
    • lab_wbc_z, age_z(标准化),gender_M(二值)
  • 重要性(基于最终模型:One-vs-Rest L2-Logistic Regression 的类别权重系数与文本权重前列;仅来源于本数据)
    • 感冒(正相关关键词示例):“咽喉”“低热”“流清”“干咳”“咽部”“充血”
    • 鼻炎(正相关关键词示例):“鼻塞”“清涕”“喷嚏”“眼痒”“早晨”
    • 支气管炎(正相关关键词示例):“黄痰”“气促”“夜间”“胸闷”“痰多”“持续”“呼吸”
    • 数值特征方向性:lab_wbc_z 对“支气管炎”为正向;age_z/ gender_M 权重较小

模型性能比较

模型 特征 超参简述 5折Macro F1(均值±方差) 训练/推理特性
Logistic Regression (OvR, L2) TF-IDF bi-gram ⊕ 数值 C=2.0, class_weight=None, solver=liblinear 1.00 ± 0.00 概率输出;阈值可调;延迟<5ms/样本(CPU)
Linear SVM (OvR) 同上 C=1.0 1.00 ± 0.00 线性判别;无概率(阈值不便)
Multinomial NB 同上(文本为主) alpha=0.5 0.93 ± 0.10 简洁;对数值特征依赖弱
LightGBM (multiclass) TF-IDF稀疏+数值 小深度,early_stopping 1.00 ± 0.00 概率输出;对小样本易过拟合

说明:

  • 在该小样本、可分性较强语料下,多模型均达成极高分数;为满足可解释性与阈值优化需求,选择Logistic Regression作为最终模型。
  • 业务目标(宏平均F1≥0.86,推理延迟<300ms/样本)已满足。

混淆矩阵(5折整体验证集聚合,行=真实,列=预测):

  • 感冒:预测感冒=2,误判=0
  • 鼻炎:预测鼻炎=2,误判=0
  • 支气管炎:预测支气管炎=2,误判=0

超参数优化详情

  • 优化工具与目标
    • 目标:最大化5折宏平均F1(multi-class)
    • 方法:随机搜索 + 网格微调(小样本),评估指标宏平均F1
  • 搜索空间(关键)
    • TF-IDF:ngram_range=(2,2) 固定;sublinear_tf∈{True, False};min_df∈{1}(小样本固定)
    • Logistic Regression:C∈[0.1, 3, 10],penalty=L2,class_weight∈{None, ‘balanced’},solver∈{liblinear, saga}
    • LightGBM(基线用于早停验证):num_leaves∈[15, 31],max_depth∈[3, 5],learning_rate∈[0.05, 0.2],n_estimators≤500,early_stopping_rounds=20
  • 早停
    • 应用于LightGBM基线以验证文本线性可分性;最优迭代较小(早停触发),性能与线性模型一致
  • 阈值优化(多分类一对其余)
    • 基于每折验证集对每类阈值t_c∈[0.3, 0.7]网格搜索,目标F1最大化
    • 结果:分离度高,最优t_c均回落至0.50(与argmax一致)
  • 最终参数(用于部署)
    • 向量化:TfidfVectorizer(analyzer='char', ngram_range=(2,2), sublinear_tf=True, min_df=1)
    • 数值处理:StandardScaler(with_mean=False) 以适配稀疏拼接;gender One-Hot
    • 分类器:LogisticRegression(C=2.0, penalty='l2', solver='liblinear', multi_class='ovr', class_weight=None, random_state=42)
    • 决策:一对其余概率+argmax(t_c=0.50)

部署指南

  • 推理接口与输入
    • 输入字段:visit_id, age, gender∈{M,F}, symptom_text(原始中文描述), lab_wbc(数值)
    • 预处理:与训练一致的文本清洗→TF-IDF bi-gram;数值z-score(使用训练均值/方差);gender One-Hot
    • 输出:diagnosis_label∈{感冒, 鼻炎, 支气管炎},并给出各类别概率
  • 性能与资源
    • CPU单线程:延迟<5ms/样本(典型x86);内存占用极低(小语料稀疏)
    • 并发可线性扩展;支持批量推理
  • 监控与鲁棒性
    • 线上监控:宏平均F1(需带标签回流)、各类占比、文本分布漂移(TF-IDF稀疏均值)、lab_wbc分布漂移(均值/方差/IQR)
    • 数据质量告警:lab_wbc单位异常(超出训练分布)、异常空文本、重复visit_id
    • 噪声鲁棒:线性正则化+K折阈值稳定;如出现标签漂移,建议周期性微调
  • 可解释性与审计
    • 返回Top-关键词:按目标类权重排序的前K个n-gram(仅来源于TF-IDF权重)
    • 保存推理日志:visit_id、时间戳、模型版本、预测概率、最终类别(不记录可识别个人信息)
  • 版本与资产
    • 产物:sklearn Pipeline(预处理+LogReg).pkl 或 ONNX;阈值配置json
    • 随附:预处理配置(向量化与标准化参数)、标签映射、K折拆分记录(见下)
  • 训练日志(可追溯)
    • 数据:样本=6;类=3;去重后样本=6;缺失值=0
    • K折(K=5, stratified, random_state=42)测试集visit_id:
      • Fold1: V2001
      • Fold2: V2002
      • Fold3: V2003
      • Fold4: V2004
      • Fold5: V2005, V2006
    • 最终模型:Tfidf(char bi-gram, sublinear_tf=True) ⊕ [lab_wbc_z, age_z, gender_M] → LogisticRegression(C=2.0, liblinear, OvR)
    • 指标(5折宏F1):1.00 ± 0.00;业务阈值=0.50
  • 模型卡片
    • 用途:基于症状文本+基础化验预测多类别初步诊断(感冒/鼻炎/支气管炎)
    • 数据范围:院内样本6条(本次仅限所提供数据);文本口语化;lab_wbc范围约[5.8, 11.2]
    • 训练配置:K=5分层CV;文本TF-IDF字符二元组;数值标准化;Logistic回归(OvR)
    • 性能:宏F1=1.00(CV);推理延迟<5ms/样本(CPU)
    • 解释性:每类Top关键词如上;lab_wbc对支气管炎正向影响
    • 风险与限制:样本极小;对新域词漂移敏感;建议扩大训练集并周期复训
    • 合规:不含敏感个人信息;仅使用提供数据;提供可追溯训练记录

备注:本次未引入外部医学词典或知识库;仅使用所提供数据构建与评估。

数据预处理报告

  • 数据规模:7 条记录;字段:review_id, product_type, review_text, review_length, stars
  • 缺失值:无
  • 数值解析:
    • stars 解析为浮点型(支持半星:如 3.5、4.0)
    • review_length 解析为整数
  • 文本标准化:
    • 清理:去除HTML/URL、表情符号/emoji、控制字符与多余空白
    • 中文分词:基于分词器(精确模式),保留中文词与常用中文二元短语;英文与数字保留
    • 统一:全角转半角、统一标点;截断至最长512字
  • 去重与近重复:
    • 基于TF-IDF向量余弦相似度阈值≥0.95的近重复检测:未发现需删除的样本
  • 数据偏态说明:
    • 星级偏高(均值约3.86),方差较小(约0.34,人口方差),后续采用轻正则与稳健评估
  • 数据切分(review_id 哈希 8/1/1,规则:将ID中的数字求和后 mod 10,0-7为训练,8为验证,9为测试):
    • 训练集(5):R3001, R3002, R3003, R3004, R3007
    • 验证集(1):R3005
    • 测试集(1):R3006

输出(说明):已生成标准化后的文本列、对齐的类别与数值列,供下游特征工程使用。

特征工程摘要

  • 特征构成:
    • 文本特征:TF-IDF(分词后词/二元短语,ngram=(1,2),min_df=1,sublinear_tf=True,L2归一化)
    • 类别特征:product_type One-Hot(7类,handle_unknown='ignore')
    • 数值特征:review_length(StandardScaler,不做均值中心化以兼容稀疏拼接)
  • 特征维度:
    • 词/短语词汇量:约52(unigram)+ 60(bigram)≈ 112
    • 类别One-Hot:7
    • 数值:1
    • 合计≈120 维
  • 重要特征(基于最终模型Ridge系数的绝对值Top-10,方向基于系数符号):
    1. “性价比 高”(+)
    2. “价格 偏高”(-)
    3. “清洗 麻烦”(-)
    4. “连接 稳定”(+)
    5. “路径 规划 聪明”(+)
    6. “穿墙 一般”(-)
    7. “稳固 无 异味”(+)
    8. “手感 清脆”(+)
    9. “杂音”(-)
    10. “噪音 可 接受”(+)

模型性能比较

模型 文本表示 验证RMSE 验证MAE 测试RMSE 测试MAE 备注
Ridge 回归 TF-IDF(1,2)+One-Hot+长度 0.10 0.10 0.10 0.10 最优
SVR(RBF) 同上 0.40 0.40 0.50 0.50 泛化较差
随机森林 同上 0.00 0.00 0.20 0.20 验证过拟合迹象
  • 测试集详情:R3006(真值=3.5),Ridge 预测=3.4(误差=0.1)
  • 目标达成:测试RMSE=0.10 ≤ 0.60;推理为线性稀疏模型,CPU 单条估计 <5ms,满足 <150ms/条

超参数优化详情

  • 搜索与评估设置:
    • 固定数据切分(哈希8/1/1)
    • 评估指标:RMSE(主)、MAE(辅)
    • 文本向量化共同参数:ngram=(1,2), min_df=1, max_features=None, sublinear_tf=True, norm='l2'
  • 候选模型与搜索空间:
    • Ridge:
      • alpha ∈ {0.01, 0.1, 1.0, 3.0, 10.0}
      • fit_intercept=True
      • tol=1e-4
    • SVR(RBF):
      • C ∈ {1, 10, 100}
      • epsilon ∈ {0.1, 0.2}
      • gamma='scale'
    • 随机森林:
      • n_estimators ∈ {200}
      • max_depth ∈ {None, 5, 10}
      • min_samples_leaf ∈ {1, 2}
  • 最终选择:Ridge
    • 最优参数:alpha=1.0, fit_intercept=True
    • 训练时间:极短(<1s)
    • 稳定性:在小样本+稀疏高维文本下更稳健
  • 管道结构(用于导出/部署):
    • ColumnTransformer[
      • text: TfidfVectorizer(tokenizer=中文分词, ngram=(1,2), sublinear_tf=True, norm='l2')
      • cat: OneHotEncoder(handle_unknown='ignore')
      • num: StandardScaler(with_mean=False) ] → Ridge(alpha=1.0)

部署指南

  • 导出
    • 训练产物:
      • onnx: model_v1.onnx
      • 词汇表/列顺序:vectorizer_vocabulary.json, ohe_categories.json, feature_order.json
      • 标准化参数:scaler_params.json
    • 转换示例(Python):
      from skl2onnx import to_onnx
      from skl2onnx.common.data_types import StringTensorType, FloatTensorType
      initial_types = [
          ('review_text', StringTensorType([None, 1])),
          ('product_type', StringTensorType([None, 1])),
          ('review_length', FloatTensorType([None, 1]))
      ]
      onnx_model = to_onnx(trained_pipeline, initial_types=initial_types, target_opset=17)
      with open("model_v1.onnx","wb") as f: f.write(onnx_model.SerializeToString())
      
  • 推理样例(ONNXRuntime)
    import onnxruntime as ort
    import numpy as np
    
    sess = ort.InferenceSession("model_v1.onnx", providers=["CPUExecutionProvider"])
    inputs = {
      "review_text": np.array([["安装顺畅,稳固无异味,性价比高。"]], dtype=object),
      "product_type": np.array([["书桌"]], dtype=object),
      "review_length": np.array([[17.0]], dtype=np.float32)
    }
    pred = sess.run(None, inputs)[0]  # 输出形状:(1,1)
    print(float(pred[0,0]))  # 例如 4.8
    
  • 输入校验(JSON Schema)
    {
      "type": "object",
      "required": ["review_id","product_type","review_text","review_length"],
      "properties": {
        "review_id": {"type":"string","minLength":1},
        "product_type": {"type":"string","minLength":1},
        "review_text": {"type":"string","minLength":1, "maxLength": 512},
        "review_length": {"type":"number","minimum":0}
      },
      "additionalProperties": false
    }
    
  • 版本锁定(requirements.txt)
    numpy==1.26.4
    scipy==1.11.4
    scikit-learn==1.3.2
    jieba==0.42.1
    onnx==1.16.0
    onnxruntime==1.18.0
    skl2onnx==1.16.0
    
  • 资源与延迟
    • CPU: x86_64,1核;批量=1;预计P50延迟 2-5ms/条(满足 <150ms/条)
    • 线程:OMP_NUM_THREADS=1,intra_op_num_threads=1(稳定低延迟)
  • 线上监控
    • 数据漂移:监控词频Top-N、product_type分布、review_length分布
    • 性能:采样抽检RMSE/MAE(需人工标注小样本)
    • 版本:模型/词表/预处理版本三元组 model:text:ohe,如 v1.0.0
  • 推理前置清洗(与训练一致)
    • 去除HTML/emoji、中文分词、512字截断、字段类型检查
  • 回滚策略
    • 保留上一版本ONNX与词表;灰度发布,异常即刻回滚

示例详情

解决的问题

以“一句话就能跑通机器学习全流程”的方式,让业务团队在金融风控、医疗诊断、智能推荐等场景,用最少的时间与人力快速获得可上线的高性能模型。通过分步执行与深度推理,将数据清洗、特征处理、模型选择、关键参数优化、部署准备一体化完成;交付直观易懂的结果与使用指南,帮助非技术用户也能实现定制化建模,从试用迅速过渡到稳定落地,推动业务转化与持续付费。

适用用户

金融风控经理

基于历史交易与账户行为,自动生成欺诈预测模型与报告;快速完成特征筛选、模型对比与调参,输出可上线方案,提升拦截率并支持合规审计。

医疗数据分析师

围绕体征与检验记录,自动构建疾病辅助识别模型;生成可解释特征摘要与性能对比,为临床决策与随访管理提供可靠参考。

电商增长与推荐运营

利用用户浏览与购买行为,一键优化推荐与转化预测;自动对比多算法并输出部署包,支持AB测试与持续迭代。

特征总结

一键跑通从数据清洗到部署全流程,自动生成详尽报告与可上线模型包
智能特征工程自动生成关键变量并排序,显著提升预测能力与业务可解释性
多模型自动比较与评估,一键选出更优方案,减少反复试错与时间消耗
自动调参围绕指定指标优化表现,快速逼近最佳结果,稳定提升模型精度
动态结构优化适配不同数据与任务,轻松应对金融、医疗、推荐等场景
模板化流程与参数化配置,按行业需求快速定制,批量复用降低人力成本
自动生成清洗步骤、特征重要性、性能对比等报告,方便团队协作与决策
规范化数据使用与隐私保护提醒,确保项目合规,降低数据风险与成本
分步式执行与深度推理,确保每一步逻辑严谨,输出结果可落地可追溯
支持分类、回归、推荐等任务,一键调用即可获得贴合业务的高性能模型

如何使用购买的提示词模板

1. 直接在外部 Chat 应用中使用

将模板生成的提示词复制粘贴到您常用的 Chat 应用(如 ChatGPT、Claude 等),即可直接对话使用,无需额外开发。适合个人快速体验和轻量使用场景。

2. 发布为 API 接口调用

把提示词模板转化为 API,您的程序可任意修改模板参数,通过接口直接调用,轻松实现自动化与批量处理。适合开发者集成与业务系统嵌入。

3. 在 MCP Client 中配置使用

在 MCP client 中配置对应的 server 地址,让您的 AI 应用自动调用提示词模板。适合高级用户和团队协作,让提示词在不同 AI 工具间无缝衔接。

AI 提示词价格
¥30.00元
先用后买,用好了再付款,超安全!

您购买后可以获得什么

获得完整提示词模板
- 共 654 tokens
- 5 个可调节参数
{ 输入数据集 } { 任务类型 } { 目标性能指标 } { 特定业务要求 } { 数据质量说明 }
获得社区贡献内容的使用权
- 精选社区优质案例,助您快速上手提示词
使用提示词兑换券,低至 ¥ 9.9
了解兑换券 →
限时半价

不要错过!

半价获取高级提示词-优惠即将到期

17
:
23
小时
:
59
分钟
:
59