03_特征工程—特征转换

Spark MLlib 特征工程系列—特征转换StringIndexer和IndexToString 是一种将类别型数据转换为数值索引的工具,适用于各种机器学习任务。该转换器按类别的出现频率分配索引值,最常见的类别分配为 0,依次类推。它可以通过参数来处理未知类别,提供了灵活的选项。对于需要将索引值转换回原始类别标签的情况,可以使用。通过的使用,你可以轻松地将类别型特征纳入机器学习模型中,使其适应各种算法的输入要求。 阅读详情

一、特征转换概念

特征转换主要指将原始数据中的字段数据进行转换操作,从而得到适合进行算法模型构建的输入数据(数值型数据),在这个过程中主要包括但不限于以下几种数据的处理:

  • 文本数据转换为数值型数据
  • 缺省值填充
  • 定性特征属性哑编码
  • 定量特征属性二值化
  • 特征标准化与归一化

二、分词

分词是指将文本数据转换为一个一个的单词,是NLP自然语言处理过程中的基础;因为对于文本信息来讲,我们可以认为文本中的单词可以体现文本的特征信息,所以在进行自然语言相关的机器学习的时候,第一操作就是需要将文本信息转换为单词序列,使用单词序列来表达文本的特征信息。

2.1 分词

分词: 通过某种技术将连续的文本分隔成更具有语言语义学上意义的词。这个过程就叫做分词。

分词的常见方法

  • 按照文本/单词特征进行划分:对于英文文档,可以基于空格进行单词划分。
  • 词典匹配:匹配方式可以从左到右,从右到左。对于匹配中遇到的多种分段可能性,通常会选取分隔出来词的数目最小的。
  • 基于统计的方法:隐马尔可夫模型(HMM)、最大熵模型(ME),估计相邻汉字之间的关联性,进而实现切分。
  • 基于深度学习:神经网络抽取特征、联合建模。

2.2 Jieba分词

  • jieba:中文分词模块;
  • Python中汉字分词包:jieba
  • 安装方式: pip install jieba
  • Github:https://github.com/fxsjy/jieba

2.2.1 jieba分词原理

  • 字符串匹配:把汉字串与词典中的词条进行匹配,识别出一个词。
  • 理解分词法:通过分词子系统、句法语义子系统、总控部分来模拟人对句子的理解。(试验阶段)
  • 统计分词法:建立大规模语料库,通过隐马尔可夫模型或其他模型训练,进行分词(主流方法)

2.2.2 jieba分词使用

jieba分词模式:

  • 全模式 jieba.cut(str,cut_all=True)
  • 精确模式 jieba.cut(str)
  • 搜索引擎模式 jieba.cut_for_search(str)

分词特征提取: 返回TF/IDF权重最大的关键词,默认返回20个。
jieba.analyse.extract_tags(str,topK=20)

自定义词典: 帮助切分一些无法识别的新词,加载词典:jieba.load_userdict(‘dict.txt’)

调整词典: add_word(word, freq=None, tag=None) 和 del_word(word)可在程序中动态修改词典。使用suggest_freq(segment, tune=True) 可调节单个词语的词频。

三、特征转换 - 文本特征属性转换

机器学习的模型算法均要求输入的数据必须是数值型的,所以对于文本类型的特征属性,需要进行文本数据转换,也就是需要将文本数据转换为数值型数据。常用方式如下:

  • 词袋法(BOW/TF)
  • TF-IDF(Term frequency-inverse document frequency)
  • HashTF
  • Word2Vec(主要用于单词的相似性考量)

3.1 词袋法(BOW)

词袋法(Bag of words, BOW)是最早应用于NLP和IR领域的一种文本处理模型,该模型忽略文本的语法和语序,用一组无序的单词(words)来表达一段文字或者一个文档,词袋法中使用单词在文档中出现的次数(频数)来表示文档。

image-20220306070920428

3.2 词集法(SOW)

词集法(Set of words, SOW)是词袋法的一种变种,应用的比较多,和词袋法的原理一样,是以文档中的单词来表示文档的一种的模型,区别在于:词袋法使用的是单词的频数,而在词集法中使用的是单词是否出现,如果出现赋值为1,否则为0。

image-20220306070933497

3.3 TF-IDF

