ベクトル化
とは
データをベクトルの形式に変換することを指す
なぜ必要か?
一般的にコンピューターは数値データを処理することが可能であるが、文字列や画像などの非数値データを扱うことはできない そこで、非数値データを数値ベクトルに変換することで、コンピューターが扱いやすい形式に変換することがベクトル化の目的である ユースケース
機械学習:データをベクトル化することで、機械学習アルゴリズムに適した形式に変換することができる。特に、教師あり学習の場合には、入力データと教師ラベルをベクトル化して、モデルの学習に使用する ベクトル化してみた
実際にPythonでそれぞれのユースケース に対してベクトル化を行うとどうなるのか実験してみる 自然言語
ベクトル化されたデータを出力
code:script.py
import numpy as np
from sklearn.feature_extraction.text import CountVectorizer
# テキストデータ
# CountVectorizerを使用して、単語をベクトル化
vectorizer = CountVectorizer()
vectorizer.fit_transform(texts)
# ベクトルの出力
print(vectorizer.vocabulary_)
# {'this': 6, 'is': 2, 'pen': 4, 'that': 5, 'an': 0, 'apple': 1, 'like': 3}
画像ファイル
Imageモジュールのopen関数で画像を読み込む
numpyのarray関数でnumpy配列に変換
flatten関数で1次元のベクトルに変換
1次元のベクトルとして、画像のピクセル値が並んで出力される。各要素は0~255の整数値で、それぞれが画像の一つのピクセルの値を表す
code:script.py
import numpy as np
from PIL import Image
# 画像ファイル
image = Image.open('example.jpg')
# 画像をnumpy配列に変換
image_array = np.asarray(image)
# 画像をFlattenして、ベクトル化
vector = image_array.flatten()
# ベクトルの出力
print(vector)
#
ECにおける商品やユーザーの特徴
商品の特徴量を配列で準備
code:script.py
import numpy as np
from sklearn.preprocessing import OneHotEncoder
# 商品の特徴量
# OneHotEncoderを使用して、商品の特徴量をベクトル化
enc = OneHotEncoder()
enc.fit(product_features)
# ベクトルの出力
print(enc.transform('book', '20', '5'], ['food', '500', '100').toarray())