精华内容
下载资源
问答
  • 传统处理方法,利用ranperm生成随机的编号,取前面百分比的数据作为训练集,余下的作为测试集。 代码如下: num_points = size(X,2); split_point = round(num_points*0.7); seq = randperm(num_points); X_train =...

    将数据分成训练集和测试集:

    • 传统处理方法,利用ranperm生成随机的编号,取前面百分比的数据作为训练集,余下的作为测试集。
      代码如下:
    num_points = size(X,2);
    split_point = round(num_points*0.7);
    seq = randperm(num_points);
    X_train = X(:,seq(1:split_point));
    Y_train = Y(seq(1:split_point));
    X_test = X(:,seq(split_point+1:end));
    Y_test = Y(seq(split_point+1:end));
    
    • 利用Matlab自带函数cvpartition( cross-validation partition)
      优点:
    • 可以按照需求生成分层抽样,还是非分层抽样,这样可以得到更准确的预测。
    • 可以生成单次数据集,还是多次数据集。即k-fold test,这对于算法的准确性评估是非常重要的。
      生成单次测试数据:
    c = cvpartition(n,'HoldOut',p) % P:测试集占比
    

    生成k-fold测试集

    c = cvpartition(n,'KFold',k) 
    

    关于测试集和训练集的概念,此篇博文讲的很清楚:
    https://blog.csdn.net/TOMOCAT/article/details/81589617

    展开全文
  • statebasedml是一个Python库,用于通过基于状态的机器学习训练数据。 下面的文档应帮助您理解传递给statebasedml函数的参数以及它们返回的内容,但我建议从示例开始。 在查看示例 安装说明 python3 -m pip install...
  • 转自:http://www.xuebuyuan.com/1409669.htmlcrossvalind交叉验证Generate cross-validation indices 生成交叉验证索引Syntax语法Indices = crossvalind('Kfold', N, K) K折交叉[Train, Test] = crossvalind('...

    转自:http://www.xuebuyuan.com/1409669.html

             https://blog.csdn.net/bbbeoy/article/details/72967794

    针对经验风险最小化算法的过拟合的问题,给出交叉验证的方法,这个方法在做分类问题时很常用:

    一:简单的交叉验证的步骤如下:

    1、 从全部的训练数据 S中随机选择 中随机选择 s的样例作为训练集 train,剩余的 作为测试集 作为测试集 test。

    2、 通过对测试集训练 ,得到假设函数或者模型 。
    3、 在测试集对每一个样本根据假设函数或者模型,得到训练集的类标,求出分类正确率。

    4,选择具有最大分类率的模型或者假设。

    这种方法称为 hold -out cross validation 或者称为简单交叉验证。由于测试集和训练集是分开的,就避免了过拟合的现象

    二:k折交叉验证 k-fold cross validation

    1、 将全部训练集 S分成 k个不相交的子集,假设 S中的训练样例个数为 m,那么每一个子 集有 m/k 个训练样例,,相应的子集称作 {s1,s2,…,sk}。
    2、每次从分好的子集中里面,拿出一个作为测试集,其它k-1个作为训练集

    3、根据训练训练出模型或者假设函数。
    4、 把这个模型放到测试集上,得到分类率。

    5、计算k次求得的分类率的平均值,作为该模型或者假设函数的真实分类率。

    这个方法充分利用了所有样本。但计算比较繁琐,需要训练k次,测试k次。


    三:留一法  leave-one-out cross validation

    留一法就是每次只留下一个样本做测试集,其它样本做训练集,如果有k个样本,则需要训练k次,测试k次。

    留一发计算最繁琐,但样本利用率最高。适合于小样本的情况。


    crossvalind交叉验证

    Generate cross-validation indices  生成交叉验证索引

    Syntax语法

    Indices = crossvalind('Kfold', N, K) K折交叉
    [Train, Test] = crossvalind('HoldOut', N, P)
    [Train, Test] = crossvalind('LeaveMOut', N, M)留M法交叉验证,默认M为1,留一法交叉验证
    [Train, Test] = crossvalind('Resubstitution', N, [P,Q])
    [...] = crossvalind(Method, Group, ...)
    [...] = crossvalind(Method, Group, ..., 'Classes', C)
    [...] = crossvalind(Method, Group, ..., 'Min', MinValue)

    部分转载自https://blog.csdn.net/NNNNNNNNNNNNY/article/details/45789323


    交叉验证是一种随机循环验证方法,它可以将数据样本随机分割成几个子集。交叉验证主要用于评估统计分析或机器学习算法的泛化能力等。
    对于第一种在评估机器学习算法的泛化能力时,我们可以选择随机分割后的一部分数据作为训练样本,另一部分作为测试样本。具体实现流程如下:

    Data = rand(9,3);%创建维度为9×3的随机矩阵样本
    indices = crossvalind('Kfold', 9, 3);%将数据样本随机分割为3部分
    for i = 1:3 %循环3次,分别取出第i部分作为测试样本,其余两部分作为训练样本
        test = (indices == i);
        train = ~test;
        trainData = Data(train, :);
        testData = Data(test, :);
    end
    相应输出结果:
    生成的随机矩阵Data:

    indices数据,即分成的三类,数字相同表示对应的行数为同一类:
    这里写图片描述
    当i=3时的test数据:
    这里写图片描述
    对应的train数据(即对test取反):
    这里写图片描述
    testData(即test数据中‘1’所对应的行的数据)
    这里写图片描述
    trainData:
    这里写图片描述

    k-折交叉验证(k-fold crossValidation):
    在机器学习中,将数据集A分为训练集(training set)B和测试集(test set)C,在样本量不充足的情况下,为了充分利用数据集对算法效果进行测试,将数据集A随机分为k个包,每次将其中一个包作为测试集,剩下k-1个包作为训练集进行训练。
    在matlab中,可以利用:
    indices=crossvalind('Kfold',x,k);
    来实现随机分包的操作,其中x为一个N维列向量(N为数据集A的元素个数,与x具体内容无关,只需要能够表示数据集的规模),k为要分成的包的总个数,输出的结果indices是一个N维列向量,每个元素对应的值为该单元所属的包的编号(即该列向量中元素是1~k的整随机数),利用这个向量即可通过循环控制来对数据集进行划分。

    例:

      [M,N]=size(data);//数据集为一个M*N的矩阵,其中每一行代表一个样本
        indices=crossvalind('Kfold',data(1:M,N),10);//进行随机分包
        for k=1:10//交叉验证k=10,10个包轮流作为测试集
            test = (indices == k); //获得test集元素在数据集中对应的单元编号
            train = ~test;//train集元素的编号为非test元素的编号
            train_data=data(train,:);//从数据集中划分出train样本的数据
             train_target=target(:,train);//获得样本集的测试目标,在本例中是train样本的实际分类情况
            test_data=data(test,:);//test样本集
            test_target=target(:,test);//test的实际分类情况
            ...........
          end
    crossvalind函数

    ①indices =crossvalind('Kfold', N, K): 
    该命令返回一个对于N个观察样本的K个fold(意为折,有“层”之类的含义,感觉还是英文意思更形象)的标记(indices)。该标记中含有相同(或者近似相同)比例的1—K的值,将样本分为K个相斥的子集。在K-fold交叉检验中,K-1个fold用来训练,剩下的一个用来测试。此过程循环K次,每次选取不同的fold作为测试集。K的缺省值为5。 使用程序: 

    [m n]=size(data); %data为样本集合。每一行为一个观察样本 
    indices = crossvalind('Kfold',m,10); %产生10个fold,即indices里有等比例的1-10 
    for i=1:10 
    test=(indices==i); %逻辑判断,每次循环选取一个fold作为测试集 train=~test; %取test的补集作为训练集,即剩下的9个fold 
    data_train=data(trian,:); %以上得到的数都为逻辑值,用与样本集的选取 label_train=label(train,:); %label为样本类别标签,同样选取相应的训练集 data_test=data(test,:); %同理选取测试集的样本和标签 label_test=label(test,:); end 
    ②[Train, Test] = crossvalind('HoldOut',N, P): 
    该命令返回一个逻辑值的标记向量,从N个观察样本中随机选取(或近似于)P*N个样本作为测试集。故P应为0-1,缺省值为0.5。 使用程序: 
    groups=ismenber(label,1); %label为样本类别标签,生成一个逻辑矩阵groups,1用来逻辑判断筛选 
    [train, test] = crossvalind('holdOut',groups); %将groups分类,默认比例1:1,即P=0.5 
    ③[Train, Test] = crossvalind('LeaveMOut',N, M): 
    该命令返回一个逻辑值的标记向量,从N个观察样本中随机选取M个样本作为测试集。M的缺省值为1。值得注意的是,LeaveMOut在循环中使用不能保证产生的是互补集合,即每次循环的随机选取是独立的。如果要用互补的话还是使用Kfold命令。 使用程序: 
    [m,n]=size(data); 
    [train,test]=crossvalind('LeaveMOut',m,10) 
    svmStruct = svmtrain(data(train,:),groups(train));  classes = svmclassify(svmStruct,data(test,:));  cp=classperf(groups); cr=cp.CorrectRate 

    ④[Train, Test] = crossvalind('Resubstitution',N, [P,Q]):

    本函数为②的一个特殊情况。当我不想把 P*N 剩下的部分全部作为训练集的时
    候使用该函数,用
    Q 指定一个比例, 选取 Q*N 作为训练集。两个集合的选取以
    最小化交集为原则。


    展开全文
  • 为对象添加注释可能是一项艰巨的任务……您可以跳过所有繁琐的工作,并使用经过预先训练机器学习模型为您自动添加对象注释。 MyVision利用流行的“ COCO-SSD”模型生成图像的边界框,并通过在浏览器上本地操作-将...
  • 机器学习数据资源可用于朴素贝叶斯垃圾邮件过滤器中的一些训练文本数据。使用朴素贝叶斯解决一些现实生活的问题时,需要先从文本内容得到字符串列表,然后生成词向量。其中朴素贝叶斯的一个最著名的应用:电子邮件...
  • 1、自编函数简单随机抽取 #!/usr/bin/python # 加载包 import numpy as np import pandas as pd def split_train_test(data,... np.random.seed(seed) # 使得生成的测试训练集具有可重复性 index = np.random....

    1、自编函数简单随机抽取

    #!/usr/bin/python
    # 加载包
    import numpy as np 
    import pandas as pd
    
    def split_train_test(data, test_ratio,seed = 1234):
        np.random.seed(seed)  # 使得生成的测试训练集具有可重复性
        index = np.random.permutation(len(data))  # 乱序
        t_size = int(len(data) * test_ratio)
        test_index = index[: t_size]
        train_index = index[t_size :]
        return data.iloc[train_index], data.iloc[test_index] # interge 
    
    

    该方法可以保证每次生成的数据集相同
    但当数据刷新时,该方法又失效。
    使用唯一ID 对数据进行分组才是保证更新数据后也照样和之前分的相同,仅加入了新增的数据

    2、ID的哈希值抽取

    #!/usr/bin/python
    import hashlib 
    
    def test_set_check(identifier, test_ratio, hash = hashlib.md5):
        """
        对哈希值加密后用二进制表示,提取最后一个字节
        对最后一个字节按照 256(一个字节大小) * test_ratio 划分成两类
        :param identifier: 需要处理成hashlib.md5 的ID编码
        :param test_ratio: 提取测试集的占比
        :return: 布尔值
        """
        return hash(np.int64(identifier)).digest()[-1] < 256 * test_ratio  # 加密后的结果用二进制表示
    
    def split_train_test_by_id(data, test_ratio, id_column, hash=hashlib.md5):
        ids = data[id_column]
        in_test_set = ids.apply(lambda id_ : test_set_check(id_, test_ratio, hash))
        return data.loc[~in_test_set], data.loc[in_test_set]
    
    

    3、sklearn函数随机抽取

    # 从model_selection中载入分测试集训练集函数
    from sklearn.model_selection import train_test_split
    
    train_set, test_set = train_test_split(data, test_size = 0.2, random_state = 42)
    
    

    4、sklearn函数分层抽取

    from sklearn.model_selection import StratifiedShuffleSplit
    
    split = StratifiedShuffleSplit(n_splits= 1, test_size= 0.2, random_state=42)
    
    for train_index, test_index in split.split(data, data['income_cat']):
        strat_train_set = data.loc[train_index]
        strat_test_set = data.loc[test_index]
    

    分层采样的比例几乎和原数据集一样 优于 随机抽样

    两者数据抽样比例比较如下:

    # 原数据
    a = data['income_cat'].value_counts()/len(data)
    
    # 分层抽样
    ftr = strat_train_set['income_cat'].value_counts()/len(strat_train_set)
    fte = strat_test_set['income_cat'].value_counts()/len(strat_test_set)
    
    # 随机抽样
    train_set, test_set = train_test_split(data, test_size = 0.2, random_state = 42)
    sjtr = train_set['income_cat'].value_counts()/len(train_set)
    sjte = test_set['income_cat'].value_counts()/len(test_set)
    
    # 查看标准差
    np.std(ftr - a), np.std(fte - a), np.std(sjtr - a), np.std(sjtr - a)
    

    某一数据比较结果如下:

    (2.1667325363377233e-05, 8.666930145347169e-05, 0.001571964081795336, 0.001571964081795336)
    

    ###显然分层抽样效果更佳

    展开全文
  • 生成自己的数据可让您更好地控制数据,并训练您的机器学习模型。在本文中,我们将使用Python中的Numpy库生成随机数据。需要的库:-> numpy : sudo pip安装numpy->熊猫: sudo pip install panda...

    每当我们想到机器学习时,想到的第一件事就是数据集。虽然您可以在Kaggle等网站上找到许多数据集,但有时提取自己的数据并生成自己的数据集很有用。生成自己的数据集可让您更好地控制数据,并训练您的机器学习模型。

    在本文中,我们将使用Python中的Numpy库生成随机数据集。

    需要的库:

    -> numpy : sudo pip安装numpy

    ->熊猫: sudo pip install pandas

    -> Matplotlib: sudo pip安装matplotlib

    正态分布:

    在概率论中,正态分布或高斯分布是关于均值对称的非常常见的连续概率分布,这表明均值附近的数据比不均值的数据发生的频率更高。统计中使用的正态分布,通常用于表示实值随机变量。

    正态分布是统计分析中最常见的分布类型。标准正态分布具有两个参数:平均值和标准偏差。平均值是分布的主要趋势。标准偏差是变异性的量度。它定义了正态分布的宽度。标准偏差确定值与平均值之间的下降幅度。它代表观测值与平均值之间的典型距离。它适合许多自然现象,例如身高,血压,测量误差和智商得分遵循正态分布。

    正态分布图:

    例:

    filter_none

    亮度_4

    # importing libraries

    import pandas as pd

    import numpy as np

    import matplotlib.pyplot as plt

    # initialize the parameters for the normal

    # distribution, namely mean and std.

    # deviation

    # defining the mean

    mu = 0.5

    # defining the standard deviation

    sigma = 0.1

    # The random module uses the seed value as a base

    # to generate a random number. If seed value is not

    # present, it takes the system’s current time.

    np.random.seed(0)

    # define the x co-ordinates

    X = np.random.normal(mu, sigma, (395, 1))

    # define the y co-ordinates

    Y = np.random.normal(mu * 2, sigma * 3, (395, 1))

    # plot a graph

    plt.scatter(X, Y, color = 'g')

    plt.show()

    输出:

    让我们看一个更好的例子。

    我们将生成一个包含4列的数据集。数据集中的每一列代表一个要素。数据集的第5列是输出标签。它在0-3之间变化。该数据集可用于训练分类器,例如逻辑回归分类器,神经网络分类器,支持向量机等。

    filter_none

    亮度_4

    # importing libraries

    import numpy as np

    import pandas as pd

    import math

    import random

    import matplotlib.pyplot as plt

    # defining the columns using normal distribution

    # column 1

    point1 = abs(np.random.normal(1, 12, 100))

    # column 2

    point2 = abs(np.random.normal(2, 8, 100))

    # column 3

    point3 = abs(np.random.normal(3, 2, 100))

    # column 4

    point4 = abs(np.random.normal(10, 15, 100))

    # x contains the features of our dataset

    # the points are concatenated horizontally

    # using numpy to form a feature vector.

    x = np.c_[point1, point2, point3, point4]

    # the output labels vary from 0-3

    y = [int(np.random.randint(0, 4)) for i in range(100)]

    # defining a pandas data frame to save

    # the data for later use

    data = pd.DataFrame()

    # defining the columns of the dataset

    data['col1'] = point1

    data['col2'] = point2

    data['col3'] = point3

    data['col4'] = point4

    # plotting the various features (x)

    # against the labels (y).

    plt.subplot(2, 2, 1)

    plt.title('col1')

    plt.scatter(y, point1, color ='r', label ='col1')

    plt.subplot(2, 2, 2)

    plt.title('Col2')

    plt.scatter(y, point2, color = 'g', label ='col2')

    plt.subplot(2, 2, 3)

    plt.title('Col3')

    plt.scatter(y, point3, color ='b', label ='col3')

    plt.subplot(2, 2, 4)

    plt.title('Col4')

    plt.scatter(y, point4, color ='y', label ='col4')

    # saving the graph

    plt.savefig('data_visualization.jpg')

    # displaying the graph

    plt.show()

    输出:

    展开全文
  • 之前在划分训练集和验证集时,都是手工随机生成index,很笨。 学到的新方法如下: import numpy as np # 正态分布生成原始数据 x = np.random.random.normal(1,0.1,100) # 按8:2分割数据 x_train_index = np....
  • 机器学习生成模型 判别模型

    万次阅读 2019-06-19 17:30:15
    这篇博客是自己在学习生成模型与判别模型过程中的一些记录,整理了相关的文章后写成,感谢前辈们的辛苦总结 ...2、有监督的机器学习就是已知训练集数据的类别情况来训练分类器,无监督的机器学习...
  • 它包括相应的工具,预训练模型,机器学习向导,以及开放的数据。下面将介绍TensorFlow用于机器学习的数据。 TensorFlow图像数据 1.CelebA:名人脸属性数据(CelebA)是最大的公开人脸图像数据之一,包含...
  • 准备数据 数据转换 生成 meanfile 均值文件 ...1. 准备数据首先要准备自己的数据,就是你的图片,不同类别的图片,这些图片要分成两部分,一部分多,一部分少,比例自己把握,5:1或6:1都可以,多的部分作为训练集
  • 目前我们主要介绍了建模 p(y|x;θ) 的学习算法,即关于给定 x 后 y 的条件分布。例如,Logistic 回归把 p(y|x;θ) 建模为 hθ(x)=g(θθx),...给定一个训练集,像 Logistic 回归或者感知机这种算法会试图找到一条直...
  • 由于我们要通过使用选定的训练/测试验证基于选定的训练特征列表来预测给定数据的选定目标特征(列)的特定最佳数值,因此使用回归过程将监督式机器学习技术应用于过去的数据使用机器学习模型并使用包括Logistic,...
  •  本周我们使用无监督深度学习算法变分自编码器VAE来做一些有趣的事情,通过对mnist数据学习,捕捉图像的结构变化(倾斜角度、圈的位置、形状等变化),生成数据里没有的图像。 直播主题:使用变分自编码器...
  • 向AI转型的程序员都关注了这个号????????????机器学习AI算法工程 公众号:datayx如果是想训练一个手写体识别的模型,用一些前人收集好的手写文字就好了,比如中科院的这些...
  • 假设训练集是(\(x_{i},y_{i}\)),i=1,2,3,...,N,对新输入的\(x\),要求对应的\(y\)是什么。 判别模型是指求条件概率分布\(P(y|x)\)或者\(y=f(x)\),而生成模型需要先求联合分布\(P(x,y)\)。对二分类来说,由贝叶斯...
  • 原文地址为:机器学习--判别式模型与生成式模型   一、引言  本材料参考Andrew Ng大神的机器学习课程 http://cs229.stanford.edu  在上一篇有监督学习回归模型中,我们利用训练集直接对条件概率p(y|x;θ)建模...
  • 机器学习中,对于有监督学习可以将其分为两类模型:判别式模型和生成式模型。简单地说,判别式模型是针对条件分布建模,而生成式模型则针对联合分布进行建模。 01 基本概念 假设我们有训练数据(X,Y),X是属性....
  • 雷锋网讯,当地时间3月9日,Google与滑铁卢大学、大众汽车等...该框架可构建量子数据、混合量子模型和经典机器学习模型原型、支持量子电路模拟器,以及训练判别和生成量子模型。随着近些年量子计算技术的发展,量...
  • 一、开发背景随着近几年来计算机算...因此,本文实现了一个脚本,能够生成任意数量,任意字体,以及带有各种模糊及噪声预处理的图像,用这些图像作为训练集是再合适不过了。二、脚本效果1、IDE中的运行界面2、生成的...
  • 生成学习算法 本次课程大纲: 1、生成学习算法 2、高斯判别分析(GDA,Gaussian Discriminant Analysis) -高斯分布(简要) ...分类算法:给出一个训练集,若使用logistic回归算法,其工作方式是观...
  • - 朴素贝叶斯(Naive Bayes)now let’s begin前言今天学习生成学习算法依然属于监督式学习算法,我们需要输入训练集,训练参数,然后进行分类。比如我们输入动物的特征xx,然后打上标签y=1y = 1表示是大象;对待...
  • 每个文本有一列数据,将选中的几个文本按要求合并为训练集机器学习算法使用 将单个文本的hdfs路径设置为参数,提高程序的通用性,将所有文本都追加为一个数组,随后按规定切分读写,速度不是很慢。测试效果还可以...
  • 2、有监督的机器学习就是已知训练集数据的类别情况来训练分类器,无监督的机器学习就是不知道训练集的类别情况来训练分类器; 3、所以说,有监督的机器学习可以抽象为一个分类task,而无监督的基本完成的是聚类; ...
  • 生成学习算法 本次课程大纲: 1、 生成学习算法 ...2、 高斯判别分析(GDA,Gaussian Discriminant Analysis) ...- 对比生成学习算法&判别学习算法(简要) ...分类算法:给出一个训练集,若使用logi
  • 生成学习算法 本次课程大纲: 1、 生成学习算法 ...2、 高斯判别分析(GDA,Gaussian Discriminant Analysis) ...- 对比生成学习算法&判别学习算法(简要) ...分类算法:给出一个训练集,若使用logi
  • 机器学习中的模型一般分为两类:判别模型、生成模型,这是对问题的两种不同的审视角度。 假设我们要学习一个算法区分大象和狗(假设输入是重量、鼻子长度等特征)。判别模型和生成模型以两种不同的思路解决这个...
  • 本文将主要介绍两种经典分类模型,一种是Generative的,例如朴素贝叶斯(Naive Bayes),这种算法通过训练集估计样本总体分布的参数,从而得到每个样本在分布中产生的概率。另一种是Discriminative的,例如逻辑回归...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 687
精华内容 274
热门标签
关键字:

机器学习生成训练集