在词袋法或者词集法中,使用的是单词的词频或者是否存在来进行表示文档特征,但是不同的单词在不同文档中出现的次数不同,而且有些单词仅仅在某一些文档中出现(eg:专业名称等等),也就是说不同单词对于文本而言具有不同的重要性,那么,如何评估一个单词对于一个文本的重要性呢?

  • 单词的重要性随着它在文本中出现的次数成正比增加,也就是单词的出现次数越多,该单词对于文本的重要性就越高。
  • 同时单词的重要性会随着在语料库中出现的频率成反比下降,也就是单词在语料库中出现的频率越高,表示该单词与常见,也就是该单词对于文本的重要性越低。

3.3.1 TF-IDF 概念

  • TF-IDF(Term frequency-inverse document frequency)是一种常用的用于信息检索与数据挖掘的常用加权技术,TF的意思是词频(TermFrequency),IDF的意思是逆向文件频率(Inverse DocumentFrequency)。
  • TF-IDF可以反映语料中单词对文档/文本的重要程度。

3.3.2 TF-IDF 计算

  • 假设单词用t表示,文档用d表示,语料库用D表示,那么N(t,D)表示包含单词t的文档数量,|D|表示文档数量,|d|表示文档d中的所有单词数量。N(t,d)表示在文档d中单词t出现的次数。

image-20220306071907056

  • TF-IDF除了使用默认的tf和idf公式外,tf和idf公式还可以使用一些扩展之后公式来进行指标的计算,常用的公式有:

image-20220306072055937

3.3.3 TF-IDF 例子

有两个文档,单词统计如下,请分别计算各个单词在文档中的TF-IDF值以及这些文档使用单词表示的特征向量。

image-20220306072241461

3.4 HashTF-IDF

  • 不管是前面的词袋法还是TF-IDF,都避免不了计算文档中单词的词频,当文档数量比较少、单词数量比较少的时候,我们的计算量不会太大,但是当这个数量上升到一定程度的时候,程序的计算效率就会降低下去,这个时候可以通过HashTF的形式来解决该问题。HashTF的计算规则是:在计算过程中,不计算词频,而是计算单词进行hash后的hash值对应的样本的数量(有的模型中可能存在正则化操作);
  • HashTF的特点:运行速度快,但是无法获取高频词,有可能存在单词碰撞问题(hash值一样)

3.5 Scikit Text Feature Extraction

在scikit中,对于文本数据主要提供了三种方式将文本数据转换为数值型的特征向量,同时提供了一种对TF-IDF公式改版的公式。所有的转换方式均位于模块:sklearn.feature_extraction.text

image-20220306072533348

四、特征转换 - 缺省值处理

缺省值是数据中最常见的一个问题,处理缺省值有很多方式,主要包括以下四个步骤进行缺省值处理:

  • 确定缺省值范围。
  • 去除不需要的字段。
  • 填充缺省值内容。
  • 重新获取数据。

注意:最重要的是缺省值内容填充。

4.1 确定缺省值范围

在进行确定缺省值范围的时候,对每个字段都计算其缺失比例,然后按照缺失比例和字段重要性分别指定不同的策略。

image-20220306073254487

4.2 去除不需要的字段

在进行去除不需要的字段的时候,需要注意的是:删除操作最好不要直接操作与原始数据上,最好的是抽取部分数据进行删除字段后的模型构建,查看模型效果,如果效果不错,那么再到全量数据上进行删除字段操作。总而言之:该过程简单但是必须慎用,不过一般效果不错,删除一些丢失率高以及重要性低的数据可以降低模型的训练复杂度,同时又不会降低模型的效果。

4.3 填充缺省值方法(重要)

填充缺省值内容是一个比较重要的过程,也是我们常用的一种缺省值解决方案,一般采用下面几种方式进行数据的填充:

  • 以业务知识或经验推测填充缺省值。
  • 以同一字段指标的计算结果(均值、中位数、众数等)填充缺省值。
  • 以不同字段指标的计算结果来推测性的填充缺省值,比如通过身份证号码计算年龄、通过收货地址来推测家庭住址、通过访问的IP地址来推测家庭/公司/学校的家。

4.4 重新获取数据

