编程语言
首页 > 编程语言> > python – 如何表示然后将具有不同列数的自定义数据集加载到sci-kit learn中

python – 如何表示然后将具有不同列数的自定义数据集加载到sci-kit learn中

作者:互联网

我正在进行击键生物识别认证项目.它就像是传统的基于密码的身份验证的包装器.如果密码正确,它会检查“打字节奏”,如果匹配用户的个人资料,则会给出正输出.否则,给出负输出.通过映射在键入密码时提取的一些定时属性来检查“打字节奏”.基本上有5个特征,即PP(按下时间),PR(按下释放时间),RP(释放 – 按下时间),RR(释放 – 释放时间)和总时间. PP是按两个连续键(字符)之间的时间. RR是释放两个连续密钥之间的时间. PR是按下按键和释放按键的时间. RP是释放键然后按下一个键之间的时间.总时间是按下密码的第一个密钥和释放密码的最后一个密钥之间的时间.

我正在为项目使用一个开放的数据库GREYC-Web based KeyStroke dynamics.每个数据收集会话都包含按下的键的ASCII值以及PP,PR,RP,RR和总时间的时间戳.它还包含实际用户是在输入密码还是冒名顶替者.在收集数据时,允许用户使用自己的密码.很自然,有不同长度的密码.除此之外,用户可能会按下额外的键(如Shift,Caps,Backspace,Delete等).对于特定用户,键入密码的不同会话可能具有不同的密码长度.请注意,此上下文中的密码长度是用户键入的密钥(字符)的总数.例如,如果用户的实际密码是“abcd”.在一个会话中,他正确地键入它并且密码长度为4.在另一个会话中,他键入以下一组键 – a,l,BACKSPACE,b,c,d-因此密码长度为6.

enter image description here

以下是拟议系统的一些背景.所提出的系统框图如下. “输入特征空间分区”创建实际数据库的子集以馈送到不同的分类器,即高斯,K-NN和OCSVM.这些分类器的输出被馈送到反向传播神经网络(BPNN),其结果是最终输出. BPNN用于惩罚那些给出错误结果的分类器并奖励那些给出正确结果的分类器.

我的问题是如何以结构化格式表示这种不同长度的数据,以便可以在sci-kit学习中处理和使用它.

我已经研究过熊猫和numpy来预处理数据.但我的问题先于预处理阶段.

提前致谢!

解决方法:

一个选项可能是Recurrent Neural Network.这些网络有效地为自己提供信息,有效地创建了时间函数,或者在您的情况下,创建了单词中相对位置的函数.这些网络的结构如下:

enter image description here

左侧部分(箭头前)显示了RNN的理论结构.值不仅在网络中的节点之间传递,还在时间步之间传递.这种通用结构允许嵌入任意时间,或者在您的情况下,任意字长.

在某些问题上能够获得更好结果的RNN的常见实现是LSTM或长期短期内存网络.

enter image description here

为了避免过于复杂的介绍性答案,我不会详细介绍这些问题.基本上,它们具有更复杂的“隐藏单元”,这有助于更复杂地决定保留什么数据以及什么是“遗忘”.

如果您想自己实现这些,请查看Tensorflow.如果你有一个更舒服的图书馆,可以随意研究它的RNN和LSTM的实现,但如果没有,Tensorflow是一个很好的起点.

祝你的研究顺利,我希望这会有所帮助!

标签:python,machine-learning,scikit-learn,keystroke
来源: https://codeday.me/bug/20190710/1428843.html