1.1 朴素贝叶斯简述

朴素贝叶斯算法(Naive Bayes, NB) 是应用最为广泛的分类算法之一。既可以用于二分类,也可以用于多分类。当年的垃圾邮件分类都是基于朴素贝叶斯分类器识别的。

朴素贝叶斯假设(又叫条件独立性假设):即,在给定y的条件下,属性之间相互独立。

假设目的:简化运算。

虽然这个简化方式在一定程度上降低了贝叶斯分类算法的分类效果,但是在实际的应用场景中,极大地简化了贝叶斯方法的复杂性。

1.2 概率基础复习


1.概率定义

  • 概率定义为一件事情发生的可能性

    • 扔出一个硬币,结果头像朝上
  • P(X) : 取值在[0, 1]

2.案例:判断女神对你的喜欢情况

在讲这两个概率之前我们通过一个例子,来计算一些结果:

问题如下:

  1. 女神喜欢的概率?
  2. 职业是程序员并且体型匀称的概率?
  3. 在女神喜欢的条件下,职业是程序员的概率?
  4. 在女神喜欢的条件下,职业是程序员、体重超重的概率?

计算结果为:

P(喜欢) = 4/7
P(程序员, 匀称) = 1/7(联合概率)
P(程序员|喜欢) = 2/4 = 1/2(条件概率)
P(程序员, 超重|喜欢) = 1/4

3.联合概率、条件概率与相互独立

  • 联合概率:包含多个条件,且所有条件同时成立的概率

    • 记作:P(A,B)
  • 条件概率:就是事件A在另外一个事件B已经发生条件下的发生概率
    • 记作:P(A|B)
  • 相互独立:如果P(A, B) = P(A)P(B),则称事件A与事件B相互独立。

4.贝叶斯公式

4.1 公式介绍

换个表达形式就会明朗很多,如下:

我们最终求的p(类别|特征)即可!就相当于完成了我们的任务。

根据朴素贝叶斯假设:p(特征/类别) = p(特征1/类别)* p(特征2/类别)… *p(特征n/类别)

4.2 例题分析

下面我先给出例子问题。

给定数据如下:

现在给我们的问题是,如果一对男女朋友,男生想女生求婚,男生的四个特点分别是不帅,性格不好,身高矮,不上进,请你判断一下女生是嫁还是不嫁?

这是一个典型的分类问题,转为数学问题就是比较p(嫁|(不帅、性格不好、身高矮、不上进))与p(不嫁|(不帅、性格不好、身高矮、不上进))的概率,谁的概率大,我就能给出嫁或者不嫁的答案!

这里我们联系到朴素贝叶斯公式:

我们需要求p(嫁|(不帅、性格不好、身高矮、不上进),这是我们不知道的,但是通过朴素贝叶斯公式可以转化为好求的三个量,p(不帅、性格不好、身高矮、不上进|嫁)、p(不帅、性格不好、身高矮、不上进)、p(嫁)(至于为什么能求,后面会讲,那么就太好了,将待求的量转化为其它可求的值,这就相当于解决了我们的问题!)

嫁的概率为:

p ( 嫁 / 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 ) = p ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 / 嫁 ) ∗ p ( 嫁 ) p ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 ) p(嫁/不帅、性格不好、身高矮、不上进)=\frac {p(不帅、性格不好、身高矮、不上进/嫁)*p(嫁)}{p(不帅、性格不好、身高矮、不上进)} p(嫁/不帅、性格不好、身高矮、不上进)=p(不帅、性格不好、身高矮、不上进)p(不帅、性格不好、身高矮、不上进/嫁)∗p(嫁)​

= p ( 不 帅 / 嫁 ) p ( 性 格 不 好 / 嫁 ) p ( 身 高 矮 / 嫁 ) p ( 不 上 进 / 嫁 ) ∗ p ( 嫁 ) p ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 ) \frac {p(不帅/嫁)p(性格不好/嫁)p(身高矮/嫁)p(不上进/嫁)*p(嫁)}{p(不帅、性格不好、身高矮、不上进)} p(不帅、性格不好、身高矮、不上进)p(不帅/嫁)p(性格不好/嫁)p(身高矮/嫁)p(不上进/嫁)∗p(嫁)​

不嫁的概率为:

p ( 不 嫁 / 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 ) = p ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 / 不 嫁 ) ∗ p ( 不 嫁 ) p ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 ) p(不嫁/不帅、性格不好、身高矮、不上进)=\frac {p(不帅、性格不好、身高矮、不上进/不嫁)*p(不嫁)}{p(不帅、性格不好、身高矮、不上进)} p(不嫁/不帅、性格不好、身高矮、不上进)=p(不帅、性格不好、身高矮、不上进)p(不帅、性格不好、身高矮、不上进/不嫁)∗p(不嫁)​

= p ( 不 帅 / 不 嫁 ) p ( 性 格 不 好 / 不 嫁 ) p ( 身 高 矮 / 不 嫁 ) p ( 不 上 进 / 不 嫁 ) ∗ p ( 不 嫁 ) p ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 ) \frac {p(不帅/不嫁)p(性格不好/不嫁)p(身高矮/不嫁)p(不上进/不嫁)*p(不嫁)}{p(不帅、性格不好、身高矮、不上进)} p(不帅、性格不好、身高矮、不上进)p(不帅/不嫁)p(性格不好/不嫁)p(身高矮/不嫁)p(不上进/不嫁)∗p(不嫁)​

我们发现分母相同:p(嫁)>p(不嫁),只需要分子大于就行

朴素贝叶斯算法的朴素一词解释

那么这三个量是如何求得?

是根据已知训练数据统计得来,下面详细给出该例子的求解过程。

回忆一下我们要求的公式如下:

那么我只要求得p(不帅、性格不好、身高矮、不上进|嫁)、p(嫁)即可,好的,下面我分别求出这几个概率,最后一比,就得到最终结果。

p(不帅、性格不好、身高矮、不上进|嫁) = p(不帅|嫁)*p(性格不好|嫁)*p(身高矮|嫁)*p(不上进|嫁),那么我就要分别统计后面几个概率,也就得到了左边的概率!

我们将上面公式整理一下如下:

p ( 嫁 / 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 ) = p ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 / 嫁 ) ∗ p ( 嫁 ) p ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 ) p(嫁/不帅、性格不好、身高矮、不上进)=\frac {p(不帅、性格不好、身高矮、不上进/嫁)*p(嫁)}{p(不帅、性格不好、身高矮、不上进)} p(嫁/不帅、性格不好、身高矮、不上进)=p(不帅、性格不好、身高矮、不上进)p(不帅、性格不好、身高矮、不上进/嫁)∗p(嫁)​

= p ( 不 帅 / 嫁 ) p ( 性 格 不 好 / 嫁 ) p ( 身 高 矮 / 嫁 ) p ( 不 上 进 / 嫁 ) ∗ p ( 嫁 ) p ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 ) \frac {p(不帅/嫁)p(性格不好/嫁)p(身高矮/嫁)p(不上进/嫁)*p(嫁)}{p(不帅、性格不好、身高矮、不上进)} p(不帅、性格不好、身高矮、不上进)p(不帅/嫁)p(性格不好/嫁)p(身高矮/嫁)p(不上进/嫁)∗p(嫁)​

下面我将一个一个的进行统计计算(在数据量很大的时候,根据中心极限定理,频率是等于概率的,这里只是一个例子,所以我就进行统计即可)。

p(嫁)=?

首先我们整理训练数据中,嫁的样本数如下:

则 p(嫁) = 6/12(总样本数) = 1/2

p(不帅|嫁)=?统计满足样本数如下:

则p(不帅|嫁) = 3/6 = 1/2

p(性格不好|嫁)= ?统计满足样本数如下:

**则p(性格不好|嫁)= 1/6
**

p(矮|嫁) = ?统计满足样本数如下:

则p(矮|嫁) = 1/6

p(不上进|嫁) = ?统计满足样本数如下:

则p(不上进|嫁) = 1/6

到这里,要求p(不帅、性格不好、身高矮、不上进|嫁)的所需项全部求出来了,下面我带入进去即可,

p ( 嫁 / 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 ) = p ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 / 嫁 ) ∗ p ( 嫁 ) p ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 ) p(嫁/不帅、性格不好、身高矮、不上进)=\frac {p(不帅、性格不好、身高矮、不上进/嫁)*p(嫁)}{p(不帅、性格不好、身高矮、不上进)} p(嫁/不帅、性格不好、身高矮、不上进)=p(不帅、性格不好、身高矮、不上进)p(不帅、性格不好、身高矮、不上进/嫁)∗p(嫁)​

= p ( 不 帅 / 嫁 ) p ( 性 格 不 好 / 嫁 ) p ( 身 高 矮 / 嫁 ) p ( 不 上 进 / 嫁 ) ∗ p ( 嫁 ) p ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 ) \frac {p(不帅/嫁)p(性格不好/嫁)p(身高矮/嫁)p(不上进/嫁)*p(嫁)}{p(不帅、性格不好、身高矮、不上进)} p(不帅、性格不好、身高矮、不上进)p(不帅/嫁)p(性格不好/嫁)p(身高矮/嫁)p(不上进/嫁)∗p(嫁)​

∝p(不帅、性格不好、身高矮、不上进|嫁)*p(嫁)

=p(不帅|嫁)* p(性格不好|嫁)*p(身高矮|嫁)*p(不上进|嫁)*p(嫁)
= 1/2*1/6*1/6*1/6*1/2 = 1/864

下面我们根据同样的方法来求p(不嫁|不帅,性格不好,身高矮,不上进),完全一样的做法,为了方便理解,我这里也走一遍帮助理解。首先公式如下:

p ( 不 嫁 / 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 ) = p ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 / 不 嫁 ) ∗ p ( 不 嫁 ) p ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 ) p(不嫁/不帅、性格不好、身高矮、不上进)=\frac {p(不帅、性格不好、身高矮、不上进/不嫁)*p(不嫁)}{p(不帅、性格不好、身高矮、不上进)} p(不嫁/不帅、性格不好、身高矮、不上进)=p(不帅、性格不好、身高矮、不上进)p(不帅、性格不好、身高矮、不上进/不嫁)∗p(不嫁)​

= p ( 不 帅 / 不 嫁 ) p ( 性 格 不 好 / 不 嫁 ) p ( 身 高 矮 / 不 嫁 ) p ( 不 上 进 / 不 嫁 ) ∗ p ( 不 嫁 ) p ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 ) \frac {p(不帅/不嫁)p(性格不好/不嫁)p(身高矮/不嫁)p(不上进/不嫁)*p(不嫁)}{p(不帅、性格不好、身高矮、不上进)} p(不帅、性格不好、身高矮、不上进)p(不帅/不嫁)p(性格不好/不嫁)p(身高矮/不嫁)p(不上进/不嫁)∗p(不嫁)​

下面我也一个一个来进行统计计算

p(不嫁)=?根据统计计算如下(红色为满足条件):

则p(不嫁)=6/12 = 1/2

p(不帅|不嫁) = ?统计满足条件的样本如下(红色为满足条件):

则p(不帅|不嫁) = 1/6

p(性格不好|不嫁) = ?据统计计算如下(红色为满足条件):

则p(性格不好|不嫁) =3/6 = 1/2

p(矮|不嫁) = ?据统计计算如下(红色为满足条件):

则p(矮|不嫁) = 6/6 = 1

p(不上进|不嫁) = ?据统计计算如下(红色为满足条件):

则p(不上进|不嫁) = 3/6 = 1/2

那么根据公式:

p ( 不 嫁 / 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 ) = p ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 / 不 嫁 ) ∗ p ( 不 嫁 ) p ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 ) p(不嫁/不帅、性格不好、身高矮、不上进)=\frac {p(不帅、性格不好、身高矮、不上进/不嫁)*p(不嫁)}{p(不帅、性格不好、身高矮、不上进)} p(不嫁/不帅、性格不好、身高矮、不上进)=p(不帅、性格不好、身高矮、不上进)p(不帅、性格不好、身高矮、不上进/不嫁)∗p(不嫁)​

= p ( 不 帅 / 不 嫁 ) p ( 性 格 不 好 / 不 嫁 ) p ( 身 高 矮 / 不 嫁 ) p ( 不 上 进 / 不 嫁 ) ∗ p ( 不 嫁 ) p ( 不 帅 、 性 格 不 好 、 身 高 矮 、 不 上 进 ) \frac {p(不帅/不嫁)p(性格不好/不嫁)p(身高矮/不嫁)p(不上进/不嫁)*p(不嫁)}{p(不帅、性格不好、身高矮、不上进)} p(不帅、性格不好、身高矮、不上进)p(不帅/不嫁)p(性格不好/不嫁)p(身高矮/不嫁)p(不上进/不嫁)∗p(不嫁)​

∝p(不帅、性格不好、身高矮、不上进|不嫁)*p(不嫁)

=p(不帅|不嫁)* p(性格不好|不嫁)*p(身高矮|不嫁)*p(不上进|不嫁)*p(不嫁)
= 1/6*1/2*1*1/2*1/2 = 1/48

很显然1/48> 1/864

于是有p (不嫁|不帅、性格不好、身高矮、不上进)>p (嫁|不帅、性格不好、身高矮、不上进)

所以我们根据朴素贝叶斯算法可以给这个女生答案,是不嫁!!!!

4.3 文章分类计算

需求:通过前四个训练样本(文章),判断第五篇文章,是否属于China类

  • 计算结果
P(C|Chinese, Chinese, Chinese, Tokyo, Japan) -->
P(Chinese, Chinese, Chinese, Tokyo, Japan|C) * P(C) / P(Chinese, Chinese, Chinese, Tokyo, Japan)
∝
P(Chinese|C)^3 * P(Tokyo|C) * P(Japan|C) * P(C) # 分母值都相同不用计算:# 首先计算是China类的概率:
P(Chinese|C=china) = 5/8
P(Tokyo|C) = 0/8
P(Japan|C) = 0/8# 接着计算不是China类的概率:
P(Chinese|C) = 1/3
P(Tokyo|C) = 1/3
P(Japan|C) = 1/3

在这个例子中,m为6,即训练集中总共有6个不同的词。把这6个词作为词表,如果测试集中有词不在词表中,不计算。(如果有词出现在测试集,但是不在词表中,我们忽略这个词)

# 这个文章是需要计算是不是China类:首先计算是China类的概率:  P(Chinese|C) = 5/8 --> 6/14P(Tokyo|C) = 0/8 --> 1/14P(Japan|C) = 0/8 --> 1/14接着计算不是China类的概率: P(Chinese|C) = 1/3 -->(经过拉普拉斯平滑系数处理) 2/9P(Tokyo|C) = 1/3 --> 2/9P(Japan|C) = 1/3 --> 2/9

1.2 案例:商品评论情感分析

学习目标

  • 应用朴素贝叶斯API实现商品评论情感分析

1.api介绍

  • sklearn.naive_bayes.MultinomialNB(alpha = 1.0)

    • 朴素贝叶斯分类
    • alpha:拉普拉斯平滑系数

2.商品评论情感分析

2.1 步骤分析

  • 1)获取数据
  • 2)数据基本处理
    • 2.1) 取出内容列,对数据进行分析
    • 2.2) 判定评判标准
    • 2.3) 选择停用词
    • 2.4) 把内容处理,转化成标准格式
    • 2.5) 统计词的个数
    • 2.6)准备训练集和测试集
  • 3)模型训练
  • 4)模型评估

2.2 代码实现

import pandas as pd
import numpy as np
import jieba
import matplotlib.pyplot as plt
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
  • 1)获取数据
# 加载数据
data = pd.read_csv("./data/书籍评价.csv", encoding="gbk",index_col=0)
data
  • 2)数据基本处理
# 2.1) 取出内容列,对数据进行分析
content = data["内容"]
content.head()# 2.2) 判定评判标准 -- 1好评;0差评
data.loc[data.loc[:, '评价'] == "好评", "评论标号"] = 1  # 把好评修改为1
data.loc[data.loc[:, '评价'] == '差评', '评论标号'] = 0# data.head()# 2.3) 选择停用词
# 加载停用词
stopwords=[]
with open('./data/stopwords.txt','r',encoding='utf-8') as f:lines=f.readlines()print(lines)for tmp in lines:line=tmp.strip()print(line)stopwords.append(line)
# stopwords  # 查看新产生列表#对停用词表进行去重
stopwords=list(set(stopwords))#去重  列表形式
print(stopwords)# 2.4) 把“内容”处理,转化成标准格式
comment_list = []
for tmp in content:print(tmp)# 对文本数据进行切割# cut_all 参数默认为 False,所有使用 cut 方法时默认为精确模式seg_list = jieba.lcut(tmp)print(seg_list)  seg_str = ' '.join(i for i in seg_list if i !=' ')  # 拼接字符串print(seg_str)comment_list.append(seg_str)  # 目的是转化成列表形式
# print(comment_list)  # 查看comment_list列表。# 2.5) 统计词的个数
# 进行统计词个数
# 实例化对象
# CountVectorizer 类会将文本中的词语转换为词频矩阵
con = CountVectorizer(stop_words=stopwords)#只统计两个词及以上的频率
# 进行词数统计
X = con.fit_transform(comment_list)  # 它通过 fit_transform 函数计算各个词语出现的次数
name = con.get_feature_names()  # 通过 get_feature_names()可获取词袋中所有文本的关键字
print(X.toarray())  # 通过 toarray()可看到词频矩阵的结果
print(name)# 2.6)准备训练集和测试集
# 准备训练集   这里将文本前10行当做训练集  后3行当做测试集
labels = data['评论标号'].values
x_train = X.toarray()[:10, :]
y_train = labels[:10]
# 准备测试集
x_text = X.toarray()[10:, :]
y_text = labels[10:]
  • 3)模型训练
# 构建贝叶斯算法分类器
mb = MultinomialNB(alpha = 1.0)  # alpha 为可选项,默认 1.0,添加拉普拉修/Lidstone 平滑参数
# 训练数据
mb.fit(x_train, y_train)
# 预测数据
y_predict = mb.predict(x_text)
#预测值与真实值展示
print('预测值:',y_predict)
print('真实值:',y_text)
  • 4)模型评估
mb.score(x_text, y_text)

测试集
labels = data[‘评论标号’].values
x_train = X.toarray()[:10, :]
y_train = labels[:10]

准备测试集

x_text = X.toarray()[10:, :]
y_text = labels[10:]


- 3)模型训练```python
# 构建贝叶斯算法分类器
mb = MultinomialNB(alpha = 1.0)  # alpha 为可选项,默认 1.0,添加拉普拉修/Lidstone 平滑参数
# 训练数据
mb.fit(x_train, y_train)
# 预测数据
y_predict = mb.predict(x_text)
#预测值与真实值展示
print('预测值:',y_predict)
print('真实值:',y_text)
  • 4)模型评估
mb.score(x_text, y_text)

朴素贝叶斯算法(1)相关推荐

  1. 机器学习(8)朴素贝叶斯算法(20条新闻分类)

    目录 一.基础理论 二.实战:20条新闻分类 1.读取数据 2.训练集划分 3.特征工程(文本特征提取) 4.朴素贝叶斯算法训练 5.模型评估 方法一:预测值与真实值比对 方法二:计算准确率 总代码 ...

  2. 【机器学习入门】(3) 朴素贝叶斯算法:多项式、高斯、伯努利,实例应用(心脏病预测)附python完整代码及数据集

    各位同学好,今天我和大家分享一下朴素贝叶斯算法中的三大模型.在上一篇文章中,我介绍了朴素贝叶斯算法的原理,并利用多项式模型进行了文本分类预测. 朴素贝叶斯算法 -- 原理,多项式模型文档分类预测,附p ...

  3. 【机器学习入门】(2) 朴素贝叶斯算法:原理、实例应用(文档分类预测)附python完整代码及数据集

    各位同学好,今天我向大家介绍python机器学习中的朴素贝叶斯算法.内容有:算法的基本原理:案例实战--新闻文档的分类预测. 案例简介:新闻数据有20个主题,有10万多篇文章,每篇文章对应不同的主题, ...

  4. 朴素贝叶斯算法的python实现

    朴素贝叶斯 算法优缺点 优点:在数据较少的情况下依然有效,可以处理多类别问题 缺点:对输入数据的准备方式敏感 适用数据类型:标称型数据 算法思想: 朴素贝叶斯 比如我们想判断一个邮件是不是垃圾邮件,那 ...

  5. 文本分类的基本思想和朴素贝叶斯算法原理

    文本分类的基本思想和朴素贝叶斯算法原理

  6. 机器学习算法基础——朴素贝叶斯算法

    26.朴素贝叶斯算法原理 联合概率和条件概率 联合概率:包含多个条件,且所有条件同时成立的概率 记作:P(A,B) P(A,B)=P(A)P(B) 条件概率:就是事件A在另外一个事件B已经发生条件下的 ...

  7. ML之NB:利用NB朴素贝叶斯算法(CountVectorizer/TfidfVectorizer+去除停用词)进行分类预测、评估

    ML之NB:利用NB朴素贝叶斯算法(CountVectorizer/TfidfVectorizer+去除停用词)进行分类预测.评估 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 c ...

  8. ML之NB:基于NB朴素贝叶斯算法训练20类新闻文本数据集进行多分类预测

    ML之NB:基于NB朴素贝叶斯算法训练20类新闻文本数据集进行多分类预测 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 vec = CountVectorizer() X_trai ...

  9. ML之NB:(NLP)基于sklearn库利用不同语种数据集训练NB(朴素贝叶斯)算法,对新语种进行语种检测

    ML之NB:(NLP)基于sklearn库利用不同语种数据集训练NB(朴素贝叶斯)算法,对新语种进行语种检测 目录 输出结果 训练数据集 设计思路 核心代码 输出结果 测试01:I love you ...

  10. Python实现朴素贝叶斯算法

    Python实现朴素贝叶斯算法 1.算法介绍 朴素贝叶斯假设特征相互独立,于是有下面的公式: x表示特征向量,c表示类别. 原理: 通过数据集计算出公式中右边分子中的各个概率.预测时根据公式计算出该样 ...

最新文章

  1. Pycharm回退操作+常用批量操作
  2. 全国计算机等级考试c语言程序设计真题,历年全国计算机等级考试二级C语言笔试选择真题...
  3. 2.数据库的基本操作针对于库层面的操作
  4. java在td中怎么用if_不在Java中使用if语句
  5. 【深度学习】有个洋人小哥把整个 CNN 都给可视化了,卷积、池化清清楚楚!...
  6. java.util.concurrent 编程范例
  7. 算法入门篇 一 时间复杂度
  8. Python进制转换(利用栈)
  9. 《51单片机应用开发从入门到精通》——2.8 用外部中断控制灯闪烁
  10. 色彩的对比度和饱和度_使用高色彩对比度进行更方便的设计
  11. win10装鸿蒙双系统,win10下能装双系统教程
  12. Python 2与Python 3对H5牌九棋牌搭建的区别
  13. Ubuntu20.04使用FreeRADIUS搭建EAP认证环境
  14. 求助,DatabaseError: (cx_Oracle.DatabaseError) ORA-00904: xiaoli: 标识符无效
  15. 记录安装Ubuntu16.04后必须要做的事,杂篇
  16. python内建方法
  17. Springsecurity+cas整合后无法单点登出
  18. 电子商务网站建设策划书_竞赛解析 | 全国大学生电子商务“创新、创意及创业”挑战赛...
  19. 文献阅读-10X单细胞揭示肿瘤浸润性T细胞的泛癌单细胞图谱
  20. 恶搞神器:蓝屏模拟器(C++)

热门文章

  1. android在线视频播放器源码,请问谁有Android视频播放器简单源码
  2. 虚拟内存是什么?它有什么用?又该如何设置呢?
  3. Flink-有界流与无界流
  4. PVE-LXC容器启动ubuntu\debian 黑屏,切换控制台A start job is running for Raise network interface(5min 1s)
  5. Outlook 2003 的桌面提醒(Desktop Alerts)功能
  6. 魔兽盗号样本bigfoot2分析
  7. MySQL学习笔记(一) 下载安装+基本增删改查 + 事务
  8. 《音乐达人秀:Adobe Audition实战200例》——实例2 用麦克风录制清唱歌声
  9. 一文学会Scrapy-redis分布式爬虫项目,初级工程师与中级工程师分水岭之一
  10. 提前祝大家中秋节快乐!