如果某些指标非常重要,但是缺失率有比较高,而且通过其它字段没法比较精准的计算出指标值的情况下,那么就需要和数据产生方(业务人员、数据收集人员等)沟通协商,是否可以通过其它的渠道获取相关的数据,也就是进行重新获取数据的操作。

4.5 scikit中通过Imputer类实现缺省值的填充

  • 对于缺省的数据,在处理之前一定需要进行预处理操作,一般采用中位数、均值或者众数来进行填充,在scikit中主要通过Imputer类来实现对缺省值的填充。
  • axis = 0 ,按列填充
  • axis =1 ,按行填充

思考:按行填充好,还是按列填充好?

  • 当然是按列填充好。 因为每列表示的都是属性,我要填充,自然需要和同一个属性内的各个值进行对比。如果按行填充,那么一个身高,一个体重的值,我们怎么分析都不知道该填充什么。

五、特征转换 - 哑编码

  • 哑编码(OneHotEncoder):对于定性的数据(也就是分类的数据),可以采用N位的状态寄存器来对N个状态进行编码,每个状态都有一个独立的寄存器位,并且在任意状态下只有一位有效;是一种常用的将特征数字化的方式。
  • 比如有一个特征属性:[‘male’,‘female’],那么male使用向量[1,0]表示,female使用[0,1]表示。

5.1 scikit中OneHotEncoder

from sklearn.preprocessing import OneHotEncoder

image-20220306081038695

六、特征转换 - 二值化

二值化(Binarizer):对于定量的数据(特征取值连续)根据给定的阈值,将其进行转换,如果大于阈值,那么赋值为1;否则赋值为0。

image-20220306081249110

七、特征转换 -标准化、区间缩放法(归一化)、正则化

7.1 标准化(z-score)列操作

标准化:基于特征属性的数据(也就是特征矩阵的列),获取均值和方差,然后将特征值转换至服从标准正态分布。计算公式如下:

image-20220306081530717

7.2 区间缩放法(归一化)

区间缩放法:是指按照数据的取值范围特性对数据进行缩放操作,将数据缩放到给定区间上,常用的计算方式如下:

image-20220306081654693

7.3 正则化(行操作)

正则化:和标准化不同,正则化是基于矩阵的行进行数据处理,其目的是将矩阵的行均转换为**“单位向量”**,l2规则转换公式如下:

image-20220306100424775

7.4 标准化、区间缩放法(归一化)、正则化 的区别

7.4.1 标准化

  • 标准化的目的是为了降低不同特征的不同范围的取值对于模型训练的影响;
  • 比如对于同一个特征,不同的样本的取值可能会相差的非常大,那么这个时候一些异常小或者异常大的数据可能会误导模型的正确率;另外如果数据在不同特征上的取值范围相差很大,那么也有可能导致最终训练出来的模型偏向于取值范围大的特征,特别是在使用梯度下降求解的算法中;
  • 通过改变数据的分布特征,具有以下两个好处:1. 提高迭代求解的收敛速度;2. 提高迭代求解的精度。

image-20220306100910620

7.4.2 归一化

  • 归一化 对于不同特征维度的伸缩变换的主要目的是为了使得不同维度度量之间特征具有可比性,同时不改变原始数据的分布(相同特性的特征转换后,还是具有相同特性)。
  • 和标准化一样,也属于一种无量纲化的操作方式。

7.4.3 正则化

  • 正则化 则是通过范数规则来约束特征属性,通过正则化我们可以降低数据训练处来的模型的过拟合可能,和之前在机器学习中所讲述的L1、L2正则的效果一样。
  • 在进行正则化操作的过程中,不会改变数据的分布情况,但是会改变数据特征之间的相关特性 。

7.4.4 备注

  • 广义上来讲,标准化、区间缩放法、正则化都是具有类似的功能。在有一些书籍上,将标准化、区间缩放法统称为标准化,把正则化称为归一化操作。
  • 如果面试有人问标准化和归一化的区别:标准化会改变数据的分布情况,归一化不会,标准化的主要作用是提高迭代速度,降低不同维度之间影响权重不一致的问题。

八、特征转换—数据多项式扩充变换

  • 多项式数据变换主要是指基于输入的特征数据按照既定的多项式规则构建更多的输出特征属性
  • 比如输入特征属性为[a,b],当设置degree为2的时候,那么输出的多项式特征为[1, a, b, a^2, ab,b^2]

