数据集质量提升方法及代码实现

数据集质量评估和持续优化机制 数据集质量评估和持续优化机制 作者:禅与计算机程序设计艺术 1. 背景介绍 在当今大数据时代,数据已经成为企业和组织最宝贵的资产之一。高质量的数据集是构建可靠的机器学习模型和人工智能系统的关键基础。然而,在实际应用中,我们经常面临着数据质量参差不齐、数据标签缺失或存在偏差、数据分 阅读详情

本文系Subson原创,转载请注明。


前言

该方法针对已明确类别的文档组成的数据集进行质量提升,其代价是数据集变小。

数据集【dataset】由大量的文档【document】构成,文档由单词【word】构成,所有不同的词共同构成数据集的词典【dictionary】,将数据集聚类为多个族簇【cluster】。

主要思想

计算数据集的词典中所有词的熵【entropy】,熵越小说明该词的类别区分性越强。对于每一个词,在熵的基础上,通过比较该词在各个类中的频数,取较大者确定该词所属的类,即将该词确定为该类的特征词【feature】。

熵计算公式:

H(w)=−∑Cp(c|w)logp(c|w)

p(c|w)=number of words in clusternumber of words in dataset

公式说明:符号 c 表示类别,符号w表示单词,符号 C 表示所有类别,p(c|w)表示单词 w 属于c类的概率, H(w) 表示单词 w 的熵。

确定每个类的所有特征词之后,从每个类中选出M个特征词确定为该类的特征空间。对于每个类中的所有文档,找出同时包含该类特征空间中任意 N (N≤M)个特征的所有文档。

代码说明

该方法需要数据集以JSON的格式的文件输入,并且文档以分词结果表示。例如:
{“text”: “blog data perform database”, “cluster”: “computer”}
说明:text表示文档,cluster表示文档的类别。
数据预处理

数据预处理类Pretreatment的构造函数包含7个参数,dataDir表示数据源路径,removeNonWord表示是否移除不规范的单词,removeLowFrequencyWords表示是否移除出现次数过少的单词,lessNum表示单词出现次数小于lessNum的单词为低频词,removeSubstandardDocuments表示是否移除不规范的文档,minLen和maxLen分别表示单词数小于minLen或者大于maxLen的文档为不规范文档,scrDir表示处理后的数据存放地址。

该模块并不是必须的,可以选择不运行或舍弃。

/**
 * @author Subson Bigod
 * @email  subsontding@gmail.com
**/
public class Pretreatment {

    private List<String> dataSet = new ArrayList<String>();

    public Pretreatment(
            String dataDir, 
            boolean removeNonWord, 
            boolean removeLowFrequencyWords, 
            int lessNum, 
            boolean removeSubstandardDocuments, 
            int minLen, 
            int maxLen, 
            String scrDir) 
                    throws Exception {
        dataSet = FileUtil.fileToList(dataDir);
        if (removeNonWord) {
            long st = System.currentTimeMillis();
            removeNonWord();
            long et = System.currentTimeMillis();
            System.out.println("Remove non-word takes " + 
            (et-st)/1000.0 + " seconds.");
        }
        if (removeLowFrequencyWords) {
            long st = System.currentTimeMillis();
            removeLowFrequencyWords(lessNum);
            long et = System.currentTimeMillis();
            System.out.println("Remove low frequency word takes " + 
            (et-st)/1000.0 + " seconds.");
        }
        if (removeSubstandardDocuments) {
            long st = System.currentTimeMillis();
            removeSubstandardDocuments(minLen, maxLen);
            long et = System.currentTimeMillis();
            System.out.println("Remove substandard documents takes " + 
            (et-st)/1000.0 + " seconds.");
        }
        FileUtil.listToFile(dataSet, scrDir);
    }

    private void removeNonWord () throws Exception {
        for (int i = 0; i < dataSet.size(); i++) {
            String doc = dataSet.get(i);
            JSONObject obj = new JSONObject(doc);
            String text = obj.getString("text");
            String cluster = obj.getString("cluster");
            StringBuffer sb = new StringBuffer();
            sb.append("{\"text\": \"");
            for (String word : text.split("\\s+")) {
                if (StrUtil.isLetter(word)) continue;
                if (StrUtil.isLetters(word)) 
                    sb.append(word).append(" ");
            }
            sb.append("\", \"cluster\": \"").append(cluster).append("\"}");
            dataSet.set(i, sb.toString());
        }
    }

    private void removeLowFrequencyWords (int lessNum) throws Exception {
        List<String> LFWords = new ArrayList<String>();
        new DocumentSet(dataSet, lessNum, LFWords);
        for (int i = 0; i < dataSet.size(); i++) {
            String doc = dataSet.get(i);
            JSONObject obj = new JSONObject(doc);
            String text = obj.getString("text");
            String cluster = obj.getString("cluster");
            StringBuffer sb = new StringBuffer();
            sb.append("{\"text\": \"");
            for (String word : text.split("\\s+")) {
                if (LFWords.contains(word)) continue;
                sb.append(word).append(" ");
            }
            sb.append("\", \"cluster\": \"").append(cluster).append("\"}");
            dataSet.set(i, sb.toString());
        }
    }

    private void removeSubstandardDocuments (int minLen, int maxLen) 
            throws Exception {
        for (int i = 0; i < dataSet.size(); i++) {
            String doc = dataSet.get(i);
            JSONObject obj = new JSONObject(doc);
            String text = obj.getString("text");
            int len = text.split("\\s+").length;
            if (len<minLen || len>maxLen) dataSet.remove(i);
        }
    }

}
特征选择获取

特征选择获取类FeatureObtain的构造函数包含2个参数,dataDir表示数据源路径,increment表示频数增量,在计算熵值的时候,为了避免对数计算错误(存在对数的真数为0的情况)以及以下特殊情况而设计。

例如,当数据集词典中的多个单词在各个类别中的频数为以下情况:

WordscomputersocietymathH(w) when inc=0.0H(w) when inc=0.5H(w) when inc=1.0
blog1+inc0+inc0+incNaN1.3711.5
data10+inc0+inc0+incNaN0.5130.7732
perform0+inc100+inc0+incNaN0.08970.1576
database1000+inc0+inc0+incNaN0.01240.0228

形如上表,当某词仅仅在某一个类中出现时,不论其出现次数多寡,该词的熵都为0。显然某词在仅在某类中出现多次更具有特征性,故而设计一个增量,让这些词区别开来。

另外,该类提供多个方法用于保存其它信息,例如所有类下的单词频数、所有升序排列的特征等,限于篇幅,这些函数方法并未罗列,如有兴趣请至文末下载完整版。

/**
 * @author Subson Bigod
 * @email subsontding@gmail.com
 **/
public class FeatureObtain {

    private HashMap<String, HashMap<String, Integer>> clusterToWordToFreMapMap;
    private DocumentSet documentSet;

    private List<String> clusters;
    private HashMap<String, Integer> dictToFreMap;
    private List<String> dictionary;
    private HashMap<String, Double> dicToEntropyMap;

    public FeatureObtain(
            String dataDir, 
            double increment) 
                    throws Exception {
        clusterToWordToFreMapMap = new 
                HashMap<String, HashMap<String, Integer>>();
        documentSet = new DocumentSet(
                dataDir, 
                clusterToWordToFreMapMap);

        clusters = documentSet.getClusters();
        dictToFreMap = documentSet.getDictionaryToFreMap();
        dictionary = CollectionUtil.keysToList(dictToFreMap);
        dicToEntropyMap = new HashMap<String, Double>();
        calculateEntropy(increment);
    }

    public List<String> getClusters() {
        return clusters;
    }

    private void calculateEntropy(double increment) throws Exception {
        for (String cluster : clusters) {
            HashMap<String, Integer> wordToFreMap = 
                    clusterToWordToFreMapMap.get(cluster);
            for (String dic : dictionary) {
                double entropy = 0.0;
                if (dicToEntropyMap.containsKey(dic)) {
                    entropy = dicToEntropyMap.get(dic);
                }
                double fre;
                if (wordToFreMap.containsKey(dic)) {
                    fre = wordToFreMap.get(dic) + increment;
                } else {
                    fre = increment;
                }
                double allFre = dictToFreMap.get(dic) + 3 * increment;
                entropy += entropy(fre/allFre, 2.0);
                dicToEntropyMap.put(dic, entropy);
            }
        }
    }

    private double entropy(double p_c_w, double base) 
            throws Exception {
        if (p_c_w < 0) 
            throw new Exception("Log of negative numbers is not defined.");
        if (p_c_w == 0.0) return 0.0;
        return -p_c_w * Math.log(p_c_w) / Math.log(base);
    }

    public Map<String, List<Map.Entry<String, Double>>> getClusterToFeaturesMap () {
        Map<String, String> dicCusterMap = new HashMap<String, String>();
        Map<String, Integer> dicFreMap = new HashMap<String, Integer>();
        for (String cluster : clusters) {
            HashMap<String, Integer> wordToFreMap = 
                    clusterToWordToFreMapMap.get(cluster);
            for (String dic : dictionary) {
                if (wordToFreMap.containsKey(dic)) {
                    if ((!dicFreMap.containsKey(dic)) || 
                            wordToFreMap.get(dic) > dicFreMap.get(dic)) {
                        dicFreMap.put(dic, wordToFreMap.get(dic));
                        dicCusterMap.put(dic, cluster);
                    }
                }
            }
        }

        HashMap<String, HashMap<String, Double>> clusterWordToEntropy = 
                new HashMap<String, HashMap<String, Double>>();
        for (String dic : dictionary) {
            if (!dicCusterMap.containsKey(dic)) continue;
            String cluster = dicCusterMap.get(dic);
            double entropt = dicToEntropyMap.get(dic);

            HashMap<String, Double> map;
            if (clusterWordToEntropy.containsKey(cluster)) {
                map = clusterWordToEntropy.get(cluster);
            } else {
                map = new HashMap<String, Double>();
            }
            map.put(dic, entropt);

            clusterWordToEntropy.put(cluster, map);
        }

        HashMap<String, List<Map.Entry<String, Double>>> result = 
                new HashMap<String, List<Map.Entry<String, Double>>>();
        for (String cluster : clusters) {
            List<Map.Entry<String, Double>> clusterFeatures = 
                    CollectionUtil.sortMapByValue(clusterWordToEntropy.get(cluster)); 
            result.put(cluster, clusterFeatures);
        }
        return result;
    }

}
数据集质量提升

数据集质量提升类DSQImpro的构造函数包含5个参数,dataDir表示数据源路径,clusterFeatures表示每个类的所有特征(其按照升序排列),influentialFeatureNum表示起作用(构成影响)的特征数量,subClusterDocumentLength表示每个类的所需要的文档长度,subDataSet表示得到的新的质量提升后的数据集。

/**
 * @author Subson Bigod
 * @email  subsontding@gmail.com
**/
public class DSQImpro {

    private List<String> dataSet = new ArrayList<String>();

    public DSQImpro(
            String dataDir, 
            Map<String, List<String>> clusterFeatures, 
            int influentialFeatureNum, 
            Map<String, Integer> subClusterDocumentLength, 
            ArrayList<String> subDataSet) 
                    throws Exception {
        dataSet = FileUtil.fileToList(dataDir);

        List<String> clusters = CollectionUtil.keysToList(clusterFeatures);
        int maxfeatureNum = 100000000;
        for (String cluster : clusters) {
            int featureNum = clusterFeatures.get(cluster).size();
            if (maxfeatureNum > featureNum) maxfeatureNum = featureNum;
        }
        if (influentialFeatureNum > maxfeatureNum) 
            influentialFeatureNum = maxfeatureNum;
        boolean isEnd = false;
        List<String> subDataSetMessage = new ArrayList<String>();
        for (int i = influentialFeatureNum; i > 0; i--) {
            if (isEnd) break;
            for (int j = i; j < influentialFeatureNum; j++) {
                if (isEnd) break;
                int accordTimes = 0;
                subDataSetMessage.clear();
                subDataSet.clear();
                for (String cluster : clusters) {
                    ArrayList<String> subClusterDocuments = 
                            getMoreContainFeaturesDocuments(
                                    cluster, 
                                    clusterFeatures.get(cluster), 
                                    j, 
                                    i);
                    if (subClusterDocuments.size() < 
                    subClusterDocumentLength.get(cluster)) {
                        break;
                    } else {
                        accordTimes++;
                    }
                    subDataSetMessage.add("Cluster " + cluster + 
                            "\'s documents Number of subDataSet is " + 
                            subClusterDocuments.size() + ".");
                    subDataSet.addAll(subClusterDocuments);
                    if (accordTimes==clusters.size()) {
                        isEnd = true;
                        for (String eachSubDataSetMessage : subDataSetMessage) {
                            System.out.println(eachSubDataSetMessage);
                        }
                        System.out.println(
                                "getMoreContainFeaturesDocuments("+j+","+i+").");
                    }
                }
            }
        }
    }

    private ArrayList<String> getMoreContainFeaturesDocuments (
            String clustering, 
            List<String> clusterFeatures, 
            int logicOrFeatureNum, 
            int logicAndFeatureNum) 
                    throws Exception {
        ArrayList<String> subDataSet = new ArrayList<String>();
        for (int i = 0; i < dataSet.size(); i++) {
            String line = dataSet.get(i);
            JSONObject obj = new JSONObject(line);
            String text = obj.getString("text");
            String cluster = obj.getString("cluster");
            if (cluster.equals(clustering)) {
                int containFeaturesNum = 0;
                for (int j = 0; j < logicOrFeatureNum; j++) {
                    if (text.contains(clusterFeatures.get(j)+" ")) {
                        containFeaturesNum++;
                        if (containFeaturesNum >= logicAndFeatureNum) {
                            subDataSet.add(line);
                            break;
                        }
                    }
                }
            }
        }
        return subDataSet;
    }

}

值得注意的是,clusterFeatures需要的是Map<String, List<String>>,但是特征选择得到的每个类的所有特征采用Map<String, List<Map.Entry<String,  Double>>>进行包装的,故需要转换。另外,subClusterDocumentLength参数需要采用Map<String, Integer>进行包装。例如:

//change the type of the features of each cluster for DSQImpro's input
//"Map<String, List<Map.Entry<String, Double>>>" to "Map<String, List<String>>"
Map<String, List<String>> clusterFeatureList = 
        new HashMap<String, List<String>>();
for (String cluster : featureObtain.getClusters()) {
    List<Map.Entry<String, Double>> featureToEntropy = 
            clusterFeatures.get(cluster);
    List<String> features = new ArrayList<String>();
    for (Entry<String, Double> feature : featureToEntropy) {
        features.add(feature.getKey());
    }
    clusterFeatureList.put(cluster, features);
}

//initialize parameters for DSQImpro's input
//the "Map<String, Integer>" save the numbers of document of each cluster
Map<String, Integer> subClusterDocumentLength = 
        new HashMap<String, Integer>();
for (String cluster : featureObtain.getClusters()) {
    subClusterDocumentLength.put(cluster, 200);
}

后记

该数据集质量提升方法可用于提升单个数据集质量,同样也可以提升多个相对应关联数据集的质量。限于笔者水平有限,如有错误与建议,望请不惜赐教。

联系方式:subsontding@gmail.com

具体java代码实现见DSQImpro。


本文系Subson原创,转载请注明。

数据集可视化分析:直观发现数据质量问题 数据集可视化分析:直观发现数据质量问题 关键词: 数据质量评估 数据集可视化 数据清洗 数据分析 数据可视化工具 数据治理 阅读详情

相关推荐

自抗扰控制ADRC原理解析及案例应用

ESO的设计通常基于系统动态方程的线性化或近似模型,其输出包括系统状态的估计值和总扰动的估计值。非线性状态误差反馈控制律(Nonlinear State Error Feedback,NLSEF)是ADRC的最后一个环节,负责根据ESO和TD提供的信息生成控制信号。ADRC的另一个重要发展方向是与其他控制策略的融合,如模糊控制、神经网络和自适应控制等,以进一步提高系统的鲁棒性和适应性。ADRC的参数主要包括扩张状态观测器(ESO)的参数和非线性状态误差反馈控制律(NLSEF)的参数。

LIUMAO99的博客 9277

数据工程系列精讲(第五讲): Data-centric AI之数据集质量

前言我们之前详细介绍了Data-centric AI的两个核心即特征工程和样本工程,让大家对特征工程的方法论以及样本工程的艺术特质有了更多更深的理解,本文我们继续介绍Data-centric AI的第三个核心即数据集质量。数据集的质量再如何强调都不过分,我认为在数据这个领域,数据集的质量就是第一要务。对于机器学习来说,没有高质量的数据集作为前提,模型就学习不到有用的知识,...

亚马逊云科技专栏 1261

金蝶K3系统物料主数据后台表对应字段一览

我们说到物料表,一般是指t_icitem,但正确的说t_icitem并不是一张有,而是一张视图,不过我们对于数据库物料表中的大部分操作,都是通过此视图来完成。比如经常通过此视图,来成批修改数量,单价精度,是否启用批次等一些字段,有的时候,对于账套已经启用,并且已经有业务发生的物料,有一些关键属性也需要通过修改物料表t_icitem来进行。 当然修改的时候,需要考虑一些前提条件的。 比如说我有一个客户新建的账套,在月底结账时发现,要改一种成本核算方法,启用时用的是加权平法,现在想改成移动平均法,这样的情况,

hzfw2008的博客 1万+

Facets:快速评估数据集质量,把控数据分析核心环节

在机器学习任务中,数据集的质量优劣对数据分析的结果影响非常大,所谓Garbage in, garbage out,数据决定模型的上限,因此数据质量成为数据分析流程不可或缺的一个环节。即使是像Kaggle那样主办方已经把数据集准备好的场景,也需要评估train set和test set的分布是否一致,存不存在偏斜等。如果两者不一致,可能会导致离线cv分数非常高,可是在leaderborad却下跌了很...

u013328485的专栏 3965

【对比学习+分割】CRIS:CLIP驱动RIS图像分割(CVPR 2022)

CRIS: CLIP-Driven Referring Image Segmentation

这个博客太懒了什么都没说 3324

Silvaco TCAD 2018安装后,如何配置TonyPlot 5.0.22.R并解决绘图报错?

本文详细介绍了在Windows系统上安装Silvaco TCAD 2018后,如何正确配置TonyPlot 5.0.22.R并解决常见的绘图报错问题。内容包括版本兼容性分析、环境变量设置、常见错误解决方案以及性能优化建议,帮助用户顺利完成仿真结果的可视化工作。

weixin_31031711的博客 419

高质量数据集的“高质量”包含哪些要素

所谓的语料就是我们俗称的“AI训练数据集”,AI训练数据集是现代数据分析和机器学习的基础。它们是用于构建模型的训练数据、用于评估模型的测试数据和用于推断模型的数据的集合。那么如何定义AI训练数据集的高质量呢?

biaobei的博客 3162

Cherry Studio部署MCP服务报错全记录:从零解决‘Connection closed‘问题

本文详细记录了在Cherry Studio中部署MCP服务时遇到‘Connection closed’报错的完整排查与解决过程。文章从环境依赖(UV、Bun)的安装验证、绝对路径配置、网络镜像源设置,到服务端手动调试与Cherry Studio配置检查,提供了一套系统性的解决方案,帮助开发者彻底解决此类连接问题。

g9h0i1的博客 761

[论文阅读] 人工智能 + 软件工程 | CodableLLM:让代码数据集生成自动化,架起源代码与反编译代码的桥梁

本文围绕论文《CodableLLM: Automating Decompiled and Source Code Mapping for LLM Dataset Generation》展开,介绍了CodableLLM这一开源Python框架。首先阐述了代码领域中,包含源代码与反编译代码的高质量数据集生成面临的困境;接着介绍了主要作者及单位;随后重点分析了该框架的创新点,包括其作为首个专注此领域的开源框架、可扩展性强等;还拆解了其研究方法和实验方法,以及带来的主要贡献,如降低数据集生成门槛、推动相关LLM发展

张较瘦 1300

Windows本地部署Ollama+qwen本地大语言模型Web交互界面并实现公网访问

本文主要介绍如何在Windows系统快速部署Ollama开源大语言模型运行工具,并安装Open WebUI结合cpolar内网穿透软件,实现在公网环境也能访问你在本地内网搭建的大语言模型运行环境。近些年来随着ChatGPT的兴起,大语言模型 LLM(Large Language Model)也成为了人工智能AI领域的热门话题,很多大厂也都推出了自己的大语言模型,并或多或少的开源了自己的大语言模型,今天就来分享一个最近很火,且对于小白来说比较好上手本地部署的运行本地LLM的工具Ollama。

迪之的博客 1651

使用CUDA进行按流排序的内存分配的示例程序

在GPU编程中,按流排序的内存分配是一种常见的优化技术,它可以提高内存访问的效率。通过将内存分配与特定的CUDA流相关联,可以确保在GPU上的并发操作期间,内存分配操作与其他GPU计算操作同时进行,从而减少了潜在的内存访问延迟。请注意,上述示例中的代码仅供参考,并可能需要根据实际需求进行修改和调整。此外,为了完整性,我们省略了一些细节,例如主机指针的分配和释放,以及错误处理和错误检查等。在该示例中,我们创建了4个CUDA流,并使用内存池进行内存分配。然后,我们在每个流上执行了相应的内存访问操作,并使用。

Byte_O_O的博客 281

OpenChat-3.5-1210-openmind数据集深度解析:混合质量数据如何实现模型性能突破 [特殊字符]

OpenChat-3.5-1210-openmind是一个基于Mistral-7B模型的先进开源语言模型,它通过创新的混合质量数据训练策略,在聊天、编码和数学推理等多个领域都展现出了卓越的性能表现。这个项目的核心在于其精心设计的数据集组合方法,通过整合多种不同质量的数据源,实现了模型能力的全面提升。 ## 混合质量数据:OpenChat成功的关键秘诀 🔑 OpenChat-3.5-1210-

gitblog_01095的博客 340

海康网口相机不能被flexscan3d识别到MVS版本为4.6.1,flex为3.3.24在MVS中能够检测到,但是在flex中只能看到电脑自带相机,如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1040

最新AI大模型数据集解决方案:分享两种AI高质量代码数据集生产方案

最新AI大模型数据集解决方案:分享两种AI高质量代码数据集生产方案 ,你知道哪些?随着AI大模型技术的快速发展,自动化的数据抓取工具逐渐成为了主流,尤其是在需要快速、高效、可定制化的数据抓取时,Web Scraper API工具成为了许多开发者和数据科学家的首选工具。与第一种方式不同,Web Scraper API工具提供了图形化界面以及灵活的配置选项,能够帮助用户更快、更高效地抓取数据。Web Scraper API工具允许用户通过简单的配置,指定抓取的目标网站及数据源。最新AI大模型数据集解决方案

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 5万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

高质量数据集到底是什么?

数据集,是由一系列数据所组成的集合。在我国针对数据质量管理的国家标准GB/T 36344-2018《信息技术 数据质量评价指标》中,将数据集定义为“具有一定主题,可以标识并可以被计算机化处理的数据集合。数据集是机器学习和统计建模的基础,它提供了算法学习所需的“食材”,是智能应用背后的“智慧源泉。”中国人民大学科学研究处钱明辉表示,数据集已从传统的“数据集合”概念,演化为驱动人工智能系统构建、训练、部署、进化的基础性资源。无论是支撑AI模型能力提升,还是实现行业应用落地,选择适配场景的数据集类型,构建科学合理

qq_41670162的博客 4951

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

高质量数据集建设的方法论

高质量数据集建设不是对既有数据进行一次更严格的清洗,也不是把采集、治理、标注和质检依次连接起来。它真正要解决的问题,是如何把现实中的业务问题,持续转化为模型可以学习、评测和应用的能力。

qq_31260077的博客 1140

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

高质量数据集建设

高质量数据集是经采集、加工,可直接用于AI模型开发训练,且能提升模型表现的数据集合特征:描述样本属性的输入变量(如鸢尾花数据集的花萼长度、宽度);标签:模型预测的目标输出(如ImageNet图像的类别标注);元数据:记录数据生成与处理信息(采集时间、来源、标注规范);样本:由特征向量与标签组成的基本单元。其“高质量”体现在五大维度:规模“大”、安全“牢”、观点“正”、效果“好”、应用“广”,并通过静态(准确性、完整性、合规性等)与动态(模型性能提升度)方法双重评价。

m0_64616651的博客 1642

什么是高质量数据集?如何建设高质量数据集?

摘要: 高质量数据集是AI训练的基础,需具备完整性、准确性等标准。当前全球开源数据集中英语占比56.9%,中文仅5.6%,制约中国AI发展。数据集短缺源于标准缺失、共享不足等问题,影响模型效果。评估数据集需从定量、定性多维度分析,包括规范性、均衡性等指标。AI大模型是未来趋势,学习资源包括路线图、面试题等可免费获取,助力零基础者入门。(150字)

2401_85725028的博客 829

如何构建高质量微调数据集:从理论到实践

在用自建数据库做的时候,感觉数据工程并不是一锤子买卖,而是贯穿模型生命周期的持续过程。一个好的数据,一个好的特征工程,无论是之前做的机器学习、深度学习、大数据,都是至关重要的。数据质量:需收集多样化的故障样本(如不同转速、负载下的振动信号),确保数据真实且标注准确(结合传感器数据和维修记录验证)。工程化处理:振动信号需标准化(去噪、归一化),转换为模型可处理的时序特征(如FFT频谱图+统计特征)。评估优化:划分数据时需覆盖所有故障类型,加入健康状态样本作对比,持续监控模型在未知故障模式上的表现。

Siyu_Zhu的博客 1719

2025高质量数据集实践指南

关注博文底部公众号,发送标题关键字获取文档。 3446

模型训练的数据集挖掘:如何构建高质量的标签数据集

1.背景介绍 随着人工智能技术的不断发展,模型训练的数据集挖掘变得越来越重要。在模型训练过程中,数据集的质量直接影响了模型的性能。因此,构建高质量的标签数据集成为模型训练的关键。本文将从以下几个方面进行阐述: 背景介绍 核心概念与联系 核心算法原理和具体操作步骤以及数学模型公式详细讲解 具体代码实例和详细解释说明 未来发展趋势与挑战 附录常见问题与解答 1.1 背景介绍 数据集挖掘是指...

AI天才研究院 1872

数据质量-如何构建高质量的大模型数据集

1、重要性:数据质量 > 数据数量 2、数据质量提升原则:提升数据多样性和分布和提升数据质量和高质量数据数量 3、具体如何提升:针对传统NN任务、LLM任务和MLLMs任务,方法和侧重点不一样 4、如何使用这些方法:将这些方法做成算子写入pipeline框架进行大规模使用

lovep1的博客 2711

高质量数据集到底如何评价

高质量数据集评价,不是为了给一个分数,而是为了判断这套数据能不能用、怎么用、风险在哪里、价值是否成立,以及下一版本应该如何改进。

qq_31260077的博客 805

数据集评估方法论:如何衡量LLM数据集质量的5个维度

在大语言模型(LLM)开发过程中,数据质量直接决定了模型性能的上限。掌握正确的**LLM数据集评估**方法,能够帮助开发者快速筛选高质量的训练样本,构建更强大的AI助手。本文将详细介绍评估数据集质量的5个关键维度,为您的模型训练提供实用指导。 ## 📊 1. 准确性维度:确保事实正确性 **数据准确性**是评估LLM数据集质量的首要标准。高质量的样本应该做到事实正确且与对应指令相关。在实际评

gitblog_00487的博客 893

【学习笔记】高质量数据集

数字化转型中,高质量数据集是企业决策和AI应用的基础。优质数据需具备准确性、完整性、一致性和时效性四大特征。建设过程包含七大环节:明确业务目标、设计数据架构、制定统一标准、建立质量监控、实施数据治理、选择技术工具和培养数据文化。评估需建立静态(文档完整性、质量合规性)和动态(场景适用性)指标体系,采用事前规划-事中监控-事后复盘的闭环管理,通过持续优化实现数据质量的螺旋式提升。

tpriwwq的专栏 2425

高质量数据集到底是什么

高质量数据集,是面向人工智能模型和行业应用,将分散数据、业务知识、专家经验和场景样本组织成模型可以学习、验证、复用和持续迭代的数据能力载体。

qq_31260077的博客 968
下一篇: A Tutorial on Clustering Algorithms - Introduction【翻译】
Subson
博客等级 码龄12年 31粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值