0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

recsys-pythonをやってみる【第1章】

Posted at

はじめに

レコメンドシステムに携わっているので、Pythonによる推薦システムの演習問題集であるrecsys-pythonを解いてみました。
まずは1章です。
参考にしたサイトは以下です。
https://note.nkmk.me/
https://oregengo.hatenablog.com/entry/2016/03/09/132214
https://qiita.com/okkn/items/54e81346d8f35733ab5e
https://biotech-lab.org/articles/12701

01 評価履歴の生成

import numpy
Du = numpy.array([[5, 3, 1],
                 [6, 2, 1],
                 [4, 1, 1],
                 [8, 5, -1,],
                 [2, 4, -1],
                 [3, 6, -1],
                 [7,  6, -1],
                 [4,  2, numpy.nan],
                 [5, 1, numpy.nan],
                 [8, 6, numpy.nan],
                 [3, 4, numpy.nan],
                 [4, 7, numpy.nan],
                 [4, 4, numpy.nan]])
print('Du = \n{}'.format(Du))

02 評価履歴の形状

print('Duの形状 = {}'.format(Du.shape))

03 評価履歴の行数

print('Duの行数 = {}'.format(Du.shape[0]))

04 評価履歴の列数

print('Duの列数 = {}'.format(Du.shape[1]))

05 評価履歴の全要素数

print('Duの全要素数 = {}'.format(Du.size))

06 アイテム集合

I = numpy.arange(0, Du.shape[0])
print('I = {}'.format(I))

07 アイテムの特徴ベクトルの集合

x = Du[:, :2]
print('x = \n{}'.format(x))

08 アイテムiの特徴ベクトル

i = 0
print('x{} = {}'.format(i, x[0]))

09 評価値集合

ru = Du[:, 2:3].reshape(Du.shape[0])
print('ru = {}'.format(ru))

10 評価値集合の形状

print('ruの形状 = {}'.format(ru.shape))

11 評価値集合の全要素数

print('ruの全要素数 = {}'.format(ru.shape[0]))

12 評価値集合の部分集合

i = 2
j = 5
print('ru{}からru{}までの評価値 = {}'.format(i, j-1, ru[i:j]))

13 評価値集合の要素の逆順

print('ruの逆順 = {}'.format(ru[::-1]))

14 アイテムiに対する評価値

i = 0
print('ru{} = {}'.format(i, ru[i]))

15 ユーザuが未評価であるか否かの判定

print('ユーザuが未評価 = {}'.format(numpy.isnan(ru)))

16 ユーザが評価済みであるか否かの判定

print('ユーザuが評価済み = {}'.format(~numpy.isnan(ru)))

17 ユーザuが評価済みのアイテム集合

Iu = I[~numpy.isnan(ru)]
print('Iu = {}'.format(Iu))

18 ユーザuが「好き」と評価したアイテム集合

Iup = I[ru == 1]
print('Iu+ = {}'.format(Iup))

19 ユーザuが「嫌い」と評価したアイテム集合

Iun = I[ru == -1]
print('Iu- = {}'.format(Iun))

20 ユーザuが未評価のアイテム集合

Iu_not = I[numpy.isnan(ru)]
print('Iu_not = {}'.format(Iu_not))

21 訓練データ

DuL = Du[Iu]
print('DuL = \n{}'.format(DuL))

22 訓練事例数

print('|DuL| = {}'.format(DuL.shape[0]))

23 正事例数

print('|DuL+| = {}'.format(DuL[DuL[:,2]==1].shape[0]))

24 負事例数

print('|DuL-| = {}'.format(DuL[DuL[:,2]==-1].shape[0]))

25 予測対象データ

DuU = Du[Iu_not]
print('DuU = \n{}'.format(DuU))

26 予測対象事例数

print('|DuU| = {}'.format(DuU.shape[0]))

おわりに

次回は2章できたらと思っています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?