image-20220306102028986

8.1 GBDT/RF+LR

  • 认为每个样本落在决策树的每个叶子上就表示属于一个类别,那么我们可以进行基于GBDT或者随机森林的维度扩展,经常我们会将其应用在GBDT将数据进行维度扩充,然后使用LR进行数据预测,这也是我们进行所说的GBDT+LR做预测。
  • 先通过GBDT,将原来样本中的维度进行扩展,然后将新生成的特征放到逻辑回归或线性回归中进行模型构建。

image-20220306102242665

Spark MLlib 特征工程系列—特征转换二值化器Binarizer Binarizer如果特征值大于或等于阈值,则输出 1。如果特征值小于阈值,则输出 0。y1如果x≥threshold0如果xthreshold1, & \text{如果 } x \geq \text{threshold} \\0, & \text{如果 } x < \text{threshold}y10​如果x≥threshold如果xthreshold​xxx是输入特征值。threshold是用户定义的阈值。Binarizer。 阅读详情

相关推荐

Spark MLlib 特征工程系列—特征转换RFormula

RFormula是 Spark MLlib 中的一个特征转换器,它允许用户使用类似 R 语言的公式来选择特征并构建数据模型。在机器学习任务中,我们常常需要将数据集中的多个列组合成一个特征向量,同时还要处理类别型数据。RFormula的优势在于,它能自动处理类别特征的编码并进行数值特征的组合,非常适合构建简单的机器学习模型。RFormula 是 Spark 中一种简单有效的特征转换工具,适合基于线性模型的场景。

2401_84052244的博客 3623

数据的特征转换

在前面我们了解到常用的特征变换方法有很多,今天我们主要介绍一下独热编码,也叫One-Hot编码,又称一位有效编码,是处理类型数据较好的方法,主要是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器,并且在任意时候只有一个编码有效。对于每一个特征,它有m个可能值,那么经过独热编码后,就变成了m个二元特征,并且这些特征之间是互斥的,每一次都只有一个被激活,这时原来的数据经过独热编码后会变成稀疏矩阵。

m0_73791036的博客 1191

【数据挖掘】金融风控 Task03 特征工程

【数据挖掘】金融风控 Task03 特征工程特征工程介绍数据预处理查找出对象和数值特征进行缺失值填充时间格式处理对象类特征的处理类别特征处理异常值的处理数据分箱固定宽度分箱分数位分箱卡方分箱和其他分箱方法的尝试特征交互特征编码特征选择 学习地址:https: //github.com/datawhalechina/team-learning-data-mining/tree/master/FinancialRiskControl 天池竞赛地址:https://tianchi.aliyun.com/comp

一一xi的博客 1225

机器学习-特征转换

特征转换

m0_49499340的博客 355

Spark MLlib 特征工程系列—特征转换OneHotEncoder

是一种将类别型特征转换为独热编码的工具,常用于机器学习模型中的类别型特征处理。独热编码是一种表示类别型数据的方式,通过将类别转换为二进制向量,简化了算法对类别特征的处理。Spark 中的自动采用稀疏向量表示法,并且为了避免多重共线性,编码向量的长度为N-1,其中N为类别的数量。在使用时,通常需要先通过将类别型字符串转换为数值索引,然后再进行独热编码。只能将数值索引转换为独热编码(One-Hot Encoding),而不能直接处理字符串类别。因此,在应用之前,必须先使用。

2401_84052244的博客 3664

Spark MLlib 特征工程系列—特征转换VectorSizeHint

是 Spark 中用于指定向量大小的工具,适用于数据处理和特征转换过程中需要明确向量维度的场景。通过显式指定向量大小,可以确保模型训练、转换和部署的稳定性,尤其是在向量大小不确定或数据质量不一致的情况下。在实际项目中,可以将与其他转换器配合使用,形成更健壮的数据处理流程。掌握的使用,可以帮助你在构建复杂的机器学习管道时,提升模型的稳定性和一致性。

2401_84052244的博客 3278

特征工程:常用的特征转换方法总结

