質問編集履歴

4

変更

2018/10/24 07:44

投稿

trafalbad
trafalbad

スコア303

test CHANGED
@@ -1 +1 @@
1
- Factorization Machines(libFM)でレコメンド読み込ませるデータ形式について
1
+ pandasのdataframeをリスト辞書を挿入した形式にする方法
test CHANGED
@@ -1,161 +1,63 @@
1
- レコメンドのFactorization Machines(libFM)に訓練データとテストデータを読み込ませたところ次のようなエラーがでました
2
-
3
- ```python
4
-
5
- TypeError: A dense matrix was passed in, but sparsedata is required.
6
-
7
- ```
8
-
9
- データはともにnumpy形式で読み込ませました。pandasでも同様エラーで
1
+ 次のようなpandasのDataFrame(df)がありま
10
-
11
-
12
-
13
- Factorization Machinesは特殊な行列を使うようなのですが、読み込ませるデータはどのような形式にすればいいのでしょうか?
14
-
15
- ご教授お願いします。
16
2
 
17
3
 
18
4
 
19
5
  ```python
20
6
 
21
- f1=pd.read_csv('both.csv')
7
+ user_id age sex occupation zip_code
22
8
 
23
- f1=f1.fillna(0)
9
+ 23 12 11 11
24
10
 
25
- ラベル
11
+ 34 22 22 33
26
12
 
27
- label=pd.DataFrame(f1['label'])
13
+ 445 33 44 22
28
14
 
29
- label=label.applymap(lambda x: int(x-1))
30
-
31
- label=np.array(label)
15
+ ```
32
-
33
- >>>(1180237, 1)
34
16
 
35
17
 
36
18
 
37
- # 特徴量
38
-
39
- f1=f1.drop('label', axis=1)
19
+ これをしたのような形(dic_list)に変化させたいと考えています
40
-
41
- data=f1.drop('kaiin', axis=1)
42
-
43
- data=np.array(data)
44
-
45
- >>>(1180237, 15)
46
20
 
47
21
 
48
22
 
23
+ ```python
49
24
 
25
+ # dic_list
50
26
 
51
- # train/test データに分ける
27
+ [
52
28
 
53
- X_train, X_test, y_train, y_test = train_test_split(data,
29
+ {'user_id': '23', 'movie_id': '12', 'occupation':'11', 'zip_code': '11'},
54
30
 
55
- label, test_size=0.4,random_state=0)
31
+ {'user_id': '34', 'movie_id': '22', 'occupation':'22', 'zip_code': '33'},
32
+
33
+ {'user_id': '445', 'movie_id': '33', 'occupation':'44', 'zip_code': '22'},
34
+
35
+ ]
36
+
37
+ ```
56
38
 
57
39
 
58
40
 
59
-
60
-
61
- # 読み込ませる
62
-
63
- from sklearn.metrics import mean_squared_error
41
+ [このサイト](https://github.com/oreilly-japan/ml-at-work/blob/master/chap07/Movie_recommendation.ipynb)のようにしたいのですが、このサイトではわかりやすいやり方では
64
-
65
- from fastFM import mcmc
66
42
 
67
43
 
68
44
 
69
- n_iter = 300
45
+ ```python
70
46
 
71
- step_size = 1
47
+ data=[]
72
48
 
73
- seed = 123
49
+ data.append({ "user_id": str(user), "movie_id": str(movieid)})
74
50
 
75
- rank = 4
51
+ ```
76
52
 
77
53
 
78
54
 
55
+ のように入れていました。
79
56
 
57
+ ```list(df.T.to_dict().values())```
80
58
 
81
- fm = mcmc.FMRegression(n_iter=0, rank=rank, random_state=seed)
82
-
83
- # Allocates and initalizes the model and hyper parameter.
84
-
85
- fm.fit_predict(X_train, y_train, X_test)
59
+ としても、上の形(dic_list)になりません。
86
60
 
87
61
 
88
62
 
89
-
90
-
91
-
92
-
93
-
94
-
95
-
96
-
97
-
98
-
99
- # エラー
100
-
101
- TypeError Traceback (most recent call last)
102
-
103
- <ipython-input-28-9558dce7ad6e> in <module>()
104
-
105
- 14 fm = mcmc.FMRegression(n_iter=0, rank=rank, random_state=seed)
106
-
107
- 15 # Allocates and initalizes the model and hyper parameter.
108
-
109
- ---> 16 fm.fit_predict(X_train, y_train, X_test)
110
-
111
- 17
112
-
113
- 18 rmse_dev_test = []
114
-
115
-
116
-
117
- ~/anaconda3/lib/python3.6/site-packages/fastFM/mcmc.py in fit_predict(self, X_train, y_train, X_test, n_more_iter)
118
-
119
- 108 self.task = "regression"
120
-
121
- 109 X_train, y_train, X_test = _validate_mcmc_fit_input(X_train, y_train,
63
+ pandasの通常のDataFrameをリストの中に辞書形式を挿入する形式(dic_list)のようにする方法を教えていただけないでしょうか?よろしくお願いします
122
-
123
- --> 110 X_test)
124
-
125
- 111
126
-
127
- 112 self.n_iter = self.n_iter + n_more_iter
128
-
129
-
130
-
131
- ~/anaconda3/lib/python3.6/site-packages/fastFM/mcmc.py in _validate_mcmc_fit_input(X_train, y_train, X_test)
132
-
133
- 50 assert X_train.shape[1] == X_test.shape[1]
134
-
135
- 51 X_train = check_array(X_train, accept_sparse="csc", dtype=np.float64,
136
-
137
- ---> 52 order="F")
138
-
139
- 53 X_test = check_array(X_test, accept_sparse="csc", dtype=np.float64,
140
-
141
- 54 order="F")
142
-
143
-
144
-
145
- ~/anaconda3/lib/python3.6/site-packages/fastFM/validation.py in wrapper(*args, **kwargs)
146
-
147
- 27 def wrapper(*args, **kwargs):
148
-
149
- 28 if 'accept_sparse' in kwargs and not sparse.isspmatrix(args[0]):
150
-
151
- ---> 29 raise TypeError('A dense matrix was passed in, but sparse'
152
-
153
- 30 'data is required.')
154
-
155
- 31 result = func(*args, **kwargs)
156
-
157
-
158
-
159
- TypeError: A dense matrix was passed in, but sparsedata is required.
160
-
161
- ```

3

質問変更

2018/10/24 07:44

投稿

trafalbad
trafalbad

スコア303

test CHANGED
@@ -1 +1 @@
1
- kubernetestensorflowとGPUを動かす方法
1
+ Factorization Machines(libFM)のレコメンドに読み込ませるデータ形式について
test CHANGED
@@ -1,13 +1,161 @@
1
- GKE上でkubernetes(k8s)を使い、機械学習基盤(下図の[ルカリ基盤](https://tech.mercari.com/entry/mercari-mlopsnight-1)構築しようています。
1
+ レコンドFactorization Machines(libFM)に訓練データとテストデータ読み込ませたところ次のようなエラーがでま
2
+
3
+ ```python
4
+
5
+ TypeError: A dense matrix was passed in, but sparsedata is required.
6
+
7
+ ```
8
+
9
+ データはともにnumpy形式で読み込ませました。pandasでも同様のエラーです
2
10
 
3
11
 
4
12
 
5
- 下の図のようにk8s内でtensorflow のGPUを動かすためにはnvidia dockerをホストマシンからマウントする方法があると記事で見たのですが(https://qiita.com/cvusk/items/5a6f57876fdcff7710d2 ) 、2018年10月の時点でもっと簡単方法はあるのでしょうか?それともだホストマシンからマウントす方法が主流なのでしょうか?
13
+ Factorization Machinesは特殊行列を使うようなのですが、読み込データはどのよう形式にすればいいのでしょうか?
14
+
15
+ ご教授お願いします。
6
16
 
7
17
 
8
18
 
9
- ご教授お願いします
19
+ ```python
20
+
21
+ f1=pd.read_csv('both.csv')
22
+
23
+ f1=f1.fillna(0)
24
+
25
+ # ラベル
26
+
27
+ label=pd.DataFrame(f1['label'])
28
+
29
+ label=label.applymap(lambda x: int(x-1))
30
+
31
+ label=np.array(label)
32
+
33
+ >>>(1180237, 1)
10
34
 
11
35
 
12
36
 
37
+ # 特徴量
38
+
39
+ f1=f1.drop('label', axis=1)
40
+
41
+ data=f1.drop('kaiin', axis=1)
42
+
43
+ data=np.array(data)
44
+
45
+ >>>(1180237, 15)
46
+
47
+
48
+
49
+
50
+
51
+ # train/test データに分ける
52
+
53
+ X_train, X_test, y_train, y_test = train_test_split(data,
54
+
55
+ label, test_size=0.4,random_state=0)
56
+
57
+
58
+
59
+
60
+
61
+ # 読み込ませる
62
+
63
+ from sklearn.metrics import mean_squared_error
64
+
65
+ from fastFM import mcmc
66
+
67
+
68
+
69
+ n_iter = 300
70
+
71
+ step_size = 1
72
+
73
+ seed = 123
74
+
75
+ rank = 4
76
+
77
+
78
+
79
+
80
+
81
+ fm = mcmc.FMRegression(n_iter=0, rank=rank, random_state=seed)
82
+
83
+ # Allocates and initalizes the model and hyper parameter.
84
+
85
+ fm.fit_predict(X_train, y_train, X_test)
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+ # エラー
100
+
101
+ TypeError Traceback (most recent call last)
102
+
13
- ![イメージ説明](0d08216b304e25badeddbc0ee91a67dd.png)
103
+ <ipython-input-28-9558dce7ad6e> in <module>()
104
+
105
+ 14 fm = mcmc.FMRegression(n_iter=0, rank=rank, random_state=seed)
106
+
107
+ 15 # Allocates and initalizes the model and hyper parameter.
108
+
109
+ ---> 16 fm.fit_predict(X_train, y_train, X_test)
110
+
111
+ 17
112
+
113
+ 18 rmse_dev_test = []
114
+
115
+
116
+
117
+ ~/anaconda3/lib/python3.6/site-packages/fastFM/mcmc.py in fit_predict(self, X_train, y_train, X_test, n_more_iter)
118
+
119
+ 108 self.task = "regression"
120
+
121
+ 109 X_train, y_train, X_test = _validate_mcmc_fit_input(X_train, y_train,
122
+
123
+ --> 110 X_test)
124
+
125
+ 111
126
+
127
+ 112 self.n_iter = self.n_iter + n_more_iter
128
+
129
+
130
+
131
+ ~/anaconda3/lib/python3.6/site-packages/fastFM/mcmc.py in _validate_mcmc_fit_input(X_train, y_train, X_test)
132
+
133
+ 50 assert X_train.shape[1] == X_test.shape[1]
134
+
135
+ 51 X_train = check_array(X_train, accept_sparse="csc", dtype=np.float64,
136
+
137
+ ---> 52 order="F")
138
+
139
+ 53 X_test = check_array(X_test, accept_sparse="csc", dtype=np.float64,
140
+
141
+ 54 order="F")
142
+
143
+
144
+
145
+ ~/anaconda3/lib/python3.6/site-packages/fastFM/validation.py in wrapper(*args, **kwargs)
146
+
147
+ 27 def wrapper(*args, **kwargs):
148
+
149
+ 28 if 'accept_sparse' in kwargs and not sparse.isspmatrix(args[0]):
150
+
151
+ ---> 29 raise TypeError('A dense matrix was passed in, but sparse'
152
+
153
+ 30 'data is required.')
154
+
155
+ 31 result = func(*args, **kwargs)
156
+
157
+
158
+
159
+ TypeError: A dense matrix was passed in, but sparsedata is required.
160
+
161
+ ```

2

2018/10/24 02:16

投稿

trafalbad
trafalbad

スコア303

test CHANGED
@@ -1 +1 @@
1
- kubernetes内でのパイプラインの構築方法について
1
+ kubernetes内でtensorflowとGPUを動かす方法
test CHANGED
@@ -2,35 +2,11 @@
2
2
 
3
3
 
4
4
 
5
- 下の図のようにk8s内でgunicornやredisなどを運用するためには、
6
-
7
- ・gunicorn用のDockerの構築
8
-
9
- ・redis用のDockerの構築
10
-
11
- のように各パートごとPodを用意してDockerを起動するように、Podを複数作構造なのでしょうか?
5
+ 図のようにk8s内でtensorflow のGPUを動かすためはnvidia dockerをホストマシンからマウントする方法があると記事で見たのですが(https://qiita.com/cvusk/items/5a6f57876fdcff7710d2 ) 、2018年10月の時点ではもっと簡単な方法はあのでしょうか?それともまだホストマシンからマウントする方法が主流なのでしょうか?
12
6
 
13
7
 
14
8
 
15
- それとも一つのDockerのみで全てのパイプラインパーツを構築しているのでしょうか?
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
- **質問**
24
-
25
- 下図のような基盤のパイプラインの構築方法として
26
-
27
- ①単一のDocker
28
-
29
-
30
-
31
- ②複数のPod内でDockerを構築している
32
-
33
- のどちらなのでしょうか?ご教授お願いします
9
+ ご教授お願いします
34
10
 
35
11
 
36
12
 

1

追記

2018/10/19 02:27

投稿

trafalbad
trafalbad

スコア303

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- GKE上でkubernetes(k8s)を使い、機械学習基盤(下図のメルカリの基盤)を構築しようとしています。
1
+ GKE上でkubernetes(k8s)を使い、機械学習基盤(下図の[メルカリの基盤](https://tech.mercari.com/entry/mercari-mlopsnight-1))を構築しようとしています。
2
2
 
3
3
 
4
4