首页 > 解决方案 > 机器学习 - 如何根据过去的特征预测一组固定字段

问题描述

我有一个相当大的数据集(> 100k 行),其中包含物流运输的信息。(出口货物)

数据集如下所示:

|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                                        |

所以我们这里有一份过去发货的清单。它显示了托运人和收货人之间的关系,以及货物从哪里来和发往哪里。

根据过去的数据,我希望能够通过查看consignee code和来预测何时添加新货件origin

例子

以下面的新预订为例:

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

如何训练模型来预测destination?ML 中的这个区域指的是什么?

标签: pythonmachine-learningprediction

解决方案


在深入机器学习之前,理解这些概念很重要:

  • 数据集:这是您的数据集合,其中包含target我们想要预测的列和列。

  • 问题类型:这是我们面临的问题。请查看以下链接,了解更多相关信息:问题类型

  • Metric:这是为了评估我们模型的性能,你必须选择一个才能正确评估它。例如,如果您有True或者False您可能希望每次您的模型犯错误时受到惩罚,就好像他True作为答案一样,他可能会得到 50% 的正确率,而这就是一个0.5准确度不正确的模型,因为它只回答True. 我希望这篇文章能帮助你更好地理解。

  • 交叉验证:交叉验证 sklearn

  • 训练和测试拆分:我们将数据集拆分为一块,我们将使用部分数据来train和其他部分来test评估我们的模型。

其中大部分可以使用流行的 library 来完成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等等。

还有 ara 库可以为您执行此操作,或将其自动化并可以解决分类问题,请查看MLBlocksATM


推荐阅读