python - 机器学习 - 如何根据过去的特征预测一组固定字段
问题描述
我有一个相当大的数据集(> 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 中的这个区域指的是什么?
解决方案
在深入机器学习之前,理解这些概念很重要:
数据集:这是您的数据集合,其中包含
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
等等。
推荐阅读
- performance - 为什么 Svelte 组件的增量成本高于 VDOM 框架?
- oracle - Oracle 的 SSIS 错误-反序列化包“值不在预期范围内”的异常
- python - 我不知道如何正确使用 fetch_message,discord.py
- javascript - 带有javascript的过渡不透明度不起作用
- java - SpringGuice 注入未命中
- python - Python中的因子多项式方程?
- java - java - 如何在java中创建一个联系表单删除按钮来删除选定的元素?
- python - 如何在 Linux 中使用 bash 和 for 循环水平连接文本文件?
- php - 是否可以在 symfony 中自动为表单提交添加价值?
- php - 获取多维数组中的元素计数并指定过滤器