zoukankan      html  css  js  c++  java
  • 机器学习:训练数据集、测试数据集

    一、判断机器学习算法的性能

    • 机器学习经过训练得到的模型,其意义在于真实环境中的使用;
    • 将全部的原始数据当做训练集直接训练出模型,然后投入到真实环境中,这种做法是不恰当的,存在问题:
    1. 如果模型效果很差,没有机会通过实际调试就直接应用到实际当中,怎么办?(# 实例:股市预测)
    2. 在真实环境中,开发者难以拿到真实label(输出结果),则无从得知模型的效果?(# 实例:银行发放信用卡)
    • 方案:训练数据集与测试数据集切分(train test split),将原始数据的80%作为训练数据来训练模型,另外20%作为测试数据,通过测试数据直接判断模型的效果,在模型进入真实环境前改进模型;

        # 此方案(训练数据集与测试数据集切分)也存在问题:待补充。。。

        # 测试机器学习算法的模型,目的是优选出效果更好的模型;

     1)将原始数据集分割为训练数据集和测试数据集:

    1. 方法一:对X和y的indexes进行乱序处理,根据乱序后的index从x和y中分割出训练数据集和测试数据集
      import numpy as np
      
      def train_test_split(X, y, test_train = 0.2, seed = None):
          """将原始数据X、y分割为X_train、y_train、X_test、y_test"""
      
          assert X.shape[0] == y.shape[0],
              "the size of X must be equal to the size of y"
          assert 0.0 <= test_train <= 1.0,
              "test_train must be valid"
          # seed为随机数的种子,为了两次随机数取值相同
          if seed:
              np.random.seed(seed)
          # 先对原始数据的indexes做乱序处理
          shuffle_indexes = np.random.permutation(len(X))
          # 分配训练数据和测试数据的比例和大小
          test_ratio = test_train
          test_size = int(len(X) * test_ratio)
          test_indexes = shuffle_indexes[:test_size]
          train_indexes = shuffle_indexes[test_size:]
          # 分割原始数据
          X_train = X[train_indexes]
          y_train = y[train_indexes]
      
          X_test = X[test_indexes]
          y_test = y[test_indexes]
      
          return X_train, X_test, y_train, y_test
    2. 方法二:将X于y相加后做乱序处理,再分离出训练数据集和测试数据集
      z = np.concatenate([X, y], axis = 1)
      np.random.shuffle(z)
      X = z[:, :4],从新排序后的原始数据x
      y = z[:, 4:],从新排序后的标签y
      train_ratio = 0.8,设置训练数据集的比例为80%
      trai_size = int(len(X) * train_ratio),训练数据集的大小
      train_data = X[:train_size, :],训练数据集
      test_data = X[train_size:, :],测试数据集
    3. np.random.permutation(100):将0~100个数随机排列;# permutation()只接受一个参数;

    4. 由于对indexes的乱序处理带有随机性,如果想再次查看历史数据,可设定随机种子,得到历史随机数;

     2)使用我们的算法:

      # 导入模块、传入原始数据、将预测结果与真实结果对比(相等得到布尔数组)得到准确度;

  • 相关阅读:
    Jmeter 文件上传
    Jmeter数据库连接
    初探持续集成框架--->jenkins 安装及使用
    Centos7-服务命令总结
    安装--->Tomcat监控工具Probe
    为什么要用Spring IOC
    业务接口设计总结
    Hessian HelloWorld
    日期控件的使用,My97DatePicker
    idea 启动debug时 throw new ClassNotFoundException(name);
  • 原文地址:https://www.cnblogs.com/volcao/p/9077576.html
Copyright © 2011-2022 走看看