質問編集履歴
12
書式の改善
test
CHANGED
File without changes
|
test
CHANGED
@@ -140,15 +140,9 @@
|
|
140
140
|
|
141
141
|
|
142
142
|
|
143
|
-
|
143
|
+
特に下記コード
|
144
144
|
|
145
145
|
```
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
とくに重複したクエリ取得と
|
150
|
-
|
151
|
-
|
152
146
|
|
153
147
|
pow(dataset[person1][item]-dataset[person2][item], 2)
|
154
148
|
|
11
書式の改善
test
CHANGED
File without changes
|
test
CHANGED
@@ -104,7 +104,7 @@
|
|
104
104
|
|
105
105
|
movie1=[person1.movie.value]
|
106
106
|
|
107
|
-
score1=[person1.
|
107
|
+
score1=[person1.score.value]
|
108
108
|
|
109
109
|
|
110
110
|
|
@@ -114,7 +114,7 @@
|
|
114
114
|
|
115
115
|
movie2=[person2.movie.value]
|
116
116
|
|
117
|
-
score2=[person2.
|
117
|
+
score2=[person2.score.value]
|
118
118
|
|
119
119
|
|
120
120
|
|
10
書式の改善
test
CHANGED
File without changes
|
test
CHANGED
@@ -126,9 +126,9 @@
|
|
126
126
|
|
127
127
|
|
128
128
|
|
129
|
-
for value
|
129
|
+
for value in set_both.values:
|
130
130
|
|
131
|
-
distance = pow(movie_score1.
|
131
|
+
distance = pow(movie_score1.value-movie_score2.value, 2)
|
132
132
|
|
133
133
|
list_destance.append(distance)
|
134
134
|
|
9
書式
test
CHANGED
File without changes
|
test
CHANGED
@@ -36,11 +36,13 @@
|
|
36
36
|
|
37
37
|
```
|
38
38
|
|
39
|
-
|
39
|
+
|
40
40
|
|
41
41
|
下記コードは[Pythonで簡単な協調フィルタリングを実装するためのノート](https://qiita.com/hik0107/items/96c483afd6fb2f077985)
|
42
42
|
|
43
43
|
を参考にしました。
|
44
|
+
|
45
|
+
|
44
46
|
|
45
47
|
```
|
46
48
|
|
@@ -86,7 +88,7 @@
|
|
86
88
|
|
87
89
|
|
88
90
|
|
89
|
-
|
91
|
+
これをデータベースから引っ張り出してdjangoで書いたみたのが下記プログラムです。
|
90
92
|
|
91
93
|
|
92
94
|
|
@@ -164,8 +166,4 @@
|
|
164
166
|
|
165
167
|
またここに書いてあるよってありましたら、教えてください。
|
166
168
|
|
167
|
-
teratailにも聞いてます。
|
168
|
-
|
169
|
-
https://teratail.com/questions/188254?modal=q-comp
|
170
|
-
|
171
169
|
よろしくお願いします。
|
8
書式
test
CHANGED
File without changes
|
test
CHANGED
@@ -86,49 +86,9 @@
|
|
86
86
|
|
87
87
|
|
88
88
|
|
89
|
-
この場合一つ案ででてきたのが
|
90
|
-
|
91
|
-
```
|
92
|
-
|
93
|
-
|
89
|
+
そこで一つ考えたのが下記プログラムなのですが、どうでしょうか?
|
94
|
-
|
95
|
-
person1 = Entry.objects.values('movie','score').get(name='Lisa Rose')
|
96
|
-
|
97
|
-
person2 = Entry.objects.values('movie','score').get(name='Gene Seymour')
|
98
|
-
|
99
|
-
set_both= person1.movie.values & perosn2.movie.vulues
|
100
90
|
|
101
91
|
|
102
|
-
|
103
|
-
if len(set_both)==0:
|
104
|
-
|
105
|
-
return 0
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
list_destance = []
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
for person1.movie.value,person2.movie.value in set_both:
|
114
|
-
|
115
|
-
distance = pow(person1.score.value-person2.score.value, 2)
|
116
|
-
|
117
|
-
list_destance.append(distance)
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
return 1/(1+sqrt(sum(list_destance)))
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
```
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
もう一つ考えたのが
|
132
92
|
|
133
93
|
```
|
134
94
|
|
@@ -164,9 +124,9 @@
|
|
164
124
|
|
165
125
|
|
166
126
|
|
167
|
-
for
|
127
|
+
for values in set_both.values:
|
168
128
|
|
169
|
-
distance = pow(movie_score1.s
|
129
|
+
distance = pow(movie_score1..values-movie_score2.values, 2)
|
170
130
|
|
171
131
|
list_destance.append(distance)
|
172
132
|
|
@@ -184,11 +144,7 @@
|
|
184
144
|
|
185
145
|
|
186
146
|
|
187
|
-
ここからわからないです。
|
188
|
-
|
189
|
-
とくに
|
190
|
-
|
191
|
-
重複したクエリ取得と
|
147
|
+
とくに重複したクエリ取得と
|
192
148
|
|
193
149
|
|
194
150
|
|
@@ -200,6 +156,8 @@
|
|
200
156
|
|
201
157
|
が特にどうかけばいいのかわかりません。
|
202
158
|
|
159
|
+
一応上記で自分の書いたプログラム書いてみたのですが....
|
160
|
+
|
203
161
|
djangoで協調フィルタリングのプログラムってサイトさがしてもないのですが
|
204
162
|
|
205
163
|
どう書いたらいいでしょうか?
|
@@ -210,4 +168,4 @@
|
|
210
168
|
|
211
169
|
https://teratail.com/questions/188254?modal=q-comp
|
212
170
|
|
213
|
-
よろしくお願いします
|
171
|
+
よろしくお願いします。
|
7
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -188,8 +188,6 @@
|
|
188
188
|
|
189
189
|
とくに
|
190
190
|
|
191
|
-
```
|
192
|
-
|
193
191
|
重複したクエリ取得と
|
194
192
|
|
195
193
|
|
6
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -86,7 +86,7 @@
|
|
86
86
|
|
87
87
|
|
88
88
|
|
89
|
-
この場合
|
89
|
+
この場合一つ案ででてきたのが
|
90
90
|
|
91
91
|
```
|
92
92
|
|
@@ -196,9 +196,9 @@
|
|
196
196
|
|
197
197
|
pow(dataset[person1][item]-dataset[person2][item], 2)
|
198
198
|
|
199
|
-
|
200
|
-
|
201
|
-
```
|
199
|
+
```
|
200
|
+
|
201
|
+
|
202
202
|
|
203
203
|
が特にどうかけばいいのかわかりません。
|
204
204
|
|
5
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -120,6 +120,66 @@
|
|
120
120
|
|
121
121
|
return 1/(1+sqrt(sum(list_destance)))
|
122
122
|
|
123
|
+
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
```
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
もう一つ考えたのが
|
132
|
+
|
133
|
+
```
|
134
|
+
|
135
|
+
def get_similairty(person1, person2):
|
136
|
+
|
137
|
+
person1 = Entry.objects.filter(name='TaroLisa Rose')
|
138
|
+
|
139
|
+
person2 = Entry.objects.filter(name='TaroGene Seymour')
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
movie1=[person1.movie.value]
|
144
|
+
|
145
|
+
score1=[person1.movie.value]
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
movie_score1=dict(zip(movie1,score1))
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
movie2=[person2.movie.value]
|
154
|
+
|
155
|
+
score2=[person2.movie.value]
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
movie_score2=dict(zip(movie2,score2))
|
160
|
+
|
161
|
+
|
162
|
+
|
163
|
+
set_both=movie_score1.keys() & movie_score2.keys()
|
164
|
+
|
165
|
+
|
166
|
+
|
167
|
+
for movie_score1.keys,movie_score2.keys in set_both:
|
168
|
+
|
169
|
+
distance = pow(movie_score1.score-movie_score2.score, 2)
|
170
|
+
|
171
|
+
list_destance.append(distance)
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
return 1/(1+sqrt(sum(list_destance)))
|
176
|
+
|
177
|
+
```
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
|
182
|
+
|
123
183
|
```
|
124
184
|
|
125
185
|
|
@@ -148,8 +208,8 @@
|
|
148
208
|
|
149
209
|
またここに書いてあるよってありましたら、教えてください。
|
150
210
|
|
151
|
-
|
211
|
+
teratailにも聞いてます。
|
152
|
-
|
212
|
+
|
153
|
-
|
213
|
+
https://teratail.com/questions/188254?modal=q-comp
|
154
|
-
|
214
|
+
|
155
|
-
|
215
|
+
よろしくお願いしますw
|
4
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -96,7 +96,7 @@
|
|
96
96
|
|
97
97
|
person2 = Entry.objects.values('movie','score').get(name='Gene Seymour')
|
98
98
|
|
99
|
-
set_both= person1.movie.
|
99
|
+
set_both= person1.movie.values & perosn2.movie.vulues
|
100
100
|
|
101
101
|
|
102
102
|
|
@@ -107,6 +107,18 @@
|
|
107
107
|
|
108
108
|
|
109
109
|
list_destance = []
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
for person1.movie.value,person2.movie.value in set_both:
|
114
|
+
|
115
|
+
distance = pow(person1.score.value-person2.score.value, 2)
|
116
|
+
|
117
|
+
list_destance.append(distance)
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
return 1/(1+sqrt(sum(list_destance)))
|
110
122
|
|
111
123
|
```
|
112
124
|
|
3
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|
2
test
CHANGED
File without changes
|
test
CHANGED
@@ -96,7 +96,7 @@
|
|
96
96
|
|
97
97
|
person2 = Entry.objects.values('movie','score').get(name='Gene Seymour')
|
98
98
|
|
99
|
-
set_both= person1.keys() & perosn2.keys()
|
99
|
+
set_both= person1.movie.keys() & perosn2.movie.keys()
|
100
100
|
|
101
101
|
|
102
102
|
|
1
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -135,3 +135,9 @@
|
|
135
135
|
どう書いたらいいでしょうか?
|
136
136
|
|
137
137
|
またここに書いてあるよってありましたら、教えてください。
|
138
|
+
|
139
|
+
djangoのfilterみているんですが、なかなかうまくかけずに
|
140
|
+
|
141
|
+
自分の書いたプログラムには問題点が多いみたいですので、こういう感じで書くといいんじゃないか
|
142
|
+
|
143
|
+
できればdjangoではこう書くって教えてもらえると助かります
|