机器学习模型的生命周期可以分为以下步骤: 数据采集 数据预处理 特征工程 特征选择 建筑模型 超参数调整 模型部署 要构建模型就必须要对数据进行预处理。 特征转换是这个过程中最重要的任务之一。 在数据集中,大多数时候都会有不同大小的数据。为了使更好的预测,必须将不同的特征缩小到相同的幅度范围或某些特定的数据分布。 什么时候需要特征转换 在 K-Nearest-Neighbors、SVM 和 K-means 等基于距离的算法中,它们会给具有较大值的特征更多的权重,因为距离是用数据点的值计算的。 如果我们提

deephub 7097

Spark MLlib 特征工程系列—特征转换VectorAssembler

是 Spark 中用于特征工程的重要工具,能够将多个列组合成单个向量列,以便直接输入到机器学习模型中。它接受数值列和向量列,并将它们整合成一个大的特征向量,这样可以简化数据准备流程。通过,你可以轻松地将多个特征组合起来,创建适合机器学习任务的特征向量。这种方法在构建机器学习管道时尤为重要,因为它确保了所有特征能够以统一的向量形式被处理,提高了代码的简洁性和可维护性。

2401_84052244的博客 3587

特征转换

特征转换就是对原始的特征变量进行转换处理,主要的原因是算法的需要,常做的特征转换有: 标准化处理:把特征变量转换成均值为0,方差为1 归一化处理:把特征变量转换为最小值为0,最大值为1 正则化处理:将每个样本在所有变量上的值缩放到单位范数(即每个样本在所有变量上的值的范数为1) 特征编码:例如常用的独热编码 ...

qq_35358021的博客 2294

Spark MLlib 特征工程系列—特征转换VectorIndexer

是一个用于自动处理类别型特征的工具,能够识别并转换向量数据中的类别型特征,使其适应机器学习算法。参数控制了类别型特征的识别标准,当特征的取值数量小于或等于这个值时,它会被视为类别型特征并进行编码。的使用场景非常广泛,特别是在处理既包含数值型特征又包含类别型特征的数据集时,可以极大地简化数据预处理的步骤。通过,你可以自动将混合类型的特征转换为合适的形式,这对于提高机器学习模型的准确性和稳定性非常有帮助。

8337

告别串口升级!手把手教你为STM32H750的W25Q32制作MDK下载算法(QSPI篇)

本文详细介绍了为STM32H750的W25Q32制作MDK下载算法(QSPI篇)的完整流程,帮助开发者告别低效的串口烧录方式。通过定制下载算法,可实现20倍以上的烧录速度提升,支持完整的调试功能,显著提高开发效率。文章涵盖环境准备、核心算法实现、性能优化及常见问题解决方案,适合嵌入式开发者参考。

weixin_30735745的博客 403

【特征转化】特征转化是为了保证很小的信息损失,但有高品质的预测结果。

特征工程是机器学习中不可或缺的一部分,在数据挖掘和机器学习领域中占有非常重要的地位。

qq1021091799qq的博客 660

Halcon: 获取仿射矩形-rectangle2的四个顶点、四条边的中点

Halcon 工业应用实用教程中的一个例子: * CenterY : 仿射矩形中心y * CenterX: 仿射矩形中心x * Phi: 仿射矩形角度 * Len1: 仿射矩形宽的一半 * Len2: 仿射矩形高的一半 * CornerY: 仿射矩形端点y * CornerX: 仿射矩形端点x * LineCenterY: 仿射矩形边中点y * LineCenterx: 仿射矩形边中点x * 矩...

ruotianxia的博客 8572

03 机器学习——特征工程

特征工程是机器学习中处理数据的关键步骤,通过专业技巧将数据转换为更适合算法的特征。主要包括特征提取、预处理和降维。在特征提取中,字典特征提取(如独热编码)将类别数据数值化;文本特征提取通过CountVectorizer统计词频或TfidfVectorizer计算词的重要性(TF-IDF)。TF-IDF衡量词在文档中的区分能力,公式结合词频(TF)和逆文档频率(IDF)。中文文本需借助jieba分词。特征工程直接影响模型效果,是机器学习流程中的重要环节。

mmmmm_111的博客 2022

告别硬编码!用Aviator 5.3.3实现动态规则引擎,Spring Boot项目实战教程

本文详细介绍了如何使用Aviator 5.3.3在Spring Boot项目中实现动态规则引擎,告别硬编码。通过Maven依赖集成、规则模型设计、规则执行引擎实现及电商促销系统实战案例,展示了Aviator在动态规则配置中的高效应用,提升业务灵活性和开发效率。

