数据是一切的根本。

 

一.获取数据

1.我们实质是获取所需信息,再把这些信息转为可以字面表示的数据

2.可以使用爬虫scrapy获取数据,但是更一般的是自家数据库中的数据

3.可以获得公用数据集:http://www.kaggle.com/datasets等网站,也可以自己收集数据

4.人工合成数据:自己创造、扩充数据(添加失真)、数据变换,模型方法...

5.注意:1)数据量尽可能多、利于训练;(2)数据内容尽可能有效,能对预测产生作用(有用的特征);(3)数据尽可能要均匀(分类),即全面

6.注意:无论是数据获取还是处理,都要注意多做备份,有能力每步都要备份,数据的价值难以想象

 1 # 一.获取数据:tf.keras.utils.get_file根据url下载数据到指定文件夹,
 2 DATAS_URL = "https://storage.googleapis.com/tf-datasets/titanic/train.csv"
 3 datas_path = tf.keras.utils.get_file(r"E:\python_work\machine_learning\datas\datas.csv", DATAS_URL)
 4 
 5 # 二.读取数据:把文件中的数据转为dataset类型进行使用,有时要指定标签
 6 # 1.读取csv文件
 7 # (1)若csv第一行不为列名,则需要给定列名;若csv第一行为列名,则可直接读取,
 8 CSV_COLUMNS = ['survived', 'sex', 'age', 'n_siblings_spouses', 'parch', 'fare', 'class', 'deck', 'embark_town', 'alone']
 9 dataset = tf.data.experimental.make_csv_dataset(datas_path, column_names=CSV_COLUMNS,
10                                                 batch_size=1,LABEL_COLUMN = 'survived')
11 
12 # 2.读取numpy文件 。.npz
13 # 也是从路径读取,先把文件转为np数组类型,在转换为dataset
14 data = np.load('https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz')
15 train_examples = data['x_train']
16 train_labels = data['y_train']
17 train_dataset = tf.data.Dataset.from_tensor_slices((train_examples, train_labels))
18 
19 # 3.将pandas文件中df数据转为data类型
20 csv_file = tf.keras.utils.get_file('heart.csv', 'https://storage.googleapis.com/applied-dl/heart.csv')
21 df = pd.read_csv(csv_file)
22 target = df.pop('target')
23 dataset = tf.data.Dataset.from_tensor_slices((df.values, target.values))
24 # dataset = tf.data.Dataset.from_tensor_slices((dict(df), target))
25 
26 # 4.读取图片
27 # (1)获得图片
28 import pathlib
29 data_dir = tf.keras.utils.get_file(origin='https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz',
30                                    fname='flower_photos', untar=True)
31 data_dir = pathlib.Path(data_dir)
32 # # (2)生成图片方法1
33 image_generator = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1./255) #rescale指定将图像张量的数字缩放
34 image_count = len(list(data_dir.glob('*/*.jpg')))
35 CLASS_NAMES = np.array([item.name for item in data_dir.glob('*') if item.name != "LICENSE.txt"])
36 train_data_gen = image_generator.flow_from_directory(directory=str(data_dir),
37                                                      batch_size=32,
38                                                      shuffle=True,
39                                                      target_size=(224, 224),
40                                                      classes = list(CLASS_NAMES))
41 # (3)方法2 (推荐)
42 #######首先将图片进行解码,将图片的标签和图片本身的张量表示提取出来
43 list_ds = tf.data.Dataset.list_files(str(data_dir/'*/*'))  #把图片文件转换为数据集
44 def get_label(file_path): #从文件路径中获得标签
45     parts = tf.strings.split(file_path, os.path.sep)
46     return parts[-2] == CLASS_NAMES
47 def decode_img(img): #把图片解码为一个三维张量,并设定张量的大小,和图片的大小
48     img = tf.image.decode_jpeg(img, channels=3)
49     img = tf.image.convert_image_dtype(img, tf.float32)
50     return tf.image.resize(img, [224, 224])
51 def process_path(file_path):
52     label = get_label(file_path)
53     img = tf.io.read_file(file_path)
54     img = decode_img(img)
55     return img, label
56 #######################
57 # 其次用map函数
58 AUTOTUNE = tf.data.experimental.AUTOTUNE
59 labeled_ds = list_ds.map(process_path, num_parallel_calls=AUTOTUNE) #设定能自动加载多个图片
60 
61 # 5.读取文本:将文本转为字符串,再将字符串转为数字列表,为每个单次映射到唯一的整数
读取数据

相关文章:

  • 2022-03-06
  • 2022-03-02
  • 2021-06-22
  • 2021-10-09
  • 2021-10-14
  • 2021-09-26
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-07
  • 2022-12-23
  • 2022-01-08
  • 2021-09-18
  • 2021-09-25
  • 2022-03-02
  • 2022-02-10
相关资源
相似解决方案