1.神经网络简介
神经网络是由大量的、简单的处理单元(称为神经元)广泛地互相连接而形成的复杂网络系统,它反映了人脑功能的许多基本特征,是一个高度复杂的非线性动力学习系统。神经网络具有大规模并行、分布式存储和处理、自组织、自适应和自学能力,特别适合处理需要同时考虑许多因素和条件的、不精确和模糊的信息处理问题。
2.创建数据集
通过PIL库文件绘制出模拟的验证码,寻找图像中的连续的黑色像素,抽取它们作为新的小图像并创建字母数据集。调用sklearn库文件中的check_random_state函数指定随机状态创建训练集。根据抽取方法调整训练数据集,使用sklearn中的train_test_split函数将数据集切分为测试集和训练集。
3.训练和分类
通过PyBrain库来构建神经网络分类器。调用PyBrain库中的SupervisedDateSet函数创建适合PyBrain的数据集格式。调用buildNetwork函数创建神经网络(三层)。利用反向传播算法训练神经网络(从输出层开始,层层向上回溯到输入层,并更新所有边的权重,增加正确率。)
4.用词典提升正确率
返回预测结果前,检查字典中是否包含该词条,如果存在则返回预测结果,否则找到和预测结果相似的词条,作为结果返回(该方法基于所有验证码全为英文单词)。使用列文斯坦编辑器(通过比较两个短字符串,确定它们相似度的方法)来寻找最相近的单词。组合整个项目,进行训练和测试获取预测结果和正确率。