机器学习检查 IBAN 校验和

Posted

技术标签:

【中文标题】机器学习检查 IBAN 校验和【英文标题】:Machine Learning to check IBAN checksum 【发布时间】:2018-11-30 11:17:42 【问题描述】:

我是机器学习的新手,我需要一些帮助和想法。 我想检测一个 IBAN 号码是否有效,并且应该在不知道校验和算法的情况下对其进行检查。

我想用大量有效和无效的 IBAN 训练 AI。 培训结束后,我想测试一个 IBAN,系统会告诉我它是否是一个有效数字。

我有一个格式如下的 CSV 文件...

IBAN,有效 DE03683515573047232594,真 DE89500502010000180802,真 DE33100500000000484848,假 DE47701500000034343434,假 ...

我正在使用带有 numpy 和 sklearn 的 Python 3.6。

#! python
import sys
import csv

import matplotlib.pyplot as plt
import pandas
import numpy
import seaborn
import sklearn

filename    = "iban.csv"
raw_data    = open(filename, "rt")
reader      = csv.reader(raw_data)

iban_list   = list(reader)
data        = []

i = 0
for val in  numpy.array(iban_list):
    if i > 0:
        data.append(val)
    i += 1

from sklearn import datasets, linear_model
from sklearn.model_selection import train_test_split

# Train Data
# https://www.ritchieng.com/pandas-scikit-learn/
# https://github.com/datacamp/courses-kaggle-python-machine-learning/blob/master/chapter2.md

train = pandas.read_csv(filename)
train.head()

feature_cols = ['IBAN', 'Valid']

# here I need some help =)

问候 罗尼

【问题讨论】:

如果校验和计算已知为 mod-97-10,为什么还要尝试构建这样的系统?快速谷歌搜索显示这是-> 步骤 1:附加两个零以占据检查字符位置:79400;步骤2:除以97,得到商818和整数余数54;第 3 步:确定校验字符值为 (97 + 1) - 54 = 44 并将其附加到原始字符串中得到 79444。 这就是原因,因为我写了“应该在不知道校验和算法的情况下对其进行检查”。我想通过机器学习来解决。 当然,您可以这样做,但准确度充其量仍低于使用实际算法。这让我很好奇为什么你会想要这样做,而机器学习有无穷无尽的有用的事情要做......oO 仅供学习之用。后来,我想把它应用到其他东西上。我不想从图像分类或类似的东西开始。我想从一个简单的东西开始,比如 IBAN 校验和。 那么你的问题到底是什么? 【参考方案1】:

我认为这个问题的重点是建立一个好的特征向量。假设我们不知道如何验证 IBAN 号码,因此,我们不希望这部分是校验和等。我将构建一个至少具有以下特征的特征向量:

    前两个字符 字符 3-4 字符 5-8 字符 9-12 字符 9 结尾 最后两个字符 所有数字的总和 也许:所有数字之和 mod 不同数字

那么这取决于你有多少训练数据。准备好数据后,您会将其提供给分类器。我会尝试不同的分类器,如 CNN 和决策树。 训练后,您尝试通过验证集优化超参数。 然后在测试数据上对其进行测试并计算准确度,f1-score... 看看这些功能的表现会很有趣,也许您可​​以添加其他功能来优化您的分类器。 然后就可以了

【讨论】:

听起来不错。你有任何示例代码来做这样的事情吗?问候罗尼 @RonnyCSHARP 不。我没有,但如果你不着急的话,也许我们可以一起做。因为我还有其他事情要做。

以上是关于机器学习检查 IBAN 校验和的主要内容,如果未能解决你的问题,请参考以下文章

机器学习入门

“交通·未来”第18期:基于机器学习的港口国监督检查选船和检查员排班预测优化模型

如何计算 IBAN 国家校验码?

Spark MLlib 机器学习

Spark MLlib 机器学习

机器学习