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

时间:2018-08-29 05:06:57

标签: python scikit-learn pattern-matching bigdata data-science

我有一个巨大的数据集,其中包含一些重复的数据(用户日志文件),并希望基于用户下载进行类似的模式出现识别和推荐。模式识别完成后,我需要向用户推荐最佳的价值。

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

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中的pandas进行数据清理,并且为了进行模式识别,我认为scikit-learn可能有效(尽管不确定)。 有什么好的库或算法可以解决这个问题,或者有什么好的方法可以解决此类问题?

由于数据量很大,因此我正在使用Python实现它。

1 个答案:

答案 0 :(得分:0)

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)\b\w\b",
                     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

但是我建议您尝试使用推荐器,模式查找,关联规则挖掘(apriori)算法等,这将为您带来更多帮助。