训练数据处理

数据准备

文件打开方式,字符集不统一问题解决:使用codecs.open()文件打开方式;
文件读取方式,with方式,不需要考虑文件读取错误情况;

flatten(),内置的方法对数值进行降维,自己实现对list()的降维:

def flatten(x):
    result = []
    for el in x:
        # collections.Iterable可迭代对象,isinstance判断元素类型
        if isinstance(x, collections.Iterable) and not isinstance(el, str):
            result.extend(flatten(el))
        else:
            result.append(el)
    return result`

将list()数据序列化,pd.Series()生成词和词索引的Series类型;
统计Series数据类型中词的出现次数Series.value_counts(),返回一个Series类型的数组;
提取词基合,Series.index;

训练数据类型:word2id, id2word, tag2id, id2tag;
word2id = pd.Series(set_ids, index= set_words)建立Series类型数组
数据准备工作总结:构建list列表——Series类型数组——词集合——生成词,标签和id对应数组数据

数据规整

数据长度规整,实现训练数据格式统一;

def X_padding(words):
	#数据转id
    ids = list(word2id[words])
    #长度规整
    if len(ids) >= max_len:
        return ids[:max_len]
    ids.extend([0]*(max_len-len(ids)))
    return ids

矩阵构建

构建数据矩阵,生成原始数据的表格
pd.DataFrame({‘words’:datas, ‘tags’:labels}, index=range(len(datas)))
通过原始表格数据,生成规整后的表格数据
df_data[“x”] = df_data[‘word’].apply(X_padding())
生成转id的规整数据数组
np.array(list(df_data[‘x’].values))
引包sklearn.model_selection, train_test_split
自动切分训练、验证、测试数据集
train_test_split(x, y, test_size=0/2, random_state=43)

数据持久化

数据持久化保存
pickle.dump()方法;

你可能感兴趣的:(机器学习)