版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
人工智能技术开发框架计算机与软件学院第四章机器学习框架Scikit-Learn01AI应用开发概述02FlaskWEB应用开发03数据处理与分析工具04中国人工智能战略05深度学习框架Tensorflow204机器学习框架Scikit-Learn机器学习框架sklearnsklearn是一个Python第三方提供的非常强力的机器学习库,它包含了从数据预处理到训练模型的各个方面。在实战使用scikit-learn中可以极大的节省我们编写代码的时间以及减少我们的代码量,使我们有更多的精力去分析数据分布,调整模型和修改超参机器学习流程数据采集和标注模型加载模型保存模型测试模型训练算法选择数据预处理(清洗)特征选择模型应用数据预处理(清洗)数据预处理工具:Numpy,PandasAB12数据标准化数据正规化:sklearn.preprocessing.Normalizer(norm='l2')-正则化的过程是将每个样本缩放到单位范数(每个样本的范数为1),对每个样本计算其p-范数,然后对该样本中每个元素除以该范数,这样处理的结果是使得每个处理后样本的p-范数(L1-norm,L2-norm)等于1。数据归一化(零均值):sklearn.preprocessing.StandardScaler()-将数据按其属性(按列进行)减去其均值,然后除以其方差。最后得到的结果是,对每个属性/每列来说所有数据都聚集在0附近,方差值为1。最大最小标准化:sklearn.preprocessing.MinMaxScaler(feature_range=(0,1))-将属性缩放到一个指定的最大值和最小值(通常是1-0)之间。机器学习方法有监督学习无监督学习半监督学习有监督学习回归分类很多算法既可以用于分类,也可以用于回归,如:决策树、支持向量机、随机森林、Adaboost等回归线性回归多项式变换线性回归线性回归:sklearn.linear_model.LinearRegression()
-没什么特别参数,正常使用默认参数多项式变换背景:有时从己知数据里挖掘出更多的特征不是件容易的事情,此时可以用纯数学的方法,增加多项式特征。比如,原来的输入特征只有问X1,X2,优化后可以增加特征,变成X1,X2,X1^2,X2^2。这样也可以增加模型复杂度,从而改善欠拟合的问题。多项式特征变换后再线性回归,本质上是增加特征数量,构造新的特征以解决欠拟合问题多项式变换:sklearn.preprocessing.PolynomialFeatures(degree=2)
-主要参数是degree,体现了变换的复杂性示例代码:quadratic=PolynomialFeatures(degree=2)X_train=quadratic.fit_transform(X_train)X_test=quadratic.transform(X_test)分类逻辑回归:sklearn.linear_model.LogisticRegression()决策树(随机森林的特例):sklearn.tree.DecisionTreeClassifier()朴素贝叶斯:sklearn.naive_bayes()K近邻(KNN):sklearn.neighbors.KNeighborsClassifier(n_neighbors=k)支持向量机(SVM):sklearn.svm.SVC()。核函数的本质:线性不可分情况下,将数据进行非线性映射到高维空间,高维特征空间中变成线性可分集成学习:(1)随机森林:sklearn.ensemble.RandomForestClassifier();(2)AdaBoost:sklearn.ensemble.AdaBoostClassifier()逻辑回归sklearn.linear_model.LogisticRegression(penalty='l2’,C=1.0)主要参数: Penalty:{‘l1’,‘l2’,‘elasticnet’,‘none’},default=’l2’。正则化方式。 C:float,default=1.0。正则化强度的倒数;必须是正浮点数。与支持向量机一样,较小的值指定更强的正则化。决策树skleam.tree.DecisionTreeClassifier()主要参数:criterion:{“gini”,“entropy”},default=”gini”。特征选择算法。一种是基于信息熵,另外一种是基于基尼不纯度。有研究表明,这两种算法的差异性不大,对模型的准确性没有太大的影响。相对而言,信息熵运算效率会低一些,因为它有对数运算splitter:{“best”,“random”},default=”best”。创建决策树分支的选项,一种是选择最优的分支创建原则,另外一种是从排名靠前的特征中,随机选择一个特征来创建分支,这个方法和正则项的效果类似,可以避免过拟合问题maxdepth:int,default=None。指定决策树的最大深度。通过指定该参数,用来解决模型过拟合问题min_samples_split:intorfloat,default=2。这个参数指定能创建分支的数据集的大小,默认是2。如果一个节点的数据样本个数小于这个数值,则不再创建分支。这也是一种前剪枝的方法min_samples_leaf:intorfloat,default=1。创建分支后的节点样本数量必须大于等于这个数值,否则不再创建分支。这也是一种前剪枝的方法max_leaf_nodes:int,default=None。除了限制最小的样本节点个数,该参数可以限制最大的样本节点个数min_impurity_split:float,default=0。可以使用该参数来指定信息增益的阀值。决策树在创建分支时,信息增益必须大于这个阀值,否则不创建分支朴素贝叶斯伯努利分布:skleam.naive_bayes.BemoulliNB()多项式分布:skleam.naive_bayes.MultinomialNB()高斯分布:skleam.naive_bayes.GaussianNB()朴素贝叶斯算法在自然语言领域有广泛的应用伯努利分布抛一枚硬币,要么出现正面,要么出现反面(假设硬币不会立起来〉。假如出现正面的概率是p,则出现反面的概率就是1-p。符合这种规律的概率分布,称为伯努利分布(BernoulliDistribution)更一般的情况,即不止两种可能性时,假设每种可能性是Pi,则满足所有的概率Pi之和为1的概率分布,称为类别分布(CategoricalDistribution)。例如投掷一个骰子,则会出现6种可能性,所有的可能性加起来的概率为1满足伯努利分布的分类问题可以使用skleam.naive_bayes.BemoulliNB(),通常使用默认参数即可多项式分布多项式分布是指满足类别分布的实验,连续做n次后,每种类别出现的特定次数组合的概率分布情况投6次骰子,每个点数都出现一次,可以是(1,2,3,4,5,6),也可以是(1,3,2,4,5,6),那么出现(1,2,3,4,5,6)这样特定顺序组合的概率是满足多项式分布的看一个例子,同时投掷6个质地均匀的骰子,出现(1,2,3,4,5,6)这种组合的概率是多少?可以把这个问题转换成连续6次投掷质地均匀的骰子,每个类别都出现一次的概率,这是个典型的多项式分布问题实际应用中,涉及大量的自然语言处理的手段,包括中文分词技术、文档分类、词的数学表示等,满足多项式分布的特点,可以使用skleam.naive_bayes.MultinomialNB(),通常使用默认参数即可高斯分布高斯分布(GaussianDistribution)也称为正态分布(NormalDistribution),是自然界最常见的一种概率密度函数。人的身高满足高斯分布,特别高和特别矮的人出现的相对概率都比较低。人的智商也符合高斯分布,特别聪明的天才和特别笨的人出现的相对概率都比较低满足高斯分布的分类问题可以使用skleam.naive_bayes.GaussianNB(),通常使用默认参数即可AB123K近邻(KNN)分类器k近邻算法的核心思想是未标记样本的类别,由距离其最近的k个邻居投票来决定。假设,有一个已经标记的数据集,即己经知道了数据集中每个样本所属的类别。此时,有一个未标记的数据样本,任务是预测出这个数据样本所属的类别。k近邻算法的原理是:计算待标记的数据样本和数据集中每个样本的距离,取距离最近的k个样本。待标记的数据样本所属的类别,就由这k个距离最近的样本投票产生skleam.neighbors.KNeighborsClassifier(n_neighbors=5)主要参数是k即n_neighbors。参数选择需要根据数据来决定。k值越大,模型的偏差越大,对噪声数据越不敏感,当k值很大时,可能造成模型欠拟合。k值越小,模型的方差就会越大,当k值太小,就会造成模型过拟合支持向量机(SVM)sklearn.svm.SVC(C=1.0,kernel='rbf',degree=3)主要参数:C:float,default=1.0。惩罚参数kernel:kernel{‘linear’,‘poly’,‘rbf’,‘sigmoid’,‘precomputed’},default=’rbf’。常用的核函数是高斯径向基核函数rbf、多项式核函数poly、sigmoid核函数。核函数的本质:线性不可分情况下,将数据进行非线性映射到高维空间,高维特征空间中变成线性可分Degree:int,default=3。当使用poly核函数时该参数有效,对于其他核函数则无效集成学习随机森林:RandomForestClassifier()Adaboost:AdaBoostClassifier()集成算法(Ensemble)是一种元算法(Meta-algorithm),它利用统计学采样原理,训练出成百上千个不同的算法模型。当需要预测一个新样本时,使用这些模型分别对这个样本进行预测,然后采用少数服从多数原则,决定新样本的类别。集成算法可以有效地解决过拟合问题。随机森林sklearn.ensemble.RandomForestClassifier(),以决策树作为基分类器(学习器)。主要参数:n_estimators:int,default=100。森林中树的数量criterion:{“gini”,“entropy”},default=”gini”。特征选择算法。一种是基于信息熵,另外一种是基于基尼不纯度。有研究表明,这两种算法的差异性不大,对模型的准确性没有太大的影响。相对而言,信息熵运算效率会低一些,因为它有对数运算maxdepth:int,default=None。指定决策树的最大深度。通过指定该参数,用来解决模型过拟合问题min_samples_split:intorfloat,default=2。这个参数指定能创建分支的数据集的大小,默认是2。如果一个节点的数据样本个数小于这个数值,则不再创建分支。这也是一种前剪枝的方法min_samples_leaf:intorfloat,default=1。创建分支后的节点样本数量必须大于等于这个数值,否则不再创建分支。这也是一种前剪枝的方法max_leaf_nodes:int,default=None。除了限制最小的样本节点个数,该参数可以限制最大的样本节点个数min_impurity_split:float,default=None。可以使用该参数来指定信息增益的阀值。决策树在创建分支时,信息增益必须大于这个阔值,否则不创建分支Adaboostsklearn.ensemble.AdaBoostClassifier(),默认以决策树作为基分类器(学习器)。主要参数:base_estimator:object,default=None。指定基分类器的类型,默认以决策树作为基分类器。n_estimators:int,default=50。终止boosting算法的最大分类器数量。如果达到该数量则学习过程将提前停止learning_rate:float,default=1。在每次提升迭代中应用于每个分类器的权重。较高的学习率会增加每个分类器的贡献。在learning_rate和n_estimators之间有一个折衷algorithm:{‘SAMME’,‘SAMME.R’},default=’SAMME.R’。‘SAMME.R’和‘SAMME’是两种算法无监督学习聚类降维聚类K均值聚类(K-Means):sklearn.cluster.KMeans(n_clusters=8)凝聚型层次聚类(agglomerative):sklearn.cluster.AgglomerativeClustering(n_clusters=2)K均值聚类(K-Means)
sklearn.cluster.KMeans(n_clusters=8)主要参数:n_clusters:int,default=8。聚类的数量凝聚型层次聚类(agglomerative)
sklearn.cluster.AgglomerativeClustering(n_clusters=2,linkage=’ward’)主要参数:n_clusters:intorNone,default=2。聚类的数量linkage:{‘ward’,‘complete’,‘average’,‘single’},default=’ward’。使用的链接标准。链接标准决定了样本集之间的距离度量方式降维PCA:sklearn.decomposition.PCA()LDA:sklearn.discriminant_analysis.LinearDiscriminantAnalysis()PCAsklearn.decomposition.PCA()主要参数:n_components:int,floator‘mle’,default=None。降维后保留的特征数量,默认为None即保留全部特征使用方法:model=sklearn.decomposition.PCA(n_components)#创建PCA模型model.fit_transform(X,y=None)
#对数据集X进行PCA降维操作,返回值为降维后的数据集LDAsklearn.discriminant_analysis.LinearDiscriminantAnalysis()主要参数:solver:{‘svd’,‘lsqr’,‘eigen’},default=’svd’。降维求解算法n_components:int,default=None。保留的特征数量使用方法:model=sklearn.discriminant_analysis.LinearDiscriminantAnalysis(solver,n_components)#创建LDA模型model.fit_transform(X,y=None)
#对数据集X进行LDA降维操作,返回值为降维后的数据集训练数据集划分方法:通常将数据集的80%作为训练集,20%作为测试集如果当数据量不是很大的时候(万级别以下)的时候将训练集、验证集以及测试集划分为6:2:2;若是数据很大,可以将训练集、验证集、测试集比例调整为98:1:1;但是当可用的数据很少的情况下也可以使用一些高级的方法,比如留一法,K折交叉验证等训练方法:fit()方法。每一种算法都有相应的fit()方法,如SVM算法:sklearn.svm.SVC.fit(train_X,train_y),得到训练完成的模型,此时模型参数已经生成两种训练中出现的现象:过拟合:模型过于复杂,过度的拟合了训练数据。解决方案:获取更多的训练数据、减少输入的特征数量、降低模型复杂度,如减少网络深度等欠拟合:模型过于简单,连训练数据都无法很好的拟合。解决方案:增加有价值的特征、增加模型的复杂性,如增加多项式特征,增加网络深度等算法选择预测sklearn的predict()方法每一种算法都有对应的predict()方法,如SVM算法:sklearn.svm.SVC.predict(test_X),返回值是预测的结果参数调优不同算法的超参数举例:KNN:K参数多项式回归:多项式特征变换中的degree参数决策树:树的最大深度max_depth参数支持向量机:惩罚系数C参数、核函数种类kernel参数、gamma参数。C是惩罚系数,即对误差的宽容度。C越高,说明越不能容忍出现误差,容易过拟合。C越小,容易欠拟合。C过大或过小,泛化能力变差。gamma是选择RBF函数作为kernel后,该函数自带的一个参数。隐含地决定了数据映射到新的特征空间后的分布,gamma越大,支持向量越少,gamma值越小,支持向量越多。支持向量的个数影响训练与预测的速度。支持向量机(SVM)分类器(SVC)的超参数:SVC(C=1.0,kernel=“rbf”,gamma=0.1):选择rbf时的超参数SVC(C=1.0,kernel=“poly”,degree=2):选择poly时的超参数SVC(C=1.0,kernel=“linear”):选择linear时的超参数超参数:不是由算法训练出来的,而是人为设定的,不同算法有不同的超参数模型选择:交叉验证交叉验证法是一种超参数选择的方法,也叫模型选择,主要用于超参数调优,得分最佳的超参数为最优超参数,进行交叉验证时需要用到验证集。当数据集比较小的时候,交叉验证可以“充分利用”有限的数据找到合适的模型参数,防止过度拟合交叉验证的使用方法:sklearn.model_selection.cross_val_score(),返回值是模型的得分列表score,包含了每一轮交叉验证的得分,例如:对于10折交叉验证,则score列表中包含10个得分,可以求取平均值作为最终得分,主要参数:estimator:模型对象X:训练集特征数据y:训练集的标签cv:int,cross-validationgeneratororaniterable,default=None,交叉验证的轮数,如K折交叉验证,则cv=Kscoring:得分的类型,参数为字符串类型,可以选择常用的‘accuracy’、‘precision’、‘f1’等模型评估分类:sklearn.metrics.classification_report()聚类:sklearn.metrics.silhouette_score()回归:sklearn.metrics.r2_score()分类模型评估sklearn.metrics.classification_report(),返回值为模型综合评估报告(包含了准确率Precision、
精确度accuracy、
召回率recall、f1-score)主要参数:y_true:样本的真实值y_pred:样本的预测值digits:int,default=2,结果保留的小数点位数F1score=2*recall*precision/(recall+precision)Precision和Recall都是针对某个类而言的,比如正类别的Recall,负类别的Recall准确率(Precision):查准率sklearn.metrics.precision_score(),返回值为模型的precision得分主要参数:y_true:样本的真实值y_pred:样本的预测值pos_label:strorint,default=1,正类的标签值Precision和Recall都是针对某个类而言的,比如正类别的Precision,负类别的Precision例如:正样本的Precision表示预测为正的样本中有多少预测对了精确度(accuracy)sklearn.metrics.accuracy_score(),返回值为模型的accuracy得分主要参数:y_true:样本的真实值y_pred:样本的预测值Accuracy表示在所有样本中,有多少比例的样
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 北师大版小学五年级下册语文全册教案
- 利用智能图像处理技术提升防伪效果
- 2024高中地理第六章人类与地理环境的协调发展章末总结提升练含解析新人教版必修2
- 2024高中生物第4章种群和群落第3节群落的结构课堂演练含解析新人教版必修3
- 2024高考物理一轮复习第八章恒定电流实验10练习使用多用电表学案新人教版
- 2024高考化学一轮复习第4章非金属及其化合物第12讲氯及其化合物卤族元素学案
- 2024高考历史一轮复习方案专题三现代中国的政治建设祖国统一与对外关系专题整合备考提能教学案+练习人民版
- 2024高考地理一轮复习第一章第2讲地球的自转及地理意义教案含解析新人教版
- (4篇)2024年幼儿园家访工作总结
- 2024年湖北交通职业技术学院高职单招职业技能测验历年参考题库(频考版)含答案解析
- 2024年高标准农田建设土地承包服务协议3篇
- 阅读理解(专项训练)-2024-2025学年湘少版英语六年级上册
- 无创通气基本模式
- 飞行原理(第二版) 课件 第4章 飞机的平衡、稳定性和操纵性
- 暨南大学珠海校区财务办招考财务工作人员易考易错模拟试题(共500题)试卷后附参考答案
- 羊水少治疗护理查房
- 2024年全国统一高考英语试卷(新课标Ⅰ卷)含答案
- OQC培训资料教学课件
- 2024年8月CCAA国家注册审核员OHSMS职业健康安全管理体系基础知识考试题目含解析
- 2024年认证行业法律法规及认证基础知识 CCAA年度确认 试题与答案
- 体育赛事组织与实施操作手册
评论
0/150
提交评论