創建數據集方法


一、基礎數據准備

訓練所需要的數據集合都存儲在數據庫中,還有部分文本文件
首先對數據進行分類結構化存儲[因為涉及到的是多分類問題]

二、整理並存儲原始數據集

1、使用numpy將所有需要數據讀取出來

splitlines()  ==> 按照\r \n 或者\r\n分割

import numpy as np
import pandas as pd
values1 = np.array(open(r'text1.txt', 'r', encoding='utf-8').read().splitlines())
values2 = np.random.choice(open(r'text2.txt', 'r', encoding='utf-8').read().splitlines(),100000) 

2、設計標識符

label_map = {
    1: 'values1',
    2: 'values2',
}

3、將所有數據進行拼接

data = np.concatenate([values1,values2])

4、生產相應數量的標識

lable = np.concatenate([np.array([4]*len(values1)),np.array([5]*len(values2))])

5、生成DataFrame數據結構

df = pd.DataFrame({"data":data,"lable":lable})

6、提取數據結構中多余的字符

df.replace('\r|\n|!', '', inplace=True, regex=True)

7、將整合后的原始數據存儲為csv文件

df.to_csv("dataset.csv",sep="!",index=False,header=False)

三、使數據集向量化

from keras.preprocessing.sequence import pad_sequences  # 對序列進行預處理生成長度相同的序列
from keras.utils.np_utils import to_categorical  # 將標簽轉換為 one-hot 編碼

1、對每個字符進行old操作

def process(s: str):
    s = str(s).lower()
    return [ord(c) for c in s]
data = df['data'].apply(process).values

2、將序列處理成相同長度的數組

MAX_SEQUENCE_LENGTH = 30
data = pad_sequences(data, maxlen=MAX_SEQUENCE_LENGTH,dtype='int',padding='post',truncating='post')

3、去除數組內重復數字並進行排序之后輸出

palette = np.unique(data)

4、獲取每個字符在palette中的位置

data = np.digitize(data, palette, right=True)

5、將標簽轉化為 one-hot 編碼

labels = to_categorical(df['lable'].values)

6、划分訓練子集與測試子集

from sklearn.model_selection import train_test_split
train_data, val_data, train_label, val_label = train_test_split(data, labels, test_size=0.2, random_state=42)
print('train data shape: ', train_data.shape, '   train label shape: ', train_label.shape)
print('val data shape: ', val_data.shape, '   val label shape: ', val_label.shape)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM