У меня есть следующий набор данных:
| customer | item | number_of_orders |
| 1 | 1 | 1 |
| 1 | 2 | 0 |
| 1 | 3 | 0 |
| 1 | 4 | 1 |
| 2 | 1 | 0 |
| 2 | 2 | 0 |
| 2 | 3 | 0 |
| 2 | 4 | 1 |
...
Я пытаюсь заключить, если пользователь X закажет элемент Y в качестве первого шага.
Это код, который у меня есть пока что
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.neighbors import KNeighborsClassifier
model = KNeighborsClassifier(n_neighbors=3)
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=7)
model.fit(X_train, Y_train)
predictions = model.predict(X_test)
result = accuracy_score(Y_test, predictions)
result
Это дает очень высокую точность, но я подозреваю, что это связано с большим количеством нулей в наборе данных для number_of_orders
.
Может кто-то предложить как улучшить эту модель ML?
У меня также есть информация о цене и количестве товара, а также средняя цена за товар, которую я тоже решил использовать.
Моя конечная цель - создать систему рекомендаций на основе этих данных для возврата список рекомендаций, основанных на других заказах.