中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

公开数据集

本章的机器学习测试用例使用官网数据集,请从官网下载house、HIGGS、nytimes、Kosarak、DEEP1B、Mnist8m、Epsilon、MESH_DEFORM。下文所有的数据集下载解压上传均在server1节点进行。

下载官网house数据集

  1. 新建“/test/dataset/ml”目录,并进入该目录。
    1
    2
    mkdir -p /test/dataset/ml
    cd /test/dataset/ml
    
  2. 下载官网house数据集(需要机器网络能连接到Google)。浏览器中输入如下地址:https://sites.google.com/view/approxdbscan/datasets

  3. 2中下载的数据集放入“/test/dataset/ml”目录中。
  4. 使用HDFS新建文件夹。
    1
    2
    hadoop fs -mkdir -p /tmp/dataset/ml
    hadoop fs -mkdir -p /tmp/ml/dataset
    
  5. 上传数据集到“/tmp/dataset/ml”
    1
    hadoop fs -put /test/dataset/ml/house.ds /tmp/dataset/ml
    
  6. 打开spark-shell。
    1
    spark-shell
    
  7. 输入以下命令。
    1
    :paste
    
  8. 执行下面代码,对数据集进行处理。
    1
    2
    3
    4
    5
    6
    7
    val file = sc.textFile("/tmp/dataset/ml/house.ds")
    file.take(10).foreach(println(_))
    file.count
    val data = file.map(x => x.split(" ")).filter(_.length == 8).map(x => x.slice(1, 8).mkString(" "))
    data.count
    data.take(10).foreach(println(_))
    data.repartition(1).saveAsTextFile("/tmp/ml/dataset/house")
    
  9. 回车并执行Ctrl+d。
  10. 检查HDFS对应目录下有无训练集和测试集数据,得到结果如下图。
    1
    hadoop fs -ls /tmp/ml/dataset/house
    

  11. 移除HDFS上无用的数据集目录。
    1
    hadoop fs -rm -r /tmp/dataset/mlhadoop fs -rm -r /tmp/dataset/ml
    

下载官网HIGGS数据集

  1. 新建/“test/dataset/ml/higgs”目录,并进入该目录。
    1
    2
    mkdir -p /test/dataset/ml/higgs
    cd /test/dataset/ml/higgs
    
  2. 下载官网higgs数据集。
    1
    wget https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/binary/HIGGS.bz2
    
  3. 解压数据集到当前目录。
    1
    bzip2 -d HIGGS.bz2
    
  4. HDFS新建“/tmp/dataset/ml/higgs”文件夹。
    1
    hadoop fs -mkdir -p /tmp/ml/dataset/higgs
    
  5. 上传数据集到HDFS上。
    1
    hadoop fs -put /test/dataset/ml/higgs/HIGGS /tmp/ml/dataset/higgs
    
  6. 打开Spark-shell。
    1
    spark-shell
    
  7. 输入以下命令。
    1
    :paste
    
  8. 执行下面代码,将数据集分割为训练集和测试集。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    val reader = spark.read.format("libsvm")
    reader.option("numFeatures", 28)
    val dataPath = "/tmp/ml/dataset/higgs"
    val data = reader.load(dataPath)
    val Array(trainingData, testData) = data.randomSplit(Array(0.7, 0.3),2020)
    val trainOutputPath = s"${dataPath}_train"
    val testOutputPath = s"${dataPath}_test"
    trainingData.write.format("libsvm").save(trainOutputPath)
    testData.write.format("libsvm").save(testOutputPath)
    
  9. “Enter”并执行“Ctrl”+“d”
  10. 移除HDFS上无用的数据集目录。
    1
    hadoop fs -rm -r /tmp/ml/dataset/higgs
    
  11. 检查HDFS对应目录下有无训练集和测试集数据,得到结果如下图。
    1
    hadoop fs -ls /tmp/ml/dataset
    

