python - 机器学习检测随机字符串

标签 python machine-learning scikit-learn

如果发布了类似的内容,我提前表示歉意,但根据我所做的研究,我找不到任何具体内容。

我目前正在查看http://scikit-learn.org这里的内容看起来很棒,但我很困惑应该使用什么类型来解决我的问题。

我希望能够有 2 个标签。

**Suspicious**  
1hbn34uqrup7a13t
qmr30zoyswr21cdxolg
1qmqnbetqx

**Not-Suspicious**
cheesemix
reg526
animato12

我可以向哪种类型的机器学习算法提供上面的数据,以教导它通过监督学习我认为可疑的东西?

我倾向于分类,但有太多模型可供选择,我有点迷失。

最佳答案

此类机器学习问题的第一步是考虑“特征”。你不能使用例如直接在这些字符串上的线性分类器。因此,您必须提取一些描述字符串的有意义的特征。在计算机视觉中,这些特征往往是边缘、角点、SIFT特征。您基本上必须选择:

  1. 您自己设计功能。
  2. 了解功能。

1) 这是“经典”机器学习方法:您手动设计代表性特征列表,您可以从输入数据中提取这些特征。对于您的情况,您可以从例如开始

  • 字符串长度
  • 不同字符的数量
  • 特殊字符数量
  • 关于排序的一些事情?
  • ...

这将为您提供每个字符串的数字向量。现在,您可以使用 scikit-learn 中的任何分类器对数据进行分类。您可以在this flowchart的帮助下开始选择您的算法。 。您应该从一个简单的模型开始,例如线性模型(例如线性 SVM)。如果性能不够,请使用更复​​杂的模型(例如带内核的 SVM),或重新考虑您对功能的选择。

2) 这是“现代”方法,越来越受欢迎。设计特征是 1) 中的关键步骤,它需要对数据有充分的了解。现在,通过使用深度神经网络,您可以将原始数据(字符串)输入网络,并让网络自行学习这些“特征”。然而,这需要大量带标签的训练数据和大量的处理能力(GPU)。

LSTM 网络是当今自然语言处理和类似任务领域最先进的网络。 LSTM 非常适合您的任务,因为输入的长度可以是可变的。

tl;dr:要么自己设计特征并使用您选择的分类器,要么深入研究深度神经网络并让网络学习特征和分类。

关于python - 机器学习检测随机字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41769819/

相关文章:

python - 按行附加 Pandas 数据框

python - 将 Pandas DateTimeIndex 转换为 Unix 时间?

python - 如何使文本分类给出 None 类别

python - 了解 sklearn 的 KNNImputer

python - CNN keras中图像的混淆矩阵

python - 停止 TensorFlow 数据集 `from_generator` 的正确方法?

python - numpy argsort 可以返回较低的关系索引吗?

machine-learning - 大型网格世界环境的 DQN 探索策略

machine-learning - 如何在不使用计算器或代码的情况下手动计算(200)C(100)和这么大的数字的组合?

machine-learning - 决策树的深度取决于什么?