机器学习来检查IBAN校验和

时间:2018-06-21 07:52:14

标签: python pandas numpy machine-learning scikit-learn

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

我想用很多有效和无效的IBAN来训练AI。 培训结束后,我想测试一个IBAN,系统应该告诉我它是否是有效号码。

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

IBAN,有效 DE03683515573047232594,真实 DE89500502010000180802,真 DE33100500000000484848,false DE47701500000034343434,错误 ...

我正在将Python 3.6与numpy和sklearn结合使用。

#! 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 =)

问候 罗尼

1 个答案:

答案 0 :(得分:0)

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

  1. 前两个字符
  2. 第3-4个字符
  3. 字符5-8
  4. 字符9-12
  5. 字符9-末尾
  6. 最后两个字符
  7. 所有数字的总和
  8. 也许:所有数字的总和等于不同的数字

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