python - 机器学习检查 IBAN 校验和
问题描述
我是机器学习的新手,我需要一些帮助和想法。我想检测一个 IBAN 号码是否有效,并且应该在不知道校验和算法的情况下对其进行检查。
我想用大量有效和无效的 IBAN 训练 AI。培训结束后,我想测试一个 IBAN,系统应该告诉我它是否是一个有效的数字。
我有一个具有以下格式的 CSV 文件...
IBAN,有效 DE03683515573047232594,true DE89500502010000180802,true DE33100500000000484848,false DE47701500000034343434,false ...
我正在使用带有 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 =)
问候罗尼
解决方案
我认为这个问题的重点是建立一个好的特征向量。假设我们不知道如何验证 IBAN 号码,因此,我们不希望这部分是校验和等。我将构建一个至少具有以下特征的特征向量:
- 前两个字符
- 字符 3-4
- 字符 5-8
- 字符 9-12
- 字符 9-End
- 最后两个字符
- 所有数字的总和
- 也许:所有数字的总和 mod 不同的数字
然后取决于你有多少训练数据。准备好数据后,您会将其提供给分类器。我会尝试不同的分类器,如 CNN 和决策树。训练后,您尝试通过验证集优化超参数。
然后你在测试数据上测试它并计算准确度,f1-score...
看看这个特性的表现会很有趣,也许你可以添加其他特性来优化你的分类器。
那么你也能
推荐阅读
- sql - 如何组合来自两个不同日期范围sql的两个不同计数
- python - numpy:如何根据一维数组中的条件从两个二维数组中选择行?
- regex - 是否可以删除已经匹配的捕获组,使其不参与?
- r - 使用数据框时,Strptime 失败
- javascript - React Redux mapStateToProps 在获取新数据之前显示旧数据
- java - Firebase Android - 只需要特定表在本地设备中
- reverse-engineering - 在 14 个地址的作弊引擎中找到正确的健康值
- external-data-source - 使用 VBA 代码更新外部数据源链接
- python - Dask:聚合不同数据帧切片并合并在一起的内存有效方式
- javascript - JS回调函数问题?