weixin_30329623的博客 446

51单片机基础知识

前言 周末闲着无聊,以后定时更新一期关于51单片机的学习案例,以供大家平时参考使用。至于单片机,你可以理解为人的大脑,而人各项身体器官的运作需要意识给到大脑,然后大脑再驱动我们的中枢神经进行相应的动作,这里的意识可以理解为我们要写的程序,而人的器官相当于各种输出设备,例如我们以后要学的LED、电机、各种传感器等等。学好单片机能让你找到一份相对不错的工作,当然越可观的东西也是要付出相应努力的。 一、51单片机是什么? 通常我们一说到 51 单片机,指的都是兼容IntelMCS-51体系架构的一系列单片机,而

qq_43537819的博客 6905

干货 :时间序列特征工程

前几次的分享,我们了解了时间序列分析的基础方法以及预测方法。在使用这些方法之前,一般需要我们对原始时序做一定的处理,抽取若干特征;再者,为了更充分了解时间序列,我们也需要挖掘时间序列的特...

数据分析 8138

5分钟搞定Nano-Banana图片编辑API对接:从Base64编码到生成图片全流程

本文详细介绍了如何快速对接Nano-Banana图片编辑API,基于gemini-2.5-flash-image-preview模型,从环境准备、Base64编码到API调用的全流程。通过实战示例和优化技巧,帮助开发者高效集成AI图片处理能力,提升产品竞争力。

dog123的博客 260

03特征工程

特征工程目标: 对于特征进行进一步分析,并对于数据进行处理 完成对于特征工程的分析 常见的特征工程包括: 异常处理: 通过箱线图(或 3-Sigma)分析删除异常值; DataFrame.quantile(q=0.5, axis=0, numeric_only=True, interpolation=’linear’) 参数 - q : float ...

wjsjjss的博客 502

交通规划仿真软件:TransCAD_(7).公交系统规划与分析

通过TransCAD进行公交系统规划与分析,可以有效地评估公交网络的性能,优化线路设计,提高服务质量。数据准备、模型建立、仿真运行和结果分析是公交系统规划与分析的关键步骤。在实际应用中,规划者和分析师可以根据仿真结果提出具体的优化建议,不断完善公交系统的运行效率和乘客体验。

kkchenjj的博客 956

国产麒麟V10系统命令大全,100个实用命令助你玩转系统!

国产麒麟V10系统命令大全,100个实用命令助你玩转系统!

网络技术联盟站 1911

特征工程系列:时间特征构造以及时间序列特征构造

0x00 前言 数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。由此可见,特征工程在机器学习中占有相当重要的地位。在实际应用当中,可以说特征工程是机器学习成功的关键。那特征工程是什么?特征工程是利用数据领域的相关知识来创建能够使机器学习算法达到最佳性能的特征的过程。特征工程又包含了 Data PreProcessing(数据预处理)、Feature Extraction(特征提取...

木东居士 1万+

生成对抗网络(GAN)在数据增强中的应用【附核心实战代码】

生成对抗网络(GAN)由Ian Goodfellow等人在2014年提出。它包含两个主要的部分:生成器(Generator)和判别器(Discriminator)。生成器负责生成假数据,而判别器则用于区分输入的数据是真实的还是由生成器生成的。通过这种对抗过程,生成器不断优化自己,生成越来越真实的样本。最终,生成器生成的样本几乎无法被判别器区分与真实数据。

一键难忘的博客 3120

AI_03特征工程:数据科学的灵魂,决定模型上限的艺术

特征工程是从原始数据中提取、构造、选择、转换出对模型预测最有帮助的特征(Features)的过程。它要求我们利用专业背景知识和技巧处理数据,是让机器学习算法效果达到最优的关键步骤。一句话总结“数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。这意味着,即使你拥有世界上最强大的算法(如GPT、ResNet),如果输入的是糟糕的特征,得到的结果也必然是糟糕的。特征工程不是一个单一的步骤,而是一个融合了数据理解、业务知识、数学技巧和创造力的迭代过程。

a742235926的博客 860

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

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

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: 02_特征工程前奏—数据清洗
下一篇: 04_特征工程—特征选择
少云清
博客等级 码龄8年 2165粉丝 437原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少云清

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值