加载表格数据、图像、文本、音频并进行预处理:
使用pandas加载和处理表格数据(import pandas as pd):
df=pd.read_csv('表格路径')#读入表格数据
df.drop('Date', inplace=True, axis=1)#删除非数值字段
ax = df['Present_Tmax'].hist(color='gray')#取表格中的一列数据,并绘制成灰度直方图
ax.set_xlabel("Temperature")#设置此灰度直方图的横轴名称
ax.set_ylabel("Frequency")#设置此灰度直方图的纵轴名称
scaler = StandardScaler()#创建标准定标器
transformed_df = scaler.fit_transform(df)#使用标准定标器对数值进行规范化处理
%使用标准定标器(平均值为0,标准差为1)对数值进行缩放处理,并重新进行灰度直方图的展示
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
df2 = scaler.fit_transform(df)#装配标准定标器
df2 = pd.DataFrame(df2, columns=df.columns)#对所有表格数据适用缩放
ax = df2['Present_Tmax'].hist(color='gray')
ax.set_xlabel("Normalized Temperature")
ax.set_ylabel("Frequency")%
%使用极小值定标器(最小值为0,最大值为1)对数值进行缩放处理,并重新进行灰度直方图的展示
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
df2 = scaler.fit_transform(df)#装配标准定标器
df2 = pd.DataFrame(df2, columns=df.columns)#对所有表格数据适用缩放
ax = df2['Present_Tmax'].hist(color='gray')
ax.set_xlabel("Normalized Temperature")
ax.set_ylabel("Frequency")%
使用热编码处理表格中的非数值字段:
对于日期列这个非数值字段来说,第一步先将它转换为真正的日期类型,使用df['Date'] = pd.to_datetime(df['Date'])#转换为真正的Date类型
year_dummies = pd.get_dummies(df['Date'].dt.year,prefix='year')#使用日期列的年份创建虚拟列,并且使用year为虚拟列的前缀
year_dummies#打印结果如下图
month_dummies = pd.get_dummies(df['Date'].dt.month,prefix='month')#使用日期列的月份创建虚拟列,并且使用month为新虚拟列的前缀
month_dummies#打印结果如下图
df = pd.concat([df, month_dummies, year_dummies],axis=1)#连接虚拟列和原始数据列
df.drop('Date', axis=1, inplace=True)#删除原始日期列,它现在是多余的
df.dtypes#确认所有列的数据类型都是数字数据类型
批处理加载图像数据并进行预处理:
from tensorflow.keras.preprocessing.image import ImageDataGenerator#导入图像加载包
train_datagen = ImageDataGenerator(rescale = 1./255)#图像像素值归一化处理
training_set = train_datagen.flow_from_directory('image_data',target_size = (64, 64),batch_size = 25,class_mode = 'binary')#引导生成图像数据,其中image_data是图像集的父目录,target_size是单个图像的分辨率即大小,batch_size是一次批处理的图像数目,class_mode是类模式,表示以何种方式确定生成的标签数组的类型
%创建一个函数来显示批处理中的图像
import matplotlib.pyplot as plt#导入图像绘制相关包
def show_batch(image_batch, label_batch):#显示函数
lookup = {v: k for k, v in training_set.class_indices.items()}#获得图像表示数组
label_batch = [lookup[label] for label in label_batch]#获得图像标签数组
plt.figure(figsize=(10,10))#规定显示图像的大小
for n in range(25):#创建显示图像的5x5阵列
ax = plt.subplot(5,5,n+1)#合并展示25幅图像
plt.imshow(image_batch[n])#显示图像
plt.title(label_batch[n].title())#设置图像的名称为标签数组中对应的名称
plt.axis('off')%
图像增强:
以下参数为ImageDataGenerator类构造方法的参数,关于图像增强方面的设置修改:
horizontal_flip#水平翻转
vertical_flip#垂直翻转
rotation_range#将图像翻转到给定的度数
width_shift_range#将图像沿其宽度轴向上移动到给定范围像素数量或分数
height_shift_range#将图像沿其高度轴向上移动到给定的高度分数或像素量
brightness_range#将图像的亮度修改到最大值给定数量。
shear_range#剪切范围:将图像剪切到给定的量
zoom_range#缩放范围:将图像放大到给定的大小
例如:
datagenerator = ImageDataGenerator(rescale = 1./255,shear_range = 0.2,rotation_range= 180,zoom_range = 0.2,horizontal_flip = True)#初始化形式
文本处理(使用tensorflow_hub中的预训练模型(即已训练好的)来处理文本数据):
df = tf.data.experimental.make_csv_dataset('../Datasets/drugsComTest_raw.tsv', batch_size=1, field_delim='\t')#此方法是加载文本数据到内存中,第一个参数是文本数据文件的url,第二个参数是批处理的大小,第三个是数据集的分隔符
%创建一个函数,将数据集对象作为输入,并进行洗牌、重复和删除批处理数据集
def prep_ds(ds, shuffle_buffer_size=1024,batch_size=32):
ds = ds.shuffle(buffer_size=shuffle_buffer_size)
ds = ds.repeat()
ds = ds.batch(batch_size)
return ds%
ds = prep_ds(df, batch_size=5)#将加载进的文本数据的前5个作处理,打印第一批
for x in ds.take(1):
print(x)
%使用tensorflow_hub中的预训练模型
import tensorflow_hub as hub
embedding = "tfhub.dev/google/tf2-…" 加载模型url
hub_layer = hub.KerasLayer(embedding, input_shape=[],dtype=tf.string,trainable=True)#创建keras层
for x in ds.take(1):#取结果数据集
print(hub_layer(tf.reshape(x['review'],[-1])))#从数据集中取出一批,展平对应于查看字段,应用预训练层,然后打印出来br>
音频处理:
*导入音频文件:
sample_rate = 44100#样本速率
audio_data = tf.io.read_file('path/to/file')#音频文件url
audio, sample_rate = tf.audio.decode_wav(audio_data,desired_channels=-1,desired_samples=sample_rate)#音频解码
与文本数据一样,必须对数据进行预处理,以使生成的数字张量与数据大小相同。这是通过对音频文
件进行采样来实现的将数据转换到频域后。可以对音频进行采样这被认为是将音频文件分割成大小始
终相同的块。对于例如,一个30秒的音频文件可以被分割成30个1秒的非重叠音频文件以同样的方
式,一个15秒的音频文件可以被分割成15个1秒非重叠样本。因此,您的结果是45个大小相同的音频
样本
stfts = tf.signal.stft(audio, frame_length=1024,frame_step=256,fft_length=1024)#傅立叶变换,将时域转换为频域
spectrograms = tf.abs(stfts)#取绝对值
该函数对输入数据进行短时傅里叶变换。争论函数中包含帧长度,这是一个指示样本中的窗口长度;帧步
长,这是一个描述要步进的样本数;以及快速傅里叶变换(FFT)长度是一个整数值,指示要应用的FFT的长
度。光谱图是短时傅里叶变换的绝对值,因为它对视觉效果有用理解可以创建短时傅里叶变换和频谱图
音频处理过程:
!!!创建一个函数,使用TensorFlow的read_文件加载音频文件函数和解码函数。返回合成张量
def load_audio(file_path, sample_rate=44100):
!!Load audio at 44.1kHz sample-rate
audio = tf.io.read_file(file_path)
audio, sample_rate = tf.audio.decode_wav(audio,desired_channels=-1,desired_samples=sample_rate)
return tf.transpose(audio)
!!!使用os将音频数据的路径作为列表加载。目录
prefix = " ../Datasets/data_speech_commands_v0.02/zero/"
paths = [os.path.join(prefix, path) for path in os.listdir(prefix)]
!!!通过加载列表中的第一个音频文件并打印来测试函数
import matplotlib.pyplot as plt
audio = load_audio(paths[0])
plt.plot(audio.numpy().T)
plt.xlabel('Sample')
plt.ylabel('Value')
结果如下图: