如何识别数据上的重复模式并提出一些建议?



我有一个庞大的数据集,其中包含一些重复的数据(用户日志文件(,并希望根据用户下载进行类似的模式发生识别和建议。一旦模式识别完成,我需要向用户推荐最佳值。

例如,以下是基于时间的下载日志:

A C D F A C D A B D A C D F A C D A B D

我想识别此数据集之间存在的模式,并将结果显示为:

A -> C = 4
C -> D = 4 
D -> F = 2
F -> A = 2
D -> A = 3
A -> B = 1
B -> D = 1
A -> C -> D = 2
C -> D -> F = 2 
D -> F -> A = 1
F -> A -> C = 1
C -> D -> A = 1
D -> A -> B = 1
A -> B -> D = 1

末尾的数字表示该模式的重复次数。 当用户输入"A"时,最好的建议应该是"C",如果用户输入的是"A -> C",那么它应该是"D"。

目前,我正在使用Python中的熊猫进行数据清理,对于模式识别,我认为scikit-learn可能会起作用(但不确定(。 是否有任何好的库或算法可用于此问题,或者是否有针对此类问题的好方法?

由于数据大小非常大,我正在使用Python实现它。

当前的问题可以通过n_grams轻松解决。您可以使用 CountVectorizer 找出文本中的n_grams及其频率,并生成所需的输出。

from sklearn.feature_extraction.text import CountVectorizer
# Changed the token_pattern to identify only single letter words
# n_gram = (2,5), to identify from 2 upto 5-grams
cv = CountVectorizer(ngram_range=(1,5), token_pattern=r"(?u)bwb",
lowercase=False)
# Wrapped the data in a list, because CountVectorizer requires an iterable
data = ['A C D F A C D A B D A C D F A C D A B D']
# Learn about the data
cv.fit(data)
# This is just to prettify the printing
import pandas as pd
df = pd.DataFrame(cv.get_feature_names(), columns = ['pattern'])
# Add the frequencies
df['count'] = cv.transform(data).toarray()[0]   #<== Changing to dense matrix
df
#Output
pattern  count
A B      2
A B D      2
A B D A      1
A B D A C      1
A C      4
A C D      4
A C D A      2
A C D A B      2
A C D F      2
A C D F A      2
B D      2
B D A      1
B D A C      1
B D A C D      1
C D      4
C D A      2
C D A B      2
C D A B D      2
C D F      2
C D F A      2
C D F A C      2
D A      3
D A B      2
D A B D      2
D A B D A      1
D A C      1
D A C D      1
D A C D F      1
D F      2
D F A      2
D F A C      2
D F A C D      2
F A      2
F A C      2
F A C D      2
F A C D A      2

但我建议您尝试推荐器,模式查找,关联规则挖掘(先验(算法等,这将对您有所帮助。

相关内容

  • 没有找到相关文章

最新更新