Машинное обучение - Как предсказать набор фиксированных полей на основе прошлых особенностей - PullRequest
0 голосов
/ 11 февраля 2020

У меня довольно большой набор данных (> 100 тыс. Строк), который содержит информацию для логистических поставок. (экспортные поставки)

Набор данных выглядит следующим образом:

|shipper|consignee                    |origin|destination                                  |
|-------|-----------------------------|------|---------------------------------------------|
|6409292|288882                       |USSFO |CNPVG                                        |
|6409292|288882                       |USSFO |CNPVG                                        |
|6409292|182724                       |USSFO |HKHKG                                        |
|6409292|182724                       |USSFO |HKHKG                                        |
|8201922|948292                       |USSFO |FRCDG                                        |
|8201922|948292                       |USSFO |FRCDG                                        |
|8201922|948292                       |USSFO |FRNIC                                        |
|8201922|291222                       |USEWR |AEDXB                                        |

Итак, у нас есть список прошлых поставок. Он показывает отношения между грузоотправителем и грузополучателем, а также откуда и откуда была отправлена ​​посылка.

На основании этих прошлых данных я смогу sh предсказать, когда новая посылка будет добавив, посмотрев на consignee code и origin.

Пример

В качестве примера рассмотрим новое бронирование:

|shipper|consignee                    |origin|destination                                  |
|-------|-----------------------------|------|---------------------------------------------|
|1234567|948292                       |USMOB |?                                            |

Как обучить модель предсказать destination? И на что ссылается эта область в ОД?

1 Ответ

3 голосов
/ 11 февраля 2020

Прежде чем углубиться в машинное обучение, важно понять концепции:

  • Набор данных: это ваша коллекция данных, которая содержит столбцы и столбец target, которые мы хотим предсказать.

  • Тип проблемы: Это проблема, с которой мы сталкиваемся. Пожалуйста, проверьте следующую ссылку, которая объясняет больше об этом: типы проблем .

  • Metri c: Это для оценки производительности нашей модели, и у вас есть выбрать один, чтобы правильно оценить его. Например, если у вас есть True или False, вы можете быть оштрафованы каждый раз, когда ваша модель делает ошибку, как если бы он выбрал True в качестве ответа, он может получить 50% правильного результата, и это модель с точностью 0.5 который не является правильным, поскольку он только отвечает True. Я надеюсь, что этот пост поможет вам лучше понять.

  • Перекрестная проверка: Перекрестная проверка sklearn .

  • Обучение и разделение тестов: мы разбиваем наш набор данных на части, где будем использовать некоторую часть данных для train, а другую для test или оценим нашу модель.

Большую часть этого можно сделать с помощью популярной библиотеки sklearn, в следующем примере:

from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import make_scorer, accuracy_score
from sklearn.model_selection import cross_val_score, train_test_split

dataset = load_iris()

X_train, X_test, y_train, y_test = train_test_split(
    dataset.data, dataset.target, test_size=0.3, random_state=0)
# No corss validation
model = RandomForestClassifier()
model.fit(X_train, y_train)
predictions = model.predict(X_test)
accuracy_score(y_test, predictions)

# With cross validation
model = RandomForestClassifier()
accuracy_scorer = make_scorer(accuracy_score)

scores = cross_val_score(model, X_train, y_train, scoring=accuracy_scorer)
scores.mean()

Этот пример является очень простым, где данные обрабатываются и просты, также возникает проблема решается в большинстве случаев с точностью 0.9. Вам, вероятно, придется больше погружаться, чтобы решить проблему с большим количеством столбцов, чем просто. Я предлагаю погрузиться в kaggle и поискать ноутбуки или ядра с примерами, где люди обрабатывают какой-то набор данных и получают базовый уровень для данной проблемы, и вы можете изучать новые темы, такие как OneHotEncoding FeatureExtractions и и многое другое.

Также есть библиотеки, которые делают это для вас, или автоматизируют это и могут решить проблему классификации, посмотрите MLBlocks или ATM .

...