几个算法使用的实例 -垃圾短信,音乐推荐

朴素贝叶斯算法
基于黑名单的过滤器:
号码量少于50万,黑号码名单维护成一个散列表。
如果有500万个号码呢?
方案1:布隆过滤器 5000万bits,
方案2:黑名单存储在服务器,所有判断都通过网络请求判断

基于规则的过滤器,规则如下:
1) 特殊词,反动 淫秽
2) 群发号码,非正常号码
3) 短信中汉语微信 qq等

可以基于概率统计的方法,借助计算机强大的计算能力,找出哪些单词最常出现在垃圾短信中,将这些最常出现的单词,作为特殊单词,用来过滤短信。
假设有样本有100万个, 神经病 出现在100个样本中,其中90个都是垃圾短信,那基本可以确定神经病就是敏感词。


基于概率统计的过滤器:
机器不能像人一样明白短信的意思,但是可以将短信分词;分词之后:获取样本与是否是垃圾短信的概率
p1(是垃圾短信|w1,w2,w3...wn同时出现在短信中) = p(是垃圾短信|w1出现在短信内中)*...*p(是垃圾短信|wn出现在短信内中)
p2(是垃圾短信|w1,w2,w3...wn同时出现在短信中)

如果p1远大于p2(如p1=10*p2),则可以判定为垃圾短信


音乐推荐系统核心
1)找到跟你口味偏好相似的用户,把他们爱听的歌曲推荐给你
2)找出跟你喜欢的歌曲特征相似的歌曲,把这些歌曲推荐给你

怎么定义口味偏好相似的用户?
假设你喜欢的有10首,小明有8首,其中有6首是一样的,那就是相似用户。
怎么定义喜欢一首歌:
按照行为计分,大于8分为喜欢:单曲循环 +5  分享+4 收藏+3 搜索+2 听完+1 没听过0 跳过-1
或:
假设如下图:
此时可以用欧几里得距离来表示相似度,距离越小,口味月一致。


怎么定义相似特征的歌曲?
这里可以过来用人群来评判

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的贝叶斯算法实例假设你有一个分类问题,你需要将一些文本数据分成两类:垃圾邮件和非垃圾邮件。你已经有一个包含已标记的训练数据集,其中每个文本都已经被标记为垃圾邮件或非垃圾邮件。你希望使用这些训练数据来构建一个分类器,以便在未标记的文本数据上进行分类。 首先,你需要计算每个单词在垃圾邮件和非垃圾邮件中出现的概率。这可以通过以下公式来计算: P(word|spam) = (number of times word appears in spam emails) / (total number of words in spam emails) P(word|non-spam) = (number of times word appears in non-spam emails) / (total number of words in non-spam emails) 接下来,你需要计算每个类别的先验概率: P(spam) = (number of spam emails) / (total number of emails) P(non-spam) = (number of non-spam emails) / (total number of emails) 现在你已经有了所有必要的信息,可以使用贝叶斯定理来计算一个文本属于垃圾邮件或非垃圾邮件的后验概率。具体来说,你需要计算以下两个概率: P(spam|text) = P(spam) * P(word1|spam) * P(word2|spam) * ... * P(wordn|spam) P(non-spam|text) = P(non-spam) * P(word1|non-spam) * P(word2|non-spam) * ... * P(wordn|non-spam) 其中,text 是待分类的文本,word1、word2 等是文本中出现的单词。最终,你将文本分类为后验概率较大的类别。 这是一个简单的贝叶斯算法实例,你可以使用 Python 的 scikit-learn 库来实现。具体代码如下: ```python from sklearn.naive_bayes import MultinomialNB from sklearn.feature_extraction.text import CountVectorizer # 假设你已经有了训练数据集 X_train 和 y_train # X_train 是一个列表,每个元素是一个文本字符串 # y_train 是一个列表,每个元素是 0(非垃圾邮件)或 1(垃圾邮件) # 将文本转换为词频向量 vectorizer = CountVectorizer() X_train_counts = vectorizer.fit_transform(X_train) # 训练贝叶斯分类器 clf = MultinomialNB() clf.fit(X_train_counts, y_train) # 假设你有了待分类的文本 X_test # 将文本转换为词频向量 X_test_counts = vectorizer.transform(X_test) # 预测文本的类别 y_pred = clf.predict(X_test_counts) ``` 这段代码做了以下几件事情: 1. 使用 CountVectorizer 将文本转换为词频向量,CountVectorizer 会统计每个单词在每个文本中出现的次数。 2. 使用 MultinomialNB 训练一个贝叶斯分类器,MultinomialNB 假设每个特征(即每个单词)是独立的,并且每个特征的概率分布是多项式分布。 3. 使用训练好的分类器预测测试数据集的类别。 希望这个例子能对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值