快捷搜索:  汽车  科技

numpy怎么合并两维度?使用numpysklearnKeras进行One

numpy怎么合并两维度?使用numpysklearnKeras进行Onefrom keras.preprocessing.text import Tokenizer from numpy import array from numpy import argmax from keras.utils import to_categorical doc = "Can I eat the Pizza".lower().split() def using_Tokenizer(doc): # create the tokenizer t = Tokenizer() # fit the tokenizer on the documents t.fit_on_texts(doc) # integer encode documents encoded_docs = t.texts_to_matrix(doc mode='count') return encode

机器学习中机器不能理解单词,因此需要数值,以便机器更容易地处理数据。要对数据应用任何类型的算法,我们需要将分类数据转换为数字。为了实现这一点,可以采用One hot编码,因为它可以转换分类变量到binary vectors。

例:

假设我们有句“Can I eat the Pizza”。

我们可以直接说所有的单词都彼此不同,但在机器学习中机器是怎么知道的呢?

所以我们尝试应用One hot编码,即将类别转换为数字标签。

  1. 首先,将文本进行转换,按升序形式对单词进行排序,即A-Z。现在“can eat i pizza the”。
  2. 给一个数字标签,我们可以看到can在第0位,eat在第1位,分配值:can:0 i:2 eat:1 the:4 pizza:3。
  3. 转换为binary vectors。

numpy怎么合并两维度?使用numpysklearnKeras进行One(1)

分类变量基本上是基于一些定性性质的固定值。比如个体的性别,可以是男性,女性。天气也是一个例子,因为它可以是晴天,多云,或下雨。

binary vectors只是包含0和1的值。

使用numpy

import numpy as np docs = "Can I eat the Pizza".lower().split() doc1 = set(docs) doc1 = sorted(doc1) print ("\nvalues: " doc1) integer_encoded = [] for i in docs: v = np.where( np.array(doc1) == i)[0][0] integer_encoded.append(v) print ("\ninteger encoded: " integer_encoded) def get_vec(len_doc word): empty_vector = [0] * len_doc vect = 0 find = np.where( np.array(doc1) == word)[0][0] empty_vector[find] = 1 return empty_vector def get_matrix(doc1): mat = [] len_doc = len(doc1) for i in docs: vec = get_vec(len_doc i) mat.append(vec) return np.asarray(mat) print ("\nMATRIX:") print (get_matrix(doc1))

numpy怎么合并两维度?使用numpysklearnKeras进行One(2)

numpy怎么合并两维度?使用numpysklearnKeras进行One(3)

要遵循的步骤:

  1. 将文本转换为小写
  2. 对文本进行标记
  3. 获得唯一的单词
  4. 对单词列表进行排序
  5. 获取单词的数字/位置
  6. 通过将每个单词的位置标记为1和其他标记为0来创建一个向量
  7. 创建找到的向量的矩阵。
使用Sklearn

from numpy import array from numpy import argmax from sklearn.preprocessing import LabelEncoder from sklearn.preprocessing import OneHotEncoder # define example # data = ['cold' 'cold' 'warm' 'cold' 'hot' 'hot' 'warm' 'cold' 'warm' 'hot'] doc1 = "Can I eat the Pizza".lower() doc2 = "You can eat the Pizza".lower() doc1 = doc1.split() doc2 = doc2.split() doc1_array = array(doc1) doc2_array = array(doc2) doc3 = doc1 doc2 # doc3 = set(doc3) data = list(doc3) values = array(data) print(values) # integer encode label_encoder = LabelEncoder() integer_encoded = label_encoder.fit_transform(values) print(integer_encoded) # binary encode onehot_encoder = OneHotEncoder(sparse=False) integer_encoded = integer_encoded.reshape(len(integer_encoded) 1) onehot_encoded = onehot_encoder.fit_transform(integer_encoded) print(onehot_encoded) # invert first example inverted = label_encoder.inverse_transform([argmax(onehot_encoded[0 :])]) print(inverted)

numpy怎么合并两维度?使用numpysklearnKeras进行One(4)

numpy怎么合并两维度?使用numpysklearnKeras进行One(5)

要遵循的步骤:

  1. 将文本转换为小写
  2. Word Tokenize
  3. 通过使用LabelEncoder()获取其整数值,即位置
  4. 使用OneHotEncoder()通过引用标签编码值获取该单词的one hot编码
使用Keras

from keras.preprocessing.text import Tokenizer from numpy import array from numpy import argmax from keras.utils import to_categorical doc = "Can I eat the Pizza".lower().split() def using_Tokenizer(doc): # create the tokenizer t = Tokenizer() # fit the tokenizer on the documents t.fit_on_texts(doc) # integer encode documents encoded_docs = t.texts_to_matrix(doc mode='count') return encoded_docs def using_to_categorical(doc): label_encoder = LabelEncoder() data = label_encoder.fit_transform(doc) data = array(data) # one hot encode encoded = to_categorical(data) return encoded def invert_encoding(row_num): inverted = label_encoder.inverse_transform([argmax(onehot_encoded[row_num :])]) return inverted print ("===using Keras Tokenizer for OneHotEncoding===") print (using_Tokenizer(doc)) print () print ("===using Keras to_categorical for OneHotEncoding===") print (using_to_categorical(doc)) print () print (invert_encoding(int(0)))

numpy怎么合并两维度?使用numpysklearnKeras进行One(6)

numpy怎么合并两维度?使用numpysklearnKeras进行One(7)

要遵循的步骤:

  1. 将文本转换为小写
  2. Word Tokenize
  3. 通过使用LabelEncoder()获取其整数值,即位置
  4. 通过使用to_categorical()引用标签编码值来获取该单词的one hot编码

猜您喜欢: