交叉验证

机器学习周志华——模型评估与选择

北城以北 提交于 2020-03-24 13:54:40
(1)经验误差与过拟合 错误率error rate:分类错误的样本数占样本总数的比例a。 精度accuracy:分类正确的样本数占样本总数的比例1-a。 误差error:|实际预测输出-样本真实输出| 训练误差training error或经验误差empirical error:学习器在训练集上的误差 泛化误差generalization error:在新样本上的误差 学习的理想情况:从训练样本中尽可能学出适用于所有潜在样本的“普通规律” 过拟合(overfitting):学习器把训练样本学的“太好”,很可能导致已将训练样本自身一些特点当作了潜在样本的共性,如些导致泛化性能下降。由于学习能力太强导致。 欠拟合underfitting:对训练样本的一般性质未学好。通常由于学习能力低下导致。 欠拟合比较容易解决,过拟合则不太好解决,过拟合是机器学习面临的关键障碍,但过拟合是无法彻底避免的。 现实学习任务中,选择学习算法及确定参数配置即是“模型选择”(model selection)问题。 (2)模型评估 由于无法获取所有样本上的泛化误差,因此一般只能以测试集上的“测试误差”(testing error)作为泛化误差的近似。 测试集应尽可能与训练集互斥,即测试样本未在训练中使用过。 针对m个样本的数据集D={( x 1 , y 1 ),( x 2 , y 2 ),…,( x m , y

小牛的学习笔记---声纳数据分析

假如想象 提交于 2020-03-17 00:29:24
本讲内容: 如何加载和准备数据 如何创建一个基线神经网络 如何使用scikit-learn和k-fold交叉验证评估Keras模型 数据准备如何提升你的模型性能 如何调整网络拓扑结构可以提高模型的性能试验 1.数据集描述 声纳数据集区分岩石和金属,输出变量是一个字符串“M”和“R”我岩石,它将需要转化为整数 1 和 0 。 2.导包 import numpy import pandas from keras . models import Sequential from keras . layers import Dense from keras . wrappers . scikit_learn import KerasClassifier from sklearn . model_selection import cross_val_score #交叉验证的分数结果 from sklearn . preprocessing import LabelEncoder from sklearn . model_selection import StratifiedKFold #用于交叉验证 #from sklearn.preprocessing import StandardScaler#标准化 #from sklearn.pipeline import Pipeline 3.读数据

模型融合

情到浓时终转凉″ 提交于 2020-03-07 19:31:26
好文章: https://zhuanlan.zhihu.com/p/61705517 一个stacking过程: _N_FOLDS = 5 # 采用5折交叉验证 kf = KFold(n_splits=_N_FOLDS, random_state=42) # sklearn的交叉验证模块,用于划分数据 def get_oof(clf, X_train, y_train, X_test): # X_train: 1000 * 10 # y_train: 1 * 1000 # X_test : 500 * 10 oof_train = np.zeros((X_train.shape[0], 1)) # 1000 * 1 Stacking后训练数据的输出 oof_test_skf = np.empty((_N_FOLDS, X_test.shape[0], 1)) # 5 * 500 * 1,oof_test_skf[i]代表第i折交叉验证产生的模型对测试集预测结果 for i, (train_index, test_index) in enumerate(kf.split(X_train)): # 交叉验证划分此时的训练集和验证集 kf_X_train = X_train[train_index] # 800 * 10 训练集 kf_y_train = y_train[train

交叉验证

妖精的绣舞 提交于 2020-03-06 03:16:13
交叉验证可分解为交叉和验证,两者都必不可少。 先讲讲较常见的cross-validation的例子 step 1: 将有标签的数据平均分为6份, D 1, D2, D3, D4, D5, D6, 将D6设置成测试集,不参与任何的模型训练和参数选择,只用来评估最后模型的结果 step 2: 对所有想要测试数据预处理,模型和参数的组合列出来 (unigram 处理特征的 c=1 的 linear SVM, bigram 处理特征的 c=1 的 linear SVM)。 step 3: D1 到 D5轮流做validation set, 用剩余四个做模型训练集, 训练每一个step 2 得到的组合。并在validation set上计算度量指标(MSE, ACCURACY, F1等)。 step 4: 根据每个模型组合在五个validation set中的平均指标,选出最好的模型组合 step 5: 选择最好的模型参数组合, 使用D1,D2,D3,D4,D5来进行训练,并计算在D6上的指标,用此来估计模型的泛化误差 作者:大数据小学生 链接:https://www.zhihu.com/question/39259296/answer/623836397 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 来源: https://www.cnblogs.com

MachineLearning入门-11(算法评估)

南楼画角 提交于 2020-03-03 10:40:40
评估就是估计算法在预测新数据时候能达到什么程度,但这不是对算法准确度的保证。 当评估完算法模型之后,可以用整个数据集(训练数据集和评估数据集的合集)重新训练算法,生成最终的算法模型。 接下来将学习4种不同的分离数据集的方法,用来分离训练数据集和评估数据集,并用其评估算法模型: 分离训练数据集和评估数据集 K折交叉验证分离 弃一交叉验证分离 重复随机评估。训练数据集分离 分离训练数据集和评估数据集 最简单的方法就是将评估数据集和训练数据集完全分开,采用评估数据集来评估算法模型。通常将67%的数据集作为训练集,将33%的数据作为评估集。这是一种非常简洁。快速的数据分离技术,通常在具有大量数据。数据分布比较平衡,或者对问题的展示比较平均的情况下非常有效。 下面给出一个简单的按照67%,34%的比例分离数据,来评估逻辑回归模型的例子。 1 #数据集分离 2 from pandas import read_csv 3 from sklearn.model_selection import train_test_split 4 from sklearn.linear_model import LogisticRegression 5 6 filename='/home/aistudio/work/pima_data1.csv' 7 names=['preg','plas','pres',

翻译——3_Gaussian Process Regression

会有一股神秘感。 提交于 2020-02-25 19:46:27
使用不同的机器学习方法进行预测 续上篇 2_Linear Regression and Support Vector Regression 高斯过程回归 %matplotlib inline import requests from StringIO import StringIO import numpy as np import pandas as pd # pandas import matplotlib.pyplot as plt # module for plotting import datetime as dt # module for manipulating dates and times import numpy.linalg as lin # module for performing linear algebra operations from __future__ import division import matplotlib import sklearn.decomposition import sklearn.metrics from sklearn import gaussian_process from sklearn import cross_validation pd.options.display.mpl_style = 'default

K折交叉验证

随声附和 提交于 2020-02-12 19:47:16
在机器学习领域,特别是涉及到模型的调参与优化部分,k折交叉验证是一个经常使用到的方法,本文就结合示例对它做一个简要介绍。 该方法的基本思想就是将原始数据进行分组,一部分做为训练集来训练模型,另一部分做为测试集来评价模型。k折,就是将原数据分为k份,其中k-1份用于训练模型,另一份用于检验模型效果。 k折交叉验证的基本思路如下: 第一步,不重复抽样将原始数据随机分为 k 份; 第二步,挑选其中 1 份作为测试集,剩余 k-1 份作为训练集用于模型训练,在训练集上训练后得到一个模型,用这个模型在测试集上测试,保存模型的评估指标; 第三步,重复第二步 k 次(确保每个子集都有一次机会作为测试集); 第四步,计算 k 组测试指标的平均值作为模型精度的估计,并作为当前 k 折交叉验证下模型的性能指标。 通常情况下,k一般取10;当数据量小时,k可以大一点,这样训练集占整体比例就不至于太小,但训练的模型个数也随之增多;数据量大的时候,k可以小一点。 1 使用k折交叉验证反映模型平均性能 为了贴近实用,下面以一个鸢尾花分类的例子具体说明该验证方法的细节: 上图是在没有使用k折交叉验证的情况下,一个模型初次训练之后的准确率,并不能代表模型的平均性能。 使用了k折交叉验证方法后,准确率情况如下,大致可以反映该模型的平均水平: 2 借助k折交叉验证调整模型超参数 从上图中可以知,对于每一个超参数值

K折交叉验证

夙愿已清 提交于 2020-02-11 22:58:58
import pandas as pd #读取数据集 datas = pd . read_csv ( 'wdbc.csv' , header = None ) #使用LabelEncoder类将类标转换为整数 from sklearn . preprocessing import LabelEncoder X = datas . loc [ : , 2 : ] . values Y = datas . loc [ : , 1 ] . values le = LabelEncoder ( ) y = le . fit_transform ( Y ) #划分训练数据集 from sklearn . model_selection import train_test_split x_train , x_test , y_train , y_test = train_test_split ( X , y , test_size = 0.2 ) from sklearn . preprocessing import StandardScaler from sklearn . decomposition import PCA from sklearn . linear_model import LogisticRegression from sklearn . pipeline import

机器学习(Machine Learning)- 吴恩达(Andrew Ng) 学习笔记(十)

久未见 提交于 2020-02-06 23:45:46
Advice for applying machine learning Decide what to try next Debugging a learning algorithm 调试学习算法 Suppose you have implemented regularized linear regression to predict housing prices. \[ J(\theta) = \frac{1}{2m} \left[ \sum_{i=1}^m(h_\theta(x^{(i)}) - y^{(i)})^2 + \lambda\sum_{j=1}^m\theta_j^2 \right] \] However, when you test your hypothesis on a new set of houses, you find that it makes unacceptably large errors in its predictions. What should you try next? 假如你已经完成了房价预测的正则化线性回归(也就是最小化代价函数 \(J\) 的值),然而在你测试新的样例时发现产生了巨大的误差。要想改进这个算法你该怎么办? 可选的方法: Get more training examples 用更多的训练样本(收集样本耗费太大精力)

统计学习方法笔记

烂漫一生 提交于 2020-02-03 03:33:55
统计学习方法概论 1.1 统计学习 统计学习 (statistics learning): 计算机 基于 数据 构建 概率统计模型 并运用 模型 对 数据 进行 预测与分析 。也称为 统计机器学习 (statistics machine learning)。 统计学习的特点: 以 计算机及网络 为平台,是建立在计算机及网络之上的; 以 数据 为研究对象,是数据驱动的学科; 目的是对 数据 进行 预测与分析 ; 统计学习以 方法 为中心,统计学习方法构建 模型 并应用模型进行预测与分析; 是 概率论、统计学、信息论、计算理论、最优化理论及计算机科学等 多个领域的交叉学科; // 现在我们所说的机器学习,往往是指 统计机器学习 。 统计学习的对象 数据(data) 。 首先呢,统计学习从数据出发,提取数据的特征,抽象出数据中的模型,发现数据中的知识,最终又回到对数据的分析预测中去。 其次,作为统计学习的对象,数据是多样的,它包括存在于计算机及网络上的各种 数字 、 文字 、 图像 、 视频 、 音频 数据以及它们的组合。 关于数据的基本假设: 同类数据具有一定的统计规律性。 (什么叫“同类数据”:具有某种共同性质的数据,比如英文文章,互联网网页,数据库中的数据等,它们具有统 计规律性 ,所以可以用 概率统计方法 来进行处理。比如,可以用随机变量描述数据中的特征