下载官网nytimes数据集

  1. 新建“/test/dataset/ml/nytimes”目录,并进入该目录。
    1
    2
    mkdir -p /test/dataset/ml/nytimes
    cd /test/dataset/ml/nytimes
    
  2. 下载官网nytimes数据集。
    1
    wget https://archive.ics.uci.edu/ml/machine-learning-databases/bag-of-words/docword.nytimes.txt.gz
    
  3. 解压数据集到当前目录。
    1
    gzip -d docword.nytimes.txt.gz
    
  4. 新建dataset_process.py(因为是Python文件,所以请注意格式缩进)。
    1. 创建文件。
      1
      vi dataset_process.py
      
    2. “i”进入编辑模式,文件内容如下。
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      import sys
      if __name__ == "__main__":
      if len(sys.argv) <= 1:
      print("Please input dataset")
      exit()
      filename = sys.argv[1]
      print("Reading data")
      processed_data = {}
      with open(filename, 'r') as fp:
      data = fp.readlines()
      print("Pre-processing data")
      for line in data[3:]:
      line_split = line.strip().split()
      if len(line_split) < 3:
      continue
      doc_id = int(line_split[0])
      vocab_id = line_split[1]
      term_num = line_split[2]
      if doc_id not in processed_data:
      processed_data[doc_id] = str(doc_id)
      processed_data[doc_id] += (" %s:%s" % (vocab_id, term_num))
      print("Post-processing data")
      doc_ids = list(processed_data.keys())
      doc_ids.sort()
      data = []
      for doc_id in doc_ids:
      data.append(processed_data[doc_id] + "\n")
      print("Writing data")
      with open(filename + ".libsvm", 'w') as fp:
      fp.writelines(data)
      
    3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  5. 使用dataset_process.py将数据集转换成libsvm格式。
    1
    python3 dataset_process.py docword.nytimes.txt
    
  6. 修改数据集docword.nytimes.txt.libsvm的名称为docword.nytimes.txt.libsvm.raw。
  7. 新建reorder.py(因为是Python文件,所以请注意格式缩进)。
    1. 创建文件。
      1
      vi reorder.py
      
    2. “i”进入编辑模式,文件内容如下。
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      filename = "docword.nytimes.txt.libsvm.raw"
      new_filename = "docword.nytimes.txt.libsvm"
      with open(filename, 'r') as fp:
      filedata = fp.readlines()
      print("Data length: %d" % len(filedata))
      count = 0
      data = []
      for line in filedata:
      line_split = line.strip().split()
      doc_index = int(line_split[0])
      doc_terms = {}
      for term in line_split[1:]:
      term_split = term.strip().split(":")
      assert int(term_split[0]) not in doc_terms
      doc_terms[int(term_split[0])] = int(term_split[1])
      data.append([doc_index, doc_terms])
      count += 1
      if count % 100000 == 0:
      print("Processed %d00K" % int(count / 100000))
      count = 0
      new_filedata = []
      for doc in data:
      doc_string = str(doc[0])
      term_indices = list(doc[1].keys())
      term_indices.sort()
      for term_index in term_indices:
      doc_string += (" " + str(term_index) + ":" + str(doc[1][term_index]))
      doc_string += "\n"
      new_filedata.append(doc_string)
      count += 1
      if count % 100000 == 0:
      print("Generated %d00K" % int(count / 100000))
      with open(new_filename, 'w') as fp:
      fp.writelines(new_filedata)
      
    3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  8. 使用reorder.py将6修改名称之后的数据集进行重新排序。
    1
    python3 reorder.py
    
  9. HDFS新建“/tmp/dataset/ml/nytimes”文件夹。
    1
    hadoop fs -mkdir -p /tmp/ml/dataset/nytimes/
    
  10. 上传数据集到HDFS上。
    1
    hadoop fs -put /test/dataset/ml/nytimes/docword.nytimes.txt.libsvm /tmp/ml/dataset/nytimes/
    

下载官网Kosarak数据集

  1. 新建“/test/dataset/ml/Kosarak”目录,并进入该目录。
    1
    2
    mkdir -p /test/dataset/ml/Kosarak
    cd /test/dataset/ml/Kosarak
    
  2. 下载官网Kosarak数据集。
    1
    wget http://www.philippe-fournier-viger.com/spmf/datasets/kosarak_sequences.txt
    
  3. HDFS新建“/tmp/ml/dataset/Kosarak”文件夹。
    1
    hadoop fs -mkdir -p /tmp/ml/dataset/Kosarak/
    
  4. 上传数据集到HDFS上。
    1
    hadoop fs -put /test/dataset/ml/Kosarak/kosarak_sequences.txt /tmp/ml/dataset/Kosarak/
    

下载官网DEEP1B数据集

  1. 新建“/test/dataset/ml/DEEP1B”目录,并进入该目录。
    1
    2
    mkdir -p /test/dataset/ml/DEEP1B
    cd /test/dataset/ml/DEEP1B
    
  2. 下载官网DEEP1B数据集。
    1
    wget http://ann-benchmarks.com/deep-image-96-angular.hdf5
    
  3. 新建文件processHDF5.py(因为是Python文件,所以请注意格式缩进)。
    1. 创建文件。
      1
      vi processHDF5.py
      
    2. “i”进入编辑模式,添加内容如下。
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      import os
      import h5py
      # downloaded hdf5 file
      inputFile = h5py.File('deep-image-96-angular.hdf5', 'r')
      # directory name to store output files
      outputDir = "deep1b"
      # the number of samples in each output file
      samplesPerFile = 5000
      sampleCnt = 0
      fileCnt = 0
      writer = open(os.path.join(outputDir, 'part-{}'.format(fileCnt)), 'w')
      data = inputFile['train']
      for feature in data:
      writer.write(','.join([str(d) for d in feature]) + "\n")
      sampleCnt += 1
      if sampleCnt == samplesPerFile:
      writer.close()
      fileCnt += 1
      sampleCnt = 0
      writer = open(os.path.join(outputDir, 'part-{}'.format(fileCnt)), 'w')
      data = inputFile['test']
      for feature in data:
      writer.write(','.join([str(d) for d in feature]) + "\n")
      sampleCnt += 1
      if sampleCnt == samplesPerFile:
      writer.close()
      fileCnt += 1
      sampleCnt = 0
      writer = open(os.path.join(outputDir, 'part-{}'.format(fileCnt)), 'w')
      writer.close()
      
    3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  4. 数据处理,将hdf5文件转换为文本文件,每个样本一行,特征之间用逗号分隔。
    1
    2
    mkdir deep1b
    python3 processHDF5.py
    
  5. 若出现如下报错,则需运行python3 -m pip install h5py。

  6. HDFS新建“/tmp/ml/dataset/DEEP1”文件夹。
    1
    hadoop fs -mkdir -p /tmp/ml/dataset/DEEP1B
    
  7. 上传数据集到HDFS上。
    1
    hadoop fs -put /test/dataset/ml/deep1b/* /tmp/ml/dataset/DEEP1B/
    

下载官网Mnist8m数据集

  1. 新建“/test/dataset/ml/mnist8m”目录,并进入该目录。
    1
    2
    mkdir -p /test/dataset/ml/mnist8m
    cd /test/dataset/ml/mnist8m
    
  2. 下载官网mnist8m数据集。
    1
    wget https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/mnist8m.bz2
    
  3. 解压训练集和测试集与当前目录。
    1
    bzip2 -d mnist8m.bz2
    
  4. HDFS新建“/tmp/dataset/ml/mnist8m”文件夹。
    1
    hadoop fs -mkdir -p /tmp/ml/dataset/mnist8m
    
  5. 上传数据集到HDFS上。
    1
    hadoop fs -put /test/dataset/ml/mnist8m/mnist8m /tmp/ml/dataset/mnist8m
    
  6. 打开Spark-shell。
    1
    spark-shell
    
  7. 输入以下命令。
    1
    :paste
    
  8. 执行下面代码,将数据集分割为训练集和测试集。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    val reader = spark.read.format("libsvm")
    reader.option("numFeatures", 784)
    val dataPath = "/tmp/ml/dataset/mnist8m"
    val data = reader.load(dataPath)
    val Array(trainingData, testData) = data.randomSplit(Array(0.7, 0.3),2020)
    val trainOutputPath = s"${dataPath}_train"
    val testOutputPath = s"${dataPath}_test"
    trainingData.write.format("libsvm").save(trainOutputPath)
    testData.write.format("libsvm").save(testOutputPath)
    
  9. “Enter”并执行“Ctrl”+“d”
  10. 移除HDFS上无用的数据集目录。
    1
    hadoop fs -rm -r /tmp/ml/dataset/mnist8m
    
  11. 检查HDFS对应目录下有无训练集和测试集数据,得到结果如下图。
    1
    hadoop fs -ls /tmp/ml/dataset
    

下载官网Epsilon数据集

  1. 新建“/test/dataset/ml/epsilon”目录,并进入该目录。
    1
    2
    mkdir -p /test/dataset/ml/epsilon
    cd /test/dataset/ml/epsilon
    
  2. 下载官网epsilon训练集和测试集。
    1
    2
    wget https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/binary/epsilon_normalized.bz2
    wget https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/binary/epsilon_normalized.t.bz2
    
  3. 解压训练集和测试集到当前目录。
    1
    2
    bzip2 -d epsilon_normalized.bz2
    bzip2 -d epsilon_normalized.t.bz2
    

  4. HDFS新建“/tmp/dataset/ml/epsilon_train ”“/tmp/dataset/ml/epsilon_test” 文件夹。
    1
    2
    hadoop fs -mkdir -p /tmp/ml/dataset/epsilon_train
    hadoop fs -mkdir -p /tmp/ml/dataset/epsilon_test
    
  5. 上传训练集和测试集到HDFS上。
    1
    2
    hadoop fs -put /test/dataset/ml/epsilon/epsilon_normalized /tmp/ml/dataset/epsilon_train
    hadoop fs -put /test/dataset/ml/epsilon/epsilon_normalized.t /tmp/ml/dataset/epsilon_test
    

下载官网MESH_DEFORM数据集

  1. 新建“/test/dataset/ml/mesh_deform”目录,并进入该目录。
    1
    2
    mkdir -p /test/dataset/ml/mesh_deform
    cd /test/dataset/ml/mesh_deform
    
  2. 下载官网MESH_DEFORM数据集。
    1
    wget https://suitesparse-collection-website.herokuapp.com/MM/Yoshiyasu/mesh_deform.tar.gz
    
  3. 解压于当前目录。
    1
    tar zxvf mesh_deform.tar.gz
    
  4. 解压得到mesh_deform.mtx文件,打开mtx文件,删除第1-25行,第1至24行是信息行,第25行表示的是矩阵行数、列数、非零个数。真正的数据矩阵信息是从第26行开始的。
    1
    vi mesh_deform.mtx
    
  5. HDFS新建“/tmp/ml/dataset/MESH_DEFORM”文件夹。
    1
    hadoop fs –mkdir -p /tmp/ml/dataset/MESH_DEFORM
    
  6. 上传数据集到HDFS上。
    1
    hadoop fs -put mesh_deform.mtx /tmp/ml/dataset/MESH_DEFORM/
    
  7. 检查HDFS对应目录下有无数据,得到结果如下图。
    1
    hadoop fs -ls /tmp/ml/dataset/MESH_DEFORM
    

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词