欠拟合

机器学习 --基础入门介绍 他来啦!!!

只愿长相守 提交于 2020-08-08 12:15:49
行业热词解释 机器学习基本术语 假如我们有一组天气数据,是来自全世界不同国家和地区的每日天气,内容包括最高温度、最低温度、平均湿度、风速之类的相关数据,例如数据的一部分是这样的: 城市 最高温度 最低温度 相对湿度 某时刻风速 A市 36℃ 28℃ 58% 16.7km/h B市 28℃ 17℃ 86% / C市 34℃ 29℃ 39% 20.4km/h 在这组数据中,我们将称A市、B市、C市等市以及其情况的总和称为 数据集 (data set)。表格中的每一行,也就是某城市和它的情况被称为一个 样例 (sample/instance)。表格中的每一列(不包括城市),例如最高温度、最低温度,被称为 特征 (feature/attribute),而每一列中的具体数值,例如36℃ 、28℃,被称为 属性值 (attribute value)。数据中也可能会有 缺失数据 (missing data),例如B市的某时刻风速,我们会将它视作缺失数据。 如果我们想预测城市的天气,例如是晴朗还是阴雨天,这些数据是不够的,除了特征以外,我们还需要每个城市的具体天气情况,也就是通常语境下的结果。在机器学习中,它会被称为 标签 (label),用于标记数据。值得注意的是,数据集中不一定包含标签信息,而这种区别会引起方法上的差别。我们可以给上述示例加上一组标签: 城市 天气 A市 晴朗 B市 阴雨 C市

从 0 开始机器学习

寵の児 提交于 2020-08-08 00:59:38
今天跟大家分享下如何诊断一个算法是否存在偏差或者方差的问题,以及如何选择优化算法的方向。 一、如何确定下一步的计划? 当我们设计了一个机器学习算法,比如线性回归或逻辑回归,并且算法已经能够正常工作,只是效果还不是太好,那用什么方法来提高算法的性能或者准确度呢?或者说在想办法提升性能之前,有没有一种方法来告诉我们下一步对我们设计的机器学习算法该采取什么步骤,比如: 获得更多的训练样本 尝试减少特征的数量 尝试获得更多的特征 尝试增加多项式特征 尝试减少正则化程度 尝试增加正则化程度 ... 上面 6 种思路都可以作为提升一个算法性能的选择,可是我们对一个算法到底该选择哪一种优化的思路呢?今天就跟大家分享下如何来评估一个机器学习算法,也称为 机器学习诊断法 ,这个方法可以明确地告诉我们: 要想进一步提升算法的性能,我们到底该采取什么方法是比较有效地,是增加训练集数量,还是增加或者减少特征数等。 使用这个方法的必要性是可以帮助我们节省时间,让我们可以更加明确优化算法的方向,不至于像无头苍蝇一样胡乱的选择优化思路,最终效果还不行。 二、训练集、交叉验证集,测试集 在学习诊断法之前,需要先对训练数据集进行处理,对于特征变量比较少的情况,我们可以直接画出假设函数在训练集上的拟合效果,比如: 但是当特征数量很多以至于不能用曲线表示拟合效果时

七月算法机器学习 7 工作流程与模型调优

柔情痞子 提交于 2020-08-07 19:32:28
目录 特征工程 模型选择 交叉验证 模型参数含义 模型效果优化 模型状态 o  小笑话两则 模型状态验证工具: 学习曲线 不同模型状态处理 线性模型的权重分析 Bad-case分析 模型融合 Bagging Adaboost Gradient Boosting Tree 特征工程 模型选择 选择模型后,在一些超参数,需要选择不同的值 线性回归 特征的次数可以变化 交叉验证 模型参数含义 模型效果优化 模型状态 左边欠拟合,中间刚合适,右边边拟合 o  小笑话两则 一個非洲酋長到倫敦訪問, 一群記者在機場截住了他。 早上好, 酋長先生“ , 其中一人問道: 你的路途舒適嗎? 酋長發出了一連串刺耳的聲音哄、 哼、 啊、 吱、 嘶嘶, 然后用純正的英語說 道 : 是的, 非常地舒適。 那麼! 您准備在這里待多久? 他發出了同樣的一連串噪音, 然後答: 大約三星期, 我想。 酋長, 告訴我, 你是在哪學的這樣流利的英語? 迷惑不解的記者問。 又是一陣哄、 吭、 啊、 吱、 嘶嘶聲, 酋長說: 從短波收音機裡。 欠拟合: 觉得自己将来的白马王子又会赚钱又有颜 过拟合: 遇到几个渣男就得出结论“男人没一个好东西” 欠拟合: “ 你太天真了” 过拟合: “你想太多了” 模型状态验证工具: 学习曲线 欠拟合,过拟合,正适合 都很低可以欠拟合 训练集准确度很高但在交叉验证集上不好-----过拟合

第11章 支撑向量机 SVM 学习笔记 下 高斯核函数RBF

泪湿孤枕 提交于 2020-07-28 12:00:10
目录 高斯核函数 多项式特征 直观理解高斯核函数 scikit-learn中的高斯核函数 scikit-learn 中的 RBF 核 高斯核函数 径向基函数 本质是将每个样本点---------- 变形比较复杂,最后的形式简单,显示核函数的优点和威力 多项式特征 高斯核本质做的就是这件事 两个特殊点l1,l2,landmark 两个landmark就将一维x变成二维 直观理解高斯核函数 plt.scatter(x[y==0], [0]*len(x[y==0])) plt.scatter(x[y==1], [0]*len(x[y==1])) plt.show() def gaussian(x, l): gamma = 1.0 return np.exp(-gamma * (x-l)**2) l1, l2 = -1, 1 X_new = np.empty((len(x), 2)) for i, data in enumerate(x): X_new[i, 0] = gaussian(data, l1) X_new[i, 1] = gaussian(data, l2) plt.scatter(X_new[y==0,0], X_new[y==0,1]) plt.scatter(X_new[y==1,0], X_new[y==1,1]) plt.show() 线性可分 数据的映射过程

【实战】基于OpenCv的SVM实现车牌检测与识别(二)

北慕城南 提交于 2020-05-08 13:11:16
这期继续分享SVM实践项目:车牌检测与识别,同时也介绍一些干货 回顾一下, 上期介绍了OpenCv的SVM模型训练 ,这期继续介绍一下识别过程 。 这幅流程图还是很经典,直观的。 我们先分享一下上期说的: OpenCv的中文显示方法 我使用的是PIL的显示方法,下面简介一下教程: 1 : 字体simhei.ttf需要下载 ,然后在font = ImageFont.truetype("./simhei.ttf", 20, encoding=“utf-8”)指定simhei.ttf的路径即可 , 同样的需要把这个字体放在的路径找到或者放在运行代码同级,都行。 2: 中文编码为utf-8。否则中文会显示为矩形。str1 = str1.decode(‘utf-8’) 3: 上代码: from PIL import Image , ImageDraw , ImageFont import cv2 import numpy as np # cv2读取图片 img = cv2 . imread ( r 'C:\Users\acer\Desktop\black.jpg' ) # 名称不能有汉字 cv2img = cv2 . cvtColor ( img , cv2 . COLOR_BGR2RGB ) # cv2和PIL中颜色的hex码的储存顺序不同 pilimg = Image .

线性模型

左心房为你撑大大i 提交于 2020-05-06 15:32:02
import numpy as np import matplotlib.pyplot as plt import pandas as pd import mglearn from sklearn.model_selection import train_test_split 1.用于回归的线性模型 对于回归问题,线性模型预测的一般公式如下: y = w[0] x[0]+w[1] x[1]+...+w[p]*x[p]+b 这里x[0]到x[p]表示单个数据点的特征(本例中特征个数为p+1),w和b是学习模型的参数,yᨈ是模型的预测结果。对于单一特征的数据集,公式如下: y = w[0]*x[0]+b 这就是高中数学里的直线方程。这里w[0]是斜率,b是y轴偏移。对于有更多特征的数据集,w包含沿沿每个特征坐标轴的斜率。也可以将预测的响应值看作输入特征的加权求和,权重由w的元素给出(可以取负值)。 下列代码可以在一维wave数据集上学习参数w[0]和b mglearn.plots.plot_linear_regression_wave() w[0]: 0.393906 b: -0.031804 用于回归的线性模型可以表示为这样的回归模型:对单一特征的预测结果是一条直线,两个特征时是一个平面,或者在更高维度(即更多特征)时是一个超平面 如果将直线的预测结果与 的预测结果相比较

k近邻

强颜欢笑 提交于 2020-05-05 16:09:56
import numpy as np import matplotlib.pyplot as plt import pandas as pd import mglearn k-NN算法是最简单的机器学习算法。构建模型只需要保存训练数据集即可。想要对新数据点进行预测,算法会在训练数据中找到最近的数据点,也就是它的“最近邻”。 k-NN算法最简单的版本只考虑一个最近邻,也就是与我们想要预测的点的数据点最近的训练数据点。预测结果就是这个训练数据点的已知输出。 mglearn.plots.plot_knn_classification(n_neighbors=1) 除了考虑最近邻,还可以考虑任意个(k个)邻居。这也是k近邻算法名字的来历。在考虑多于一个邻居的情况时,我们用投票法来指定标签。对于每个测试点,我们数一数多少个邻居分别属于什么类别,将出现次数多的邻居的类别(k个近邻中占多数的类别)作为预测结果。 mglearn.plots.plot_knn_classification(n_neighbors=3) # 使用scikit-learn实现k近邻算法 from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier X, y = mglearn

【回归预测】SVM基础实战篇之经典预测(三)

ぃ、小莉子 提交于 2020-05-04 14:16:23
​ 【玩点有趣的】这几篇SVM介绍是从0到1慢慢学会支持向量机,将是满满的干货,都是我亲自写的,可以随我一起从头了解SVM,并在短期内能使用SVM做到想要的分类或者预测~我也将附上自己基础训练的完整代码,可以直接跑,建议同我一样初学者们,自己从头到尾打一遍,找找手感,代码不能光看看,实践出真知! ​ 回顾一下, 上上篇 ,我们建立和比较了线性分类器和非线性分类器,比较了多元线性核函数和线性核函数,解决了类型数量不平衡问题, 上篇 ,我们使用SVC做了简单的分类,话不多说,今天我们开始SVR做回归预测,原理篇和实战基础一 请参见上几篇博客,我们循序渐进慢慢贴近真实情景!解决生活问题 估算交通流量 首先做一个比较 有趣的应用 ,我们使用了 SVR来预测:在洛杉矶棒球队进行主场比赛期间,体育场周边马路通过的汽车数量 如图: 这里 一万七千条记录数据 ,分别表示: 星期,时间,对手球队名,比赛是否正在进行,通过汽车的数量 【完整代码】上代码: import numpy as np from sklearn import preprocessing from sklearn . svm import SVR input_file = 'traffic_data.txt' X = [ ] count = 0 with open ( input_file , 'r' ) as f : for

[机器学习实战-Logistic回归]使用Logistic回归预测各种实例

天大地大妈咪最大 提交于 2020-05-01 03:43:22
目录 本实验代码已经传到gitee上,请点击查收! 一、实验目的 二、实验内容与设计思想 实验内容 设计思想 三、实验使用环境 四、实验步骤和调试过程 4.1 基于Logistic回归和Sigmoid函数分类 4.2 基于最优化方法的最佳回归系数确定 4.2.1 梯度上升算法: 4.2.2 测试算法:使用梯度上升算法找到最佳参数 4.2.3 分析数据:画出决策边界 4.2.4 训练算法:随机梯度上升 4.3 示例1:从疝气病症预测病马的死亡率 4.4 示例2:从打斗数和接吻数预测电影类型(数据自制) 4.5 示例3:从心脏检查样本帮助诊断心脏病(数据来源于网络) 4.6 改进函数封装使不同的样本数据可以使用相同的函数封装 五、实验总结 六、参考资料 本实验代码已经传到gitee上,请点击查收! Logistic_Examples 一、实验目的 学习Logistic回归的基本思想。 Sigmoid函数和Logistic回归分类器。 学习最优化算法--梯度上升算法、随机梯度上升算法等。 运用Logistic回归预测各种实例。 二、实验内容与设计思想 实验内容 基于Logistic回归和Sigmoid函数分类 基于最优化方法的最佳回归系数确定 示例1:从疝气病症预测病马的死亡率 示例2:从打斗数和接吻数预测电影类型(数据自制) 示例3:从心脏检查样本帮助诊断心脏病(数据来源于网络)

逻辑归回

萝らか妹 提交于 2020-04-24 13:19:33
1.用自己的话描述一下,什么是逻辑回归,与线性回归对比,有什么不同? 线性回归:   线性回归是一种回归分析技术.回归分析就是利用样本(已知数据),产生拟合方程,从而对未知数据进行预测,回归在于分析自变量与因变量之间的关系。线性回归属于有监督学习,因此方法和监督学习应该是一样的,先给定一个训练集,根据这个训练集学习出一个线性函数,然后测试这个函数训练的好不好,挑选出最好的函数即可 线性回归函数:y = ax + b, 其中a和b是待求参数。 逻辑回归:函数p = S(ax + b), 其中a和b是待求参数, S是逻辑斯蒂函数,然后根据p与1-p的大小确定输出的值,通常阈值取0.5,若p大于0.5则归为1这类。 可以认为逻辑回归的输入是线性回归的输出,将逻辑斯蒂函数作用于线性回归的输出得到输出结果。 线性回归与逻辑回归最大的区别就在于他们的因变量不同。 2.自述一下什么是过拟合和欠拟合? 欠拟合的根本的原因是特征维度过少,导致拟合的函数无法满足训练集,误差较大。可以通过增加特征维度来解决。 过拟合根本的原因则是特征维度过多,导致拟合的函数完美的经过训练集,但是对新数据的预测结果则较差。可以减少特征维度; 人工选择保留的特征,或者模型选择算法解决。或者将数据正则化; 保留所有的特征,通过降低参数θ的值。 3.思考一下逻辑回归的应用场景有哪些? (1)预测事件发生概率 (2