版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
机器学习机器学习是使计算机具有智能的根本途径,它涉及到多学科知识,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习的历史可以追溯到17世纪,贝叶斯、拉普拉斯关于最小二乘法的推导和马尔可夫链构成了机器学习广泛使用的工具和基础。从1950年图灵提议建立一个学习机器,到2000年初深度学习的实际应用及进展,机器学习有了很大的进展。机器学习机器学习最早的发展可以追溯到英国数学家贝叶斯(1702年~1761年)在1763年发表的贝叶斯定理,这是关于随机事件A和B的条件概率(或边缘概率)的一则数学定理,是机器学习的基本思想。其中,P(A|B)是指在B发生的情况下A发生的可能性,即根据以前的信息寻找最可能发生的事件。机器学习的发展从20世纪50年代研究机器学习以来,不同时期的研究途径和目标并不相同,大体上可以划分为四个阶段。第一阶段是20世纪50年代中叶到60年代中叶,属于热烈时期。主要研究“有无知识的学习”。这个时期最具代表性的研究是塞缪特的下棋程序。第二阶段从20世纪60年代中叶到70年代中叶,被称为机器学习的冷静时期。主要研究将各领域的知识植入到系统里,通过机器模拟人类学习的过程。第三阶段从20世纪70年代中叶到80年代中叶,称为复兴时期。在此期间,人们从学习单个概念扩展到学习多个概念,探索不同的学习策略和方法。机器学习的发展第四阶段起步于20世纪80年代中叶,机器学习的这个新阶段具有如下特点:(1)机器学习成为新的边缘学科,它综合应用了心理学、生物学、神经生理学、数学、自动化和计算机科学等形成了机器学习理论基础。(2)融合各种学习方法,且形式多样的集成学习系统研究正在兴起。特别是连接符号的学习耦合可以更好地解决连续性信号处理中知识与技能的获取与求精问题而受到重视。机器学习的发展(3)机器学习与人工智能各种基础问题的统一性观点正在形成。例如学习与问题求解结合进行、知识表达便于学习的观点产生了通用智能系统的组块学习。类比学习与问题求解结合的基于案例方法已成为经验学习的重要方向。(4)各种学习方法应用范围不断扩大。归纳学习知识获取工具在诊断专家系统中广泛使用,连接学习在声图文识别中占优势,分析学习用于设计型专家系统,遗传算法与强化学习在工程控制中有较好应用,与符号系统耦合的深度学习在智能管理与智能机器人运动规划中发挥作用。机器学习的发展机器学习在1997年达到巅峰,当时,IBM深蓝电脑在一场国际象棋比赛中击败了世界冠军加里·卡斯帕罗夫。之后,谷歌开发专注于围棋游戏的AlphaGo(阿尔法狗),尽管围棋被认为过于复杂,2016年AlphaGo终于获得胜利,在一场五局比赛中击败世界冠军李世石。机器学习的发展学习是人类具有的一种重要的智能行为。兰利(1996)的定义是:“机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能。”汤姆·米切尔(1997)对信息论中的一些概念有详细的解释,其中定义机器学习时提到:“机器学习是对能通过经验自动改进的计算机算法的研究。”阿尔帕丁(2004)对机器学习的定义:“机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。”机器学习的定义机器学习的研究主要分为两个方向。1.传统机器学习的研究:主要研究学习机制,注重探索模拟人的学习机制,研究内容包括决策树、随机森林、人工神经网络、贝叶斯学习等方面。2.大数据环境下机器学习的研究:主要研究如何有效利用信息,注重从巨量数据中获取隐藏的、有效的、可理解的知识。大数据的价值体现主要集中在数据的转向以及数据的信息处理能力。在大数据产业发展的今天,对数据的转换、处理、存储等带来了更好的技术支持,实现人类用户与计算机信息之间的协调。机器学习的研究机器学习的核心是“使用算法解析数据,从中学习,然后对世界上的某件事情做出决定或预测”。这意味着,与其显式地编写程序来执行某些任务,不如教计算机学会如何开发一个算法来完成任务。
机器学习有三种主要类型
监督学习非监督学习强化学习
12.2基于学习方式的分类监督学习,涉及一组标记数据,计算机可以使用特定的模式来识别每种标记类型的新样本,即在机器学习过程中提供对错指示,一般是在数据组中包含最终结果(0,1)。通过算法让机器自我减少误差。监督学习从给定的训练数据集中学习出一个函数,当接收到一个新的数据时,可以根据这个函数预测结果。监督学习的训练集要求包括输入和输出,也可以说是特征和目标,目标是由人标注的。监督学习的主要类型是分类和回归。无监督学习又称归纳性学习,其中数据是无标签的。由于大多数真实世界的数据都没有标签,这样的算法就特别有用。无监督学习分为聚类和降维。基于学习方式的分类数据预处理语料清洗在实际的数据集中,通常存在着缺失值、异常值等噪声数据。语料清洗包括缺失值处理、异常数据检测与清除,重复值处理等。一致性检查一致性检查是根据每个变量的合理取值范围和相互关系,检查数据是否合乎要求,发现超出正常范围的数据。例如,体重出现了负数,年龄超出正常值范围。SPSS、Excel等软件都能够根据定义的取值范围,自动识别每个超出范围的变量值。格式内容检查
当数据来自多源,数据往往在格式和内容上存在很多问题,例如,时间日期、数值、全半角等显示格式不一致等。例如,性别字段,某来源为“男”和“女”,某来源为“0”和“1”表示男女,需要进行一致化处理。逻辑错误检查
通过逻辑推理发现逻辑上不合理或者相互矛盾的问题数据。例如,“身份证号”和“年龄”两个字段具有相互关联,从而可以进行互相验证处理。缺失值
采集数据时,由于各种因素导致部分样本的数据特性缺失。缺失值通常以空白,NaN或其他占位符编码。缺失值处理一般采用如下方法:删除法和数据填充。删除法:如果某个属性的缺失值过多,可以直接删除整个属性。数据填充:对属性缺失的样本采用其他值,如前后值、中位数、均值进行替代。填充缺失值——df.fillna()fromnumpyimportnanasNaNimportpandasaspddf1=pd.DataFrame([[1,2,3],[NaN,NaN,2],[NaN,NaN,NaN],[8,8,NaN]])print("df1:\n{}\n".format(df1))df2=df1.fillna(100)print("df2:\n{}\n".format(df2))删除缺失值——df.dropna()fromnumpyimportnanasNaNimportpandasaspddf1=pd.DataFrame([[1,2,3],[NaN,NaN,2],[NaN,NaN,NaN],[8,8,NaN]])print("df1:\n{}\n".format(df1))df2=df1.dropna()print("df2:\n{}\n".format(df2))sklearn中imputer类或SimpleImputer类Imputer具体语法如下所示:fromsklearn.preprocessingimportImputerimp=Imputer(missing_values="NaN",strategy="mean")SimpleImputer具体语法如下所示:fromsklearn.imputeimportSimpleImputerimp=SimpleImputer(missing_values=np.nan,strategy="mean")参数含义如下所示:missing_values=np.nan:缺失值是nanstrategy="mean":用平均数,中位数等插值方法的数据异常值“异常数据”又称为离群点,具有与其他数据的显著不同。
通常检测方法如下所示:1)基于邻近度的方法通常可以在对象之间定义邻近性度量,异常对象是那些远离其他对象的对象。2)基于密度的方法仅当一个点的局部密度显著低于它的大部分近邻时才将其分类为离群点。3)基于聚类的方法聚类分析用于发现局部强相关的对象。一般采用Z标准化得到的阈值作为判断标准,超过阈值则为异常。散点图方法
散点图通过展示两组数据的位置关系,可以展示数据的分布和聚合情况,可以清晰直观地看出哪些值是离群点。箱线图方法
箱线图又称箱形图或盒式图,不同于折线图、柱状图或饼图等传统图表只是数据大小、占比、趋势的呈现。箱线图包含统计学的均值、分位数、极值等统计量,用于分析不同类别数据平均水平差异,展示属性与中位数离散速度,并揭示数据间离散程度、异常值、分布差异等。箱线图是一种基于“五位数”摘要显示数据分布的标准化方法
箱形图判断异常值的标准以四分位数和四分位距为基础,当数据在箱线图中超过上四分位1.5倍四分位距或下四分位1.5倍距离时,即小于Q1-1.5IQR或大于Q3+1.5IQR的值被认为是异常值。3σ法则
对于正态分布数据而言,数值分布在(μ-σ,μ+σ)中的概率为0.6827;在(μ-2σ,μ+2σ)中的概率为0.9545;在(μ-3σ,μ+3σ)中的概率为0.9973(μ为平均值,σ为标准差)。重复值
重复值的存在会影响数据分析和挖掘结果的准确性。numpy的unique函数在Numpy中,可以通过unique函数找到数组中的唯一值并返回已排序的结果。
Pandas中的相关方法,如下所示:duplicated()用于判断重复数据记录drop_duplicates()用于删除重复记录数据转换
函数名说
明df.replace(a,b)df.replace(a,b)是指用b替换a值df['col1'].map()对指定列进行函数转换,用于Series。pd.merge(df1,df2)用于合并df1和df2,按照共有的列连接bine_first(df2)用df2的数据补充df1的缺失值。特征预处理
当多个特征大小相差较大,或者某特征的方差相比其他特征数个数量级,容易影响或支配目标结果。特征预处理就是通过转换函数将这些特征数据转换成适合算法模型的过程。方法含义方法名归一化preprocessing.MinMaxScaler标准化preprocessing.StandardScaler鲁棒化Preprocessing.RobustScaler规范化当数据不符合正态分布、异常值较少的时候,为了让特征具有同等重要性,可以采用规范化(normalization)将不同规格的数据转换到同一个规格,即变换到固定的最小最大值的区间。Sklearn提供MinMaxScaler方法进行规范化,具体语法如下所示:MinMaxScaler(feature_range=(0,1))规范化fromsklearn.preprocessingimportMinMaxScalerdefNormalization():#实例化一个转换器类Normalization=MinMaxScaler(feature_range=(0,1))#范围设置为0~1之间data=[[90,2,10,40],[60,4,15,45],[75,3,13,46]]print(data)#调用fit_transformdata_Normal=Normalization.fit_transform(data)print(data_Normal)returnNoneif__name__=='__main__':Normalization()【程序运行结果】[[90,2,10,40],[60,4,15,45],[75,3,13,46]][[1.0.0.0.][0.1.1.0.83333333][0.50.50.61.]]标准化当有些特征的方差过大,会导致无法正确地去学习其他特征,标准化用于解决归一化容易受到样本中极大或者极小的异常值的影响。数据标准化(standardization)将数据按比例缩放到特定区间。标准化后,所有数据都聚集在0附近,方差为1。Sklearn提供StandardScaler()实现标准化,确保数据的“大小”一致,从而利于模型的训练。具体语法如下所示:StandardScaler(copy,with_mean)标准化importnumpyasnpfromsklearn.preprocessingimportStandardScalerdefStandardization():data_list=[[1.5,-1.,2.],[2.,0.,0.]]print('矩阵初值为:{}'.format(data_list))scaler=StandardScaler()data_Standard=scaler.fit_transform(data_list)print('该矩阵的均值为:{}\n该矩阵的标准差为:{}'.format(scaler.mean_,np.sqrt(scaler.var_)))print('标准差标准化的矩阵为:{}'.format(data_Standard))returnNoneif__name__=='__main__': Standardization()矩阵初值为:[[1.5,-1.0,2.0],[2.0,0.0,0.0]]该矩阵的均值为:[1.75-0.51.]
该矩阵的标准差为:[0.250.51.]标准差标准化的矩阵为:[[-1.-1.1.][1.1.-1.]]鲁棒化当数据包含许多异常值,离群值较多时,使用均值和方差缩放不能取得较好效果,可以使用鲁棒性缩放(RobustScaler)进行处理。RobustScaler使用中位数和四分位数进行数据的转换,会直接将异常值剔除Sklearn提供sklearn.preprocessing.RobustScaler()实现鲁棒化,语法如下所示:RobustScaler(quantile_range,with_centering,with_scaling)鲁棒化fromsklearn.preprocessingimportRobustScalerX=[[1.,-2.,2.],[-2.,1.,3.],[4.,1.,-2.]]transformer=RobustScaler().fit(X)RobustScaler(quantile_range=(25.0,75.0),with_centering=True,with_scaling=True)print(transformer.transform(X))【程序运行结果】[[0.-2.0.][-1.0.0.4][1.0.-1.6]]特征工程独热编码机器学习算法往往无法直接处理文本数据,需要把文本数据转换为数值型数据,独热编码把文本转换为数值,也称One-Hot编码,又称为一位有效编码。one-hot编码保证了每一个取值只会使得一种状态处于“激活态”,也就是说这N种状态中只有一个状态位值为1,其他状态位都是0。独热编码具有操作简单,容易理解的优势。但是,独热编码完全割裂了词与词之间的联系,而且在大语料集下,每个向量的长度过大,占据大量内存。举例步骤1.确定编码对象:["中国","美国","日本","美国“]步骤2.确定分类变量:中国、美国、日本共3种类别步骤3.进行特征编码:中国—0,美国—1,日本—2。方法1:pandas实现pandas的get_dummies函数实现one-hot编码。pandas.get_dummies(data,sparse=False)importpandasaspds=pd.Series(list("abcd"))print(s)s1=pd.get_dummies(s,sparse=True)print(s1)dtype:objectabcd01000101002001030001方法2:sklearn实现Sklearn采用OneHotEncoder编码。fromsklearn.preprocessingimportOneHotEncoderenc=OneHotEncoder()enc.fit([[0,0,3],[1,1,0],[0,2,1],[1,0,2]])#fit编码ans1=enc.transform([[0,1,3]])#输出稀疏矩阵ans2=enc.transform([[0,1,3]]).toarray()#输出数组格式print("稀疏矩阵\n",ans1)print("数组格式\n",ans2)特征提取
数据往往具有不同的数据类型,如数值型、字符型、布尔型等。但是,机器学习模型只接收数值型和布尔型,需要特征提取进行转化。特征提取又称为特征抽取,是将任意数据(字典、文本或图像)转换为可用于机器学习的数字特征。方
法说
明feature_extraction.DictVectorizer
将特征值映射列表转换为向量feature_extraction.FeatureHasher特征哈希feature_extraction.text文本相关特征抽取feature_extraction.image图像相关特征抽取feature_extraction.text.CountVectorizer将文本转换为每个词出现次数的向量feature_extraction.text.TfidfVectorizer将文本转换为tfidf值的向量字典特征提取
字典特征提取是将字典内容转化成计算机可以处理的数值。sklearn提供DictVectorizer函数实现字典特征提取,具体语法如下所示:
sklearn.feature_extraction.DictVectorizer(sparse=True)字典特征提取fromsklearn.feature_extractionimportDictVectorizerdefdictvec1():#定义一个字典列表,表示多个数据样本data=[{"city":"上海",'temperature':100},{"city":"北京",'temperature':60},{"city":"深圳",'temperature':30}]#1、转换器DictTransform=DictVectorizer()#DictTransform=DictVectorizer(sparse=True)两行代码效果一样
['city=上海','city=北京','city=深圳','temperature'][[1.0.0.100.][0.1.0.60.][0.0.1.30.]]3行表示3个向量,即3个样本。4列表示2个特征(city和温度)的取值。其中,city共3个取值,取值为'上海','北京',深圳',采用one–hot编码。第一行中,‘上海’为真,取值为1,‘北京’、‘深圳’为假,取值为0;第二行中,‘北京’为真,取值为1,其余为0……依次类推。字典特征提取#2、调用fit_transform方法,返回sparse矩阵data_new=DictTransform.fit_transform(data)print(DictTransform.get_feature_names())print(data_new)returnNoneif__name__=='__main__':dictvec1()['city=上海','city=北京','city=深圳','temperature'][[1.0.0.100.][0.1.0.60.][0.0.1.30.]]文本特征提取CountVectorizer与TfidfVectorizer是两个特征数值计算的常见方法。CountVectorizer只考虑每种词汇在文本中出现的频率TfidfVectorizer除了考量某一词汇在当前训练文本中出现的频率之外,同时关注包含这个词汇的其它训练文本数目的倒数。相比之下,训练文本的数量越多,TfidfVectorizer更有优势CountVectorizer
sklearn提供CountVectorizer方法用于文本特征提取,具体语法如下所示:feature_extraction.text.CountVectorizer(stop_words)CountVectorizer
fromsklearn.feature_extraction.textimportCountVectorizertexts=["orangebananaapplegrape","bananaappleapple","grape",'orangeapple']#1.实例化一个转换器类cv=CountVectorizer()#2.调用fit_transform()cv_fit=cv.fit_transform(texts)print(cv.vocabulary_)print(cv_fit.shape)print(cv_fit)print(cv_fit.toarray())运行结果:{'orange':3,'banana':1,'apple':0,'grape':2}[[1111]
[2100]
[0010]
[1001]]根据每个单词的首字母在26个字母中出现的先后次序进行排序。(apple,banana,grape,orange)排名为(0,1,2,3)。
#
(0,2)
1解释为第一字符串的顺序为2的词语出现次数为1。0表示第一个字符串"orangebananaapplegrape"。2为'grape'。1表示出现次数1。#"bananaappleapple"在(apple,banana,grape,orange)出现的频率为2,1,0,0。
TF-IDF模型(termfrequency–inversedocumentfrequency,词频与逆向文件频率)用于评估字词对于文件重要程度。如果某词语在文中出现频率高,而在其他文中很少出现,认为该词语具有很好的类别区分能力TfidfVectorizer
步骤1:计算TF
步骤2:计算IDF步骤3:计算TF-IDFtf-idf算法=tf算法*
idf算法。(1)计算TF
某文件共有100个词语,“苹果”出现3次,“苹果”在该文件中的词频就是3/100=0.03。(2)计算IDF
“苹果”在1000个文档中出现,全部文件总数是10000000个,逆向文件频率是Lg(10000000/1000)=4。(3)计算TF-IDFTf-idf的值就是0.03*4=0.12。sklearn提供TfidfVectorizer函数实现,语法如下所示:TfidfVectorizer(stop_words,sublinear_tf,max_df)Sklearn计算TF-IDF指标评价过拟合和欠拟合拟合是指机器学习模型在训练的过程中,通过更新参数,使得模型不断契合可观测数据(训练集)的过程。欠拟合指的是模型在训练和预测表现都不好,往往由于模型过于简单,如图(a)所示。正常模型指的是模型在训练和预测表现都好,如图(b)所示。过拟合是指由于模型过于复杂,模型在训练集上的表现很好,但在测试集上表现较差,如图(c)所示。欠拟合1)添加新特征当特征不足或者现有特征与样本标签的相关性不强时,模型容易出现欠拟合。通过“组合特征”等进行处理。2)模型优化:提升模型复杂度模型的复杂度可以使模型拥有更强的拟合能力。例如,在线性模型中添加高次项等进行处理。不同的建模算法针对不同的业务场景有不同的表现,尝试不同的建模算法,从中比较,择优者而用之。细分群体,建立多个模型,对应不同的核心客户群体。3)减少正则项权重过拟合1)获取更多的训练样本
由于模型训练了包含噪音在内的所有特征,导致模型过拟合,通过获取更多的训练样本,可以衰减噪音权重。2)减少特征数目特征共线性检查,利用Pearson相关系数计算变量之间的线性相关性,如果自变量中属于中度以上线性相关的多个变量,只需要保留一个就可以。重要特征筛选,利用决策树模型,降低树的深度、进行剪枝等,筛选出重要特征。数据降维,主成分分析,保留特征变量重要差异。3)增加正则项权重减少高次项的影响。例如,添加L2正则化到损失函数等。分类评估标准混淆矩阵准确率精确率召回率F1scoreROC曲线
AUC面积分类评估报告混淆矩阵混淆矩阵也称误差矩阵,用于评价算法或者分类器的结果。混淆矩阵由n行n列组成,每一列代表了预测类别,每一列的总数表示预测为该类别的数据的数目;每一行代表了数据的真实归属类别,每一行的总数表示该类别的数据实例的数目。每一列中的数值表示真实数据被预测为该类的数目。混淆矩阵准确率准确率(Accuracy,缩写ACC)是最常用的分类性能指标。准确率是指有病被检查的TP是检测对了,没病也检测的TN也是检测对了。准确率(Accuracy)=预测正确样本数/总样本数。
sklearn.metrics模块提供accuracy_score函数,形式如下所示:sklearn.metrics.accuracy_score(y_true,y_pred,normalize)精确率精确率(Precision)又称为查准率,容易和准确率混淆。精确率只是针对预测正确的正样本而不是所有预测正确的样本,精准率是正确预测的正例数/预测正例总数。公式如下所示:sklearn.metrics模块提供precision_score函数,形式如下所示:sklearn.metrics.precision_score(y_true,y_pred)召回率召回率(Recall)就是所有准确的条目有多少被检索出来,召回率可理解为查全率。查准率和查全率是一对矛盾的度量。一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。召回率是正确预测的正例数/实际正例总数sklearn.metrics模块提供recall_score函数,形式如下所示:recall_score(y_true,y_pred,average)F1scoreF1分数(F1Score)用于衡量二分类模型精确度,是精确率和召回率的调和值,变化范围在0-1。F1计算公式如下所示:sklearn.metrics模块提供f1_score函数,形式如下所示:f1_score(y_test,predictions,average="micro")ROC曲线ROC全称是“受试者工作特征”(ReceiverOperatingCharacteristic)曲线,用于描述混淆矩阵中FPR-TPR两个量之间的相对变化情况。ROC曲线的横轴是FPR,纵轴是TPR。ROC曲线用于描述样本的真实类别和预测概率。AUC面积 AUC(AreaUnderCurve)是指ROC曲线下的面积,由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。AUC只能用于评价二分类,直观的评价分类器的好坏,值越大越好
sklearn.metrics模块提供roc_auc_score函数,形式如下所示:sklearn.metrics.roc_auc_score(y_true,y_score)分类评估报告sklearn中的classification_report函数用于显示主要分类指标的文本报告,显示每个类的精确度、召回率、F1值等信息。classification_report函数形式如下所示
classification_report(y_true,y_pred,labels,target_names)回归评估方法平均绝对误差均方误差r2_score平均绝对误差平均绝对误差(MeanabsoluteError,MAE),又被称为l1。是指预测值与真实值之间平均相差多大,反映预测值误差的实际情况,用于评估预测结果和真实数据集的接近程度的程度,其值越小说明拟合效果越好Sklearn提供了mean_absolute_error用于平均绝对误差,如下所示:mean_absolute_error(y_true,
y_pred)均方误差均方误差(MeanSquaredError,缩写MSE),又被称为l2。反映观测值与真值偏差的平方和与观测次数的比值,是指预测值与真实值之差的平方和的平均值,其值越小说明拟合效果越好。Sklearn提供了mean_squared_error用于均方误差,如下所示:mean_squared_error(y_true,
y_pred)
r2_score在分类问题中,用F1_score分类。在回归问题中有相应的决定系数(Coefficientofdetermination),又被称为R2_score,其值取值范围是[0,1],越接近1,表明方程的变量对y的解释能力越强,模型对数据拟合的也较好,越接近0,表明模型拟合的越差。Sklearn提供了r2_score用于解释回归模型的方差得分,如下所示:r2_score(y_true,
y_pred)K近邻算法kNN算法的思想
算法步骤最佳k值的选择
最佳k值的选择
确定“绿色圆”属于“红色三角形”还是“蓝色四方形”类?若K=3,距离“绿色圆”最近的3个点中“红色三角形”所占比例为
,“蓝色四方形”所占比例为
。由于
,所以“绿色圆”分为“红色三角形”类。当K=5,“蓝色四方形”所占比例为
,“红色三角形”所占比例为
,“绿色圆”分为“蓝色四方形”类。所以,KNN算法的结果很大程度取决于K值的选择。样本间相似度的度量方法欧氏距离
样本间相似度的度量方法曼哈顿距离
样本间相似度的度量方法余弦相似度
KNN算法的应用实战
kNN模型的函数
neighbors.KNeighborsClassifier(n_neighbors=5,weights='uniform',algorithm='auto', leaf_size=30,p=2,metric='minkowski', metric_params=None,n_jobs=1)n_neighbors:用于指定近邻样本个数K,默认为5weights:用于指定近邻样本的投票权重,默认为'uniform',表示所有近邻样本的投票权重一样;如果为'distance',则表示投票权重与距离成反比,即近邻样本与未知类别的样本点距离越远,权重越小,反之,权重越大algorithm:用于指定近邻样本的搜寻算法,如果为'ball_tree',则表示使用球树搜寻法寻找近邻样本;如果为'kd_tree',则表示使用KD树搜寻法寻找近邻样本;如果为'brute',则表示使用暴力搜寻法寻找近邻样本。默认为'auto',表示KNN算法会根据数据特征自动选择最佳的搜寻算法KNN算法的应用实战
neighbors.KNeighborsClassifier(n_neighbors=5,weights='uniform',algorithm='auto', leaf_size=30,p=2,metric='minkowski', metric_params=None,n_jobs=1)leaf_size:用于指定球树或KD树叶子节点所包含的最小样本量,它用于控制树的生长条件,会影响树的查询速度,默认为30metric:用于指定距离的度量指标,默认为闵可夫斯基距离p:当参数metric为闵可夫斯基距离时,p=1,表示计算点之间的曼哈顿距离;p=2,表示计算点之间的欧氏距离;该参数的默认值为2metric_params:为metric参数所对应的距离指标添加关键字参数n_jobs:用于设置KNN算法并行计算所需的CPU数量,默认为1表示仅使用1个CPU运行算法,即不使用并行运算功能决策树
决策树是一种类似于流程图的树结构,其规则就是IF...THEN...的思想,可以用于数值型因变量的预测和离散型因变量的分类。
该算法简单直观、通俗易懂,不需要研究者掌握任何领域知识或复杂的数学推理,而且算法的结果输出具有很强的解释性。职业年龄收入学历是否贷款自由职业255000高中是工人355500高中否工人422500初中是白领453300小学是白领2510000本科是白领325000硕士否白领2513000博士是自由职业214000本科否自由职业223200小学否工人333000高中否工人454200小学否ID3算法(IterativeDichotomiser3,意为迭代二叉树3代)是一种贪心算法,以信息论为基础,以信息熵和信息增益度为衡量标准,对数据进行分类。ID3算法具有构建速度快,实现简单等优点。ID3算法也具有如下缺点:依赖于特征数目较多的特征ID3算法不是递增算法ID3算法对于特征属性之间的关系不会考虑抗噪性差只适合小规模数据集C4.5算法集成了ID3算法的优点,并在以下几个方面进行了改进:克服了信息增益选择属性偏向取值多的缺陷。在树构造过程进行剪枝操作对连续属性进行离散化处理能够对不完整数据进行处理C4.5需对数据集进行多次顺序扫描和排序,导致算法的低效。算法支持模型树结构特征选择连续值处理缺失值处理剪枝特征属性多次使用ID3分类多叉树信息增益不支持不支持不支持不支持C4.5分类多叉树信息增益率支持支持支持不支持CART分类、回归二叉树基尼系数、均方差支持支持支持支持朴素贝叶斯朴素贝叶斯模型属于有监督的学习算法,专门用于解决分类问题的模型,该分类器的实现思想非常简单,即通过已知类别的训练数据集,计算样本的先验概率,然后利用贝叶斯概率公式测算未知类别样本属于某个类别的后验概率,最终以最大后验概率所对应的类别作为样本的预测值条件概率条件概率(conditionalprobability)又称后验概率,P(A|B)是指事情A在另一个事件B已经发生条件下的发生概率,读作“在B条件下A的概率”,条件概率公式如下所示:现有x、y两个容器,容器x有7个红球和3个白球,容器y有1个红球和9个白球。现从两个容器里任取一个红球,问红球来自容器x的概率是多少?【解析】假设抽出红球为事件B,选中容器A为事件A朴素贝叶斯分类 sklearn.naive_bayes模块具有3种贝叶斯分类方法,分别是GaussianNB、MultinomialNB和BernoulliNB。其中,GaussianNB是高斯分布的朴素贝叶斯。MultinomialNB是多项式分布的朴素贝叶斯。BernoulliNB是伯努利分布的朴素贝叶斯。(1)GaussianNB适合样本特征是正态分布的数值情况。(2)MultinomialNB适合非负离散数值特征的分类情况。(3)BernoulliNB适合二元离散值或者很稀疏的多元离散值情况。88GaussianNBSklearn提供GaussianNB用于高斯分布,具体语法如下所示:GaussianNB(priors=True)参数含义如下所示:priors:先验概率大小。MultinomialNB多项式朴素贝叶斯假设特征由一个简单多项式分布生成,非常适用于描述出现次数或者出现次数比例的特征,例如文本分类,其特征都是指待分类文本的单词出现次数或者频次。Sklearn提供MultinomialNB用于多项式分布,具体语法如下所示:MultinomialNB(alpha=1.0,fit_prior=True,class_prior=None)参数含义如下所示:alpha:先验平滑因子,默认等于1,当等于1时表示拉普拉斯平滑。fit_prior:是否去学习类的先验概率,默认是Trueclass_prior:各个类别的先验概率,如果没有指定,模型根据数据自动学习,每个类别的先验概率相同,等于类标记总个数N分之一。BernoulliNB Sklearn提供BernoulliNB用于伯努利(贝努利)分布,伯努利分布又名“两点分布”、“二项分布”或“0-1分布”,适用于数据集中每个特征只有0和1两个数值,具体语法如下所示:BernoulliNB(alpha=1.0,binarize=0.0,fit_prior=True,class_prior=None)
sklearn朴素贝叶斯垃圾邮件分类92语料垃圾邮件数据spam.csv百度链接:/s/1ncgjQe_FQMiRgL5aSu00Uw提取码:k9po
sklearn朴素贝叶斯垃圾邮件分类93步骤1.读取数据步骤2.语料数据划分训练集和测试集步骤3.进行无量纲化,使用CountVectorizer将句子转化为向量步骤4.采用朴素贝叶斯算法训练预测步骤5.模型评估Kmeans算法k均值聚类算法
k均值聚类算法(k-means
clusteringalgorithm)是通过样本之间的距离,把相似度高的样本聚成一簇(簇相似元素的集合),最后形成多个簇,将样本划分到不同的类别。以K、M、N为簇心聚为三类优点缺点简单、快速、易于实现需要预先指定
k
对大数据集可扩展对初始质心敏感(可能收敛到局部最优)结果可解释性强对异常值敏感适用于球形簇不能处理非凸形状或密度差异大的簇
k均值聚类算法是一种迭代求解算法,其步骤如下所示:步骤1:确定K值,意味着最终聚类的类别数。步骤2:随机选定K个值为质心,计算每一个样本到K个质心的距离,将样本点归到最相似的类中,分成K个簇。簇中所有数据的均值称为“质心”。步骤3:反复计算K个簇的质心,直到质心不再改变,确定每个样本所属的类别以及每个类的质心k-means算法示意图步骤1:初始数据集如图a所示,确定k=2。步骤2:随机选择两个点作为质心——红色质心和蓝色质心,如图b所示。计算样本与红色质心和蓝色质心的距离,标记每个样本的类别,如图c所示。步骤3:反复迭代,标记红色和蓝色各自新的质心,如图d、图e所示。步骤4:最终得到两个类别,如图f所示。k-means算法首先随机选取k个点作为初始聚类中心,然后计算各个数据对象到各聚类中心的距离,把数据对象归属到离它最近的聚类中心所在的类,重新计算新的聚类中心,如果相邻两次的聚类中心没有任何变化,说明数据对象调整结束,聚类已经收敛。在每次迭代中对于样本分类正确与否进行调整。在全部数据调整完后,再修改聚类中心,进入下一次迭代。如果在一次迭代算法中,所有的数据对象被正确分类,则不会有调整,聚类中心也不会有任何变化,这标志着聚类已经收敛,算法结束。SklearnScikit-learn(sklearn)是机器学习中常用的第三方模块,对常用的机器学习方法进行了封装,具有分类、回归、聚类、降维、模型选择、预处理六大模块
Sklearn(1)分类:识别某个对象属于哪个类别,常用的算法有:SVM(支持向量机)、KNN(最近邻)、randomforest(随机森林)。(2)回归:预测与对象相关联的连续值属性,常见的算法有:SVR(支持向量机)、ridgeregression(岭回归(3)聚类:将相似对象自动分组,常用的算法有:spectralclustering、K-means。Sklearn(4)降维:减少要考虑的随机变量的数量,常见的算法有:PCA(主成分分析)、featureselection(特征选择)。(5)模型选择:用于比较、验证、选择参数和模型,常用的模块有:gridsearch(网格搜索)、crossvalidation(交叉验证)、metrics(度量)。(6)预处理:包括数据清洗和特征提取,常用的模块有preprocessing(数据预处理)和featureextraction(特征提取)。无监督学习算法算
法
说
明cluster 聚类Decomposition因子分解Mixture高斯混合模型neural_network无监督的神经网络Covariance协方差估计有监督学习算
法
说
明tree决策树svm支持向量机neighbors近邻算法linear_model广义线性模型neural_network神经网络kernel_ridge岭回归naive_bayes
朴素贝叶斯数据转换模
块
说
明feature_extraction特征提取feature_selection特征选择preprocessing预处理评价指标术
语Sklearn函数混淆矩阵confusion_matrix准确率accuracy_score召回率recall_scoref1_scoref1_scoreROC曲线roc_curveAUC面积roc_auc_score分类评估报告classification_report安装SklearnSklearn数据集
机器学习领域有句话:“数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。”
数据作为机器学习的最关键要素,决定着模型选择、参数的设定和调优。Sklearn的数据集是datasets模块,导入数据集代码如下所示: fromsklearnimportdatasets sklearn提供三种数据集,分别是小数据集、大数据集和生成数据集。Sklearn小数据集Sklearn大数据集Sklearn生成数据集划分数据集根据数据集的特点,有留出法、交叉验证法和自助法等,具体如下所示:数据集较小且可以有效划分训练集/测试集的时候,采用留出法。数据集较小且难以有效划分训练集/测试集的时候,采用自助法。数据集数量充足时,通常采用留出法或者k折交叉验证法。K近邻算法KNN具有如下个步骤:步骤1:
算距离。计算待分类样本Xu与已分类样本点的距离,计算距离有等方法。步骤2:
找邻居。圈定与待分类样本距离最近的3个已分类样本,作为待分类样本的近邻。步骤3:
做分类。根据3个近邻中的多数样本所属的类别来决定待分类样本,将Xu的类别预测为ω1。K近邻算法Sklearn提供了KneighborsClassifier解决分类问题
KNeighborsClassifier(n_neighbors,weights,algorithm,leaf_size,p)
决策树通过一系列规则对数据进行分类,将在不同条件下得到不同的结果的决策过程绘制成图形,很像一棵倒立的树。这种从数据产生决策树的机器学习技术叫做决策树(DecisionTrees,缩写DT)。决策树类似于流程图的树结构,采用IF……THEN的思路,每个叶结点对应一个分类,非叶结点对应着某个属性上的划分,根据样本在该属性上的不同取值将其划分为若干子集。决策树Sklearn提供DecisionTreeClassif
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026围绕简历的面试题及答案
- 感恩之心与亲情回报:小学主题班会课件
- 汽车售后入伙合同范本
- 姐弟关系好协议书
- 分享快乐传递正能量的小学主题班会课件
- 小学主题班会课件:挫折与不屈:如何勇敢面对挑战
- 合作项目后续工作计划安排商洽函(6篇)
- 农业生产流程标准化指南
- 非粮生物基乳酸制品产业园项目可行性研究报告模板立项申批备案
- 2026年十堰市茅箭区社区工作者招聘考试备考题库及答案详解
- MOOC 探秘移动通信-重庆电子工程职业学院 中国大学慕课答案
- 三年级下语文(部编版)古诗默写
- 2022版20kV及以下配电网工程技术经济指标编制导则
- GB/T 23220.1-2023烟叶储存保管方法第1部分:原烟
- 高考英语高频词汇汇总清单(共1801个)
- 2014年高考作文(北京卷)“老规矩”作文公式全解
- T-GDWCA 0037-2018 高柔性多芯拖链控制电缆
- 农药销售技巧培训
- 团体心理治疗实践
- 肌电图科内讲座课件
- 校园规划课件
评论
0/150
提交评论