机器学习-04-分类算法-02贝叶斯算法案例

server/2025/3/25 23:02:05/

总结

本系列是机器学习课程的系列课程,主要介绍机器学习分类算法,本篇为分类算法与贝叶斯算法部分。

本门课程的目标

完成一个特定行业的算法应用全过程:

懂业务+会选择合适的算法+数据处理+算法训练+算法调优+算法融合
+算法评估+持续调优+工程化接口实现

参考

贝叶斯定理厉害在哪里?-猴子

机器学习最易懂之贝叶斯模型详解与python实现

机器学习之朴素贝叶斯算法原理+Python实现

图解机器学习 | 朴素贝叶斯算法详解

图解机器学习算法:从入门到精通系列教程

简单,却又反直觉的“三门问题”,暴露出很多人根本不懂“概率”

大数据中的统计学基础——Day3

【ML】朴素贝叶斯分类器及Python手写实现(详细)

机器学习定义

关于机器学习的定义,Tom Michael Mitchell的这段话被广泛引用:
对于某类任务T性能度量P,如果一个计算机程序在T上其性能P随着经验E而自我完善,那么我们称这个计算机程序从经验E中学习
在这里插入图片描述

贝叶斯算法

贝叶斯公式

在这里插入图片描述

在这里插入图片描述

贝叶斯案例

不使用sklearn-西瓜集3.0

数据集:西瓜集3.0(来自西瓜书《机器学习 周志华》84页)
在这里插入图片描述

数据集的推导过程

数据集:
在这里插入图片描述

待测集:
在这里插入图片描述

(1)计算先验概率:
在这里插入图片描述

(2)计算每个属性的条件概率:

a、离散属性:
在这里插入图片描述

b、连续属性:
在这里插入图片描述

(3)计算后验概率:
在这里插入图片描述

因为0.038>6.80*10­^(-5),所以朴素贝叶斯分类器将待测样本判别为“好瓜”。

实现过程

(1)加载第三方模块

import numpy as np
import math
import pandas as pd

(2) 定义加载数据集函数

def loadDataSet():dataSet=[['青绿', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', 0.697, 0.460, '好瓜'],['乌黑', '蜷缩', '沉闷', '清晰', '凹陷', '硬滑', 0.774, 0.376, '好瓜'],['乌黑', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', 0.634, 0.264, '好瓜'],['青绿', '蜷缩', '沉闷', '清晰', '凹陷', '硬滑', 0.608, 0.318, '好瓜'],['浅白', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', 0.556, 0.215, '好瓜'],            ['青绿', '稍蜷', '浊响', '清晰', '稍凹', '软粘', 0.403, 0.237, '好瓜'],               ['乌黑', '稍蜷', '浊响', '稍糊', '稍凹', '软粘', 0.481, 0.149, '好瓜'],                ['乌黑', '稍蜷', '浊响', '清晰', '稍凹', '硬滑', 0.437, 0.211, '好瓜'],['乌黑', '稍蜷', '沉闷', '稍糊', '稍凹', '硬滑', 0.666, 0.091, '坏瓜'],['青绿', '硬挺', '清脆', '清晰', '平坦', '软粘', 0.243, 0.267, '坏瓜'],['浅白', '硬挺', '清脆', '模糊', '平坦', '硬滑', 0.245, 0.057, '坏瓜'],['浅白', '蜷缩', '浊响', '模糊', '平坦', '软粘', 0.343, 0.099, '坏瓜'],['青绿', '稍蜷', '浊响', '稍糊', '凹陷', '硬滑', 0.639, 0.161, '坏瓜'],  ['浅白', '稍蜷', '沉闷', '稍糊', '凹陷', '硬滑', 0.657, 0.198, '坏瓜'],['乌黑', '稍蜷', '浊响', '清晰', '稍凹', '软粘', 0.360, 0.370, '坏瓜'],['浅白', '蜷缩', '浊响', '模糊', '平坦', '硬滑', 0.593, 0.042, '坏瓜'],['青绿', '蜷缩', '沉闷', '稍糊', '稍凹', '硬滑', 0.719, 0.103, '坏瓜']]testSet= ['青绿', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', 0.697, 0.460] # 待测集labels = ['色泽', '根蒂', '敲声', '纹理', '脐部', '触感', '密度', '含糖率'] # 特征return dataSet, testSet, labels

dataSet:训练集;
testSet:待测集;
labels:样本所具有的特征的名称;

(3)计算连续属性的均值和标准差

#? 计算(不同类别中指定连续特征的)均值、标准差
def mean_std(feature, cla):dataSet, testSet, labels = loadDataSet()lst = [item[labels.index(feature)] for item in dataSet if item[-1]==cla]    # 类别为cla中指定特征feature组成的列表mean = round(np.mean(lst), 3)   # 均值std = round(np.std(lst), 3)     # 标准差return mean, std

feature:传入指定将要计算其均值的标准差的特征名称;
cla:传入条件概率的条件,计算指定分类cla下该特征的条件概率;
函数返回计算结果:均值mean、标准差std;

(4)计算先验概率

#? 计算先验概率P(c)
def prior():dataSet = loadDataSet()[0]  # 载入数据集countG = 0  # 初始化好瓜数量countB = 0  # 初始化坏瓜数量countAll = len(dataSet)for item in dataSet:    # 统计好瓜个数if item[-1] == "好瓜":countG += 1for item in dataSet:    # 统计坏瓜个数if item[-1] == "坏瓜":countB += 1# 计算先验概率P(c)P_G = round(countG/countAll, 3)P_B = round(countB/countAll, 3)return P_G,P_B

countG:统计训练集中好瓜的数量;
countB:统计训练集中坏瓜的数量;
countAll:训练集中所有样本的数量;
P_G:好瓜的先验概率;
P_B:坏瓜的先验概率;
函数返回计算出的先验概率P_G、P_B;

(5)计算离散属性的条件概率

#? 计算离散属性的条件概率P(xi|c)
def P(index, cla):dataSet, testSet, labels = loadDataSet()    # 载入数据集countG = 0  # 初始化好瓜数量countB = 0  # 初始化坏瓜数量for item in dataSet:    # 统计好瓜个数if item[-1] == "好瓜":countG += 1for item in dataSet:    # 统计坏瓜个数if item[-1] == "坏瓜":countB += 1lst = [item for item in dataSet if (item[-1] == cla) & (item[index] == testSet[index])] # lst为cla类中第index个属性上取值为xi的样本组成的集合P = round(len(lst)/(countG if cla=="好瓜" else countB), 3)  # 计算条件概率return P

index:用于根据待测集样本中特征值的索引位置在训练集中样本的对应索引位置上进行遍历;
cla:用于在训练集中限定样本的类别,便于计算离散属性各特征的条件概率;
countG:统计训练集中好瓜的数量;
countB:统计训练集中坏瓜的数量;
lst:为cla类别中第index个属性上取值为xi的样本组成的集合;
P:离散属性的条件概率;
函数返回计算出的条件概率P;

(6)计算连续属性的条件概率

#? 计算连续属性的条件概率p(xi|c)
def p():dataSet, testSet, labels = loadDataSet()    # 载入数据集denG_mean, denG_std = mean_std("密度", "好瓜")      # 好瓜密度的均值、标准差denB_mean, denB_std = mean_std("密度", "坏瓜")      # 坏瓜密度的均值、标准差sugG_mean, sugG_std = mean_std("含糖率", "好瓜")    # 好瓜含糖率的均值、标准差sugB_mean, sugB_std = mean_std("含糖率", "坏瓜")    # 坏瓜含糖率的均值、标准差# p(密度|好瓜)p_density_G = (1/(math.sqrt(2*math.pi)*denG_std))*np.exp(-(((testSet[labels.index("密度")]-denG_mean)**2)/(2*(denG_std**2))))p_density_G = round(p_density_G, 3)# p(密度|坏瓜)p_density_B = (1/(math.sqrt(2*math.pi)*denB_std))*np.exp(-(((testSet[labels.index("密度")]-denB_mean)**2)/(2*(denB_std**2))))p_density_B = round(p_density_B, 3)# p(含糖率|好瓜)p_sugar_G = (1/(math.sqrt(2*math.pi)*sugG_std))*np.exp(-(((testSet[labels.index("含糖率")]-sugG_mean)**2)/(2*(sugG_std**2))))p_sugar_G = round(p_sugar_G, 3)# p(含糖率|坏瓜)p_sugar_B = (1/(math.sqrt(2*math.pi)*sugB_std))*np.exp(-(((testSet[labels.index("含糖率")]-sugB_mean)**2)/(2*(sugB_std**2))))p_sugar_B = round(p_sugar_B, 3)return p_density_G, p_density_B, p_sugar_G, p_sugar_B

denG_mean:好瓜密度的均值;
denG_std:好瓜密度的标准差;
denB_mean:坏瓜密度的均值;
denB_std:坏瓜密度的标准差;
sugG_mean:好瓜含糖率的均值;
sugG_std:好瓜含糖率的标准差;
sugB_mean:坏瓜含糖率的均值;
sugB_std:坏瓜含糖率的标准差;
p_density_G:好瓜条件下对于密度这一特征的条件概率;
p_density_B:坏瓜条件下对于密度这一特征的条件概率;
p_sugar_G:好瓜条件下对于含糖率这一特征的条件概率;
p_sugar_B:坏瓜条件下对于含糖率这一特征的条件概率;
函数返回连续属性的条件概率;

(7)计算后验概率

#? 预测后验概率P(c|xi)
def bayes():#? 计算类先验概率P_G, P_B = prior()#? 计算离散属性的条件概率P0_G = P(0, "好瓜") # P(青绿|好瓜)P0_B = P(0, "坏瓜") # P(青绿|坏瓜)P1_G = P(1, "好瓜") # P(蜷缩|好瓜)P1_B = P(1, "坏瓜") # P(蜷缩|好瓜)P2_G = P(2, "好瓜") # P(浊响|好瓜)P2_B = P(2, "坏瓜") # P(浊响|好瓜)P3_G = P(3, "好瓜") # P(清晰|好瓜)P3_B = P(3, "坏瓜") # P(清晰|好瓜)P4_G = P(4, "好瓜") # P(凹陷|好瓜)P4_B = P(4, "坏瓜") # P(凹陷|好瓜)P5_G = P(5, "好瓜") # P(硬滑|好瓜)P5_B = P(5, "坏瓜") # P(硬滑|好瓜)#? 计算连续属性的条件概率p_density_G, p_density_B, p_sugar_G, p_sugar_B = p()#? 计算后验概率isGood = P_G * P0_G * P1_G * P2_G * P3_G * P4_G * P5_G * p_density_G * p_sugar_G    # 计算是好瓜的后验概率isBad = P_B * P0_B * P1_B * P2_B * P3_B * P4_B * P5_B * p_density_B * p_sugar_B     # 计算是坏瓜的后验概率return isGood,isBad

调用prior()函数计算先验概率;
调用P()函数计算离散属性的条件概率;
调用p()函数计算连续属性的条件概率;
isGood:好瓜的后验概率;
isBad:坏瓜的后验概率;
函数返回后验概率的计算结果isGood、isBad;

(8)主函数调用上述函数模块

if __name__=='__main__':dataSet, testSet, labels = loadDataSet()testSet = [testSet]df = pd.DataFrame(testSet, columns=labels, index=[1])print("=======================待测样本========================")print(f"待测集:\n{df}")isGood, isBad = bayes()print("=======================后验概率========================")print("后验概率:")print(f"P(好瓜|xi) = {isGood}")print(f"P(好瓜|xi) = {isBad}")print("=======================预测结果========================")print("predict ---> 好瓜" if (isGood > isBad) else "predict ---> 坏瓜")

输出为:
在这里插入图片描述
从上图的终端输出结果可以看到待测样本的各个属性值,然后可以看到后验概率的计算结果,最后是预测结果,此样本的预测结果为“好瓜”。

此训练集与待测样本是“朴素贝叶斯西瓜集分类案例”的数据,通过比较最终的两个预测结果一致,也可表明朴素贝叶斯分类器编写代码基本正确。

完整代码
#! 朴素贝叶斯分类器_西瓜集分类
import numpy as np
import math
import pandas as pd#? 加载数据集
def loadDataSet():dataSet=[['青绿', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', 0.697, 0.460, '好瓜'],['乌黑', '蜷缩', '沉闷', '清晰', '凹陷', '硬滑', 0.774, 0.376, '好瓜'],['乌黑', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', 0.634, 0.264, '好瓜'],['青绿', '蜷缩', '沉闷', '清晰', '凹陷', '硬滑', 0.608, 0.318, '好瓜'],['浅白', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', 0.556, 0.215, '好瓜'],            ['青绿', '稍蜷', '浊响', '清晰', '稍凹', '软粘', 0.403, 0.237, '好瓜'],               ['乌黑', '稍蜷', '浊响', '稍糊', '稍凹', '软粘', 0.481, 0.149, '好瓜'],                ['乌黑', '稍蜷', '浊响', '清晰', '稍凹', '硬滑', 0.437, 0.211, '好瓜'],['乌黑', '稍蜷', '沉闷', '稍糊', '稍凹', '硬滑', 0.666, 0.091, '坏瓜'],['青绿', '硬挺', '清脆', '清晰', '平坦', '软粘', 0.243, 0.267, '坏瓜'],['浅白', '硬挺', '清脆', '模糊', '平坦', '硬滑', 0.245, 0.057, '坏瓜'],['浅白', '蜷缩', '浊响', '模糊', '平坦', '软粘', 0.343, 0.099, '坏瓜'],['青绿', '稍蜷', '浊响', '稍糊', '凹陷', '硬滑', 0.639, 0.161, '坏瓜'],  ['浅白', '稍蜷', '沉闷', '稍糊', '凹陷', '硬滑', 0.657, 0.198, '坏瓜'],['乌黑', '稍蜷', '浊响', '清晰', '稍凹', '软粘', 0.360, 0.370, '坏瓜'],['浅白', '蜷缩', '浊响', '模糊', '平坦', '硬滑', 0.593, 0.042, '坏瓜'],['青绿', '蜷缩', '沉闷', '稍糊', '稍凹', '硬滑', 0.719, 0.103, '坏瓜']]testSet= ['青绿', '蜷缩', '浊响', '清晰', '凹陷', '硬滑', 0.697, 0.460] # 待测集labels = ['色泽', '根蒂', '敲声', '纹理', '脐部', '触感', '密度', '含糖率'] # 特征return dataSet, testSet, labels#? 计算(不同类别中指定连续特征的)均值、标准差
def mean_std(feature, cla):dataSet, testSet, labels = loadDataSet()# 类别为cla中指定特征feature组成的列表lst = [item[labels.index(feature)] for item in dataSet if item[-1]==cla]    mean = round(np.mean(lst), 3)   # 均值std = round(np.std(lst), 3)     # 标准差return mean, std#? 计算先验概率P(c)
def prior():dataSet = loadDataSet()[0]  # 载入数据集countG = 0  # 初始化好瓜数量countB = 0  # 初始化坏瓜数量countAll = len(dataSet)for item in dataSet:    # 统计好瓜个数if item[-1] == "好瓜":countG += 1for item in dataSet:    # 统计坏瓜个数if item[-1] == "坏瓜":countB += 1# 计算先验概率P(c)P_G = round(countG/countAll, 3)P_B = round(countB/countAll, 3)return P_G,P_B#? 计算离散属性的条件概率P(xi|c)
def P(index, cla):dataSet, testSet, labels = loadDataSet()    # 载入数据集countG = 0  # 初始化好瓜数量countB = 0  # 初始化坏瓜数量for item in dataSet:    # 统计好瓜个数if item[-1] == "好瓜":countG += 1for item in dataSet:    # 统计坏瓜个数if item[-1] == "坏瓜":countB += 1lst = [item for item in dataSet if (item[-1] == cla) & (item[index] == testSet[index])] # lst为cla类中第index个属性上取值为xi的样本组成的集合P = round(len(lst)/(countG if cla=="好瓜" else countB), 3)  # 计算条件概率return P#? 计算连续属性的条件概率p(xi|c)
def p():dataSet, testSet, labels = loadDataSet()    # 载入数据集denG_mean, denG_std = mean_std("密度", "好瓜")      # 好瓜密度的均值、标准差denB_mean, denB_std = mean_std("密度", "坏瓜")      # 坏瓜密度的均值、标准差sugG_mean, sugG_std = mean_std("含糖率", "好瓜")    # 好瓜含糖率的均值、标准差sugB_mean, sugB_std = mean_std("含糖率", "坏瓜")    # 坏瓜含糖率的均值、标准差# p(密度|好瓜)p_density_G = (1/(math.sqrt(2*math.pi)*denG_std))*np.exp(-(((testSet[labels.index("密度")]-denG_mean)**2)/(2*(denG_std**2))))p_density_G = round(p_density_G, 3)# p(密度|坏瓜)p_density_B = (1/(math.sqrt(2*math.pi)*denB_std))*np.exp(-(((testSet[labels.index("密度")]-denB_mean)**2)/(2*(denB_std**2))))p_density_B = round(p_density_B, 3)# p(含糖率|好瓜)p_sugar_G = (1/(math.sqrt(2*math.pi)*sugG_std))*np.exp(-(((testSet[labels.index("含糖率")]-sugG_mean)**2)/(2*(sugG_std**2))))p_sugar_G = round(p_sugar_G, 3)# p(含糖率|坏瓜)p_sugar_B = (1/(math.sqrt(2*math.pi)*sugB_std))*np.exp(-(((testSet[labels.index("含糖率")]-sugB_mean)**2)/(2*(sugB_std**2))))p_sugar_B = round(p_sugar_B, 3)return p_density_G, p_density_B, p_sugar_G, p_sugar_B#? 预测后验概率P(c|xi)
def bayes():#? 计算类先验概率P_G, P_B = prior()#? 计算离散属性的条件概率P0_G = P(0, "好瓜") # P(青绿|好瓜)P0_B = P(0, "坏瓜") # P(青绿|坏瓜)P1_G = P(1, "好瓜") # P(蜷缩|好瓜)P1_B = P(1, "坏瓜") # P(蜷缩|好瓜)P2_G = P(2, "好瓜") # P(浊响|好瓜)P2_B = P(2, "坏瓜") # P(浊响|好瓜)P3_G = P(3, "好瓜") # P(清晰|好瓜)P3_B = P(3, "坏瓜") # P(清晰|好瓜)P4_G = P(4, "好瓜") # P(凹陷|好瓜)P4_B = P(4, "坏瓜") # P(凹陷|好瓜)P5_G = P(5, "好瓜") # P(硬滑|好瓜)P5_B = P(5, "坏瓜") # P(硬滑|好瓜)#? 计算连续属性的条件概率p_density_G, p_density_B, p_sugar_G, p_sugar_B = p()#? 计算后验概率isGood = P_G * P0_G * P1_G * P2_G * P3_G * P4_G * P5_G * p_density_G * p_sugar_G    # 计算是好瓜的后验概率isBad = P_B * P0_B * P1_B * P2_B * P3_B * P4_B * P5_B * p_density_B * p_sugar_B     # 计算是坏瓜的后验概率'''print(P_G)print(P_B)print(P0_G)print(P0_B)print(P1_G)print(P1_B)print(P2_G)print(P2_B)print(P3_G)print(P3_B)print(P4_G)print(P4_B)print(P5_G)print(P5_B)print(p_density_G)print(p_density_B)print(p_sugar_G)print(p_sugar_B)'''return isGood,isBadif __name__=='__main__':# dataSet, testSet, labels = loadDataSet()testSet = [testSet]df = pd.DataFrame(testSet, columns=labels, index=[1])print("=======================待测样本========================")print(f"待测集:\n{df}")isGood, isBad = bayes()print("=======================后验概率========================")print("后验概率:")print(f"P(好瓜|xi) = {isGood}")print(f"P(好瓜|xi) = {isBad}")print("=======================预测结果========================")print("predict ---> 好瓜" if (isGood > isBad) else "predict ---> 坏瓜")
使用sklearn

在scikit-learn中,一共有3个朴素贝叶斯的分类算法类。分别是GaussianNB,MultinomialNB和BernoulliNB。其中GaussianNB就是先验为高斯分布的朴素贝叶斯,MultinomialNB就是先验为多项式分布的朴素贝叶斯,而BernoulliNB就是先验为伯努利分布的朴素贝叶斯。

GaussianNB实现
# 加载数据集
print("=======================加载数据集========================")
from sklearn import datasets
iris = datasets.load_iris()
print("---iris.data[0:5],iris.target[0:5]---")
print(iris.data[0:5],iris.target[0:5])
print("---iris.data[145:],iris.target[145:]---")
print(iris.data[145:],iris.target[145:])
# 分割数据集
print("=======================分割数据集========================")
from sklearn.model_selection import train_test_split
# iris.data是特征值 iris.target是标签值 test_size表示测试集的比例 random_state表示随机数种子
# 随机数种子相同,每次生成的随机数也相同
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=0)
print("---X_train,y_train---")
print(len(X_train),len(y_train))
print(X_train[0:5],y_train[0:5])
print("---X_test,y_test---")
print(len(X_test),len(y_test))
print(X_test[0:5],y_test[0:5])# 构建模型
print("=======================构建模型========================")
from sklearn.naive_bayes import GaussianNB
clf = GaussianNB()
# 训练模型
print("=======================训练模型========================")
clf.fit(X_train, y_train)
# 验证模型
print("=======================手写评价函数 验证模型========================")
y_train_pred = clf.predict(X_train)
print("---y_train_pred---")
print(y_train_pred)
print("---y_train---")
print(y_train)
# 计算准确率的函数
def accuracy(y_train, y_train_pred):c_num=0for i in range(len(y_train)):if y_train[i] != y_train_pred[i]:print("第",i,"个样本预测错误")else:c_num+=1# 返回总样本数,正确样本数,准确率return len(X_train),c_num,(c_num)/len(X_train)
total_len,correct_len,acc=accuracy(y_train, y_train_pred)print("高斯朴素贝叶斯,样本总数: %d 正确样本数 : %d" % (total_len,correct_len))
# 输出准确率
print("准确率",acc)print("=======================使用模型的score评价模型========================")
# 使用sklearn计算准确率
print("clf.score(X_train, y_train)--> ",clf.score(X_train, y_train))# 预测
print("=======================使用metrics模块 评价模型========================")
y_pred = clf.predict(X_test)
print("---y_pred---")
print(y_pred)
print("---y_test---")
print(y_test)
# 导入评价指标
from sklearn import metrics
# 计算准确率
print("=======================计算准确率========================")
print("GaussianNB 准确率:",metrics.accuracy_score(y_test, y_pred))# 保存模型
print("=======================保存模型========================")
import pickle
# 保存模型
with open('bys_model.pkl', 'wb') as f:pickle.dump(clf, f)
# 采用joblib方式保存模型
import joblib
joblib.dump(clf, 'bys_model2.pkl')# 加载模型
print("=======================加载模型========================")
with open('bys_model.pkl', 'rb') as f:clf2 = pickle.load(f)
# 采用joblib方式加载模型
joblib_clf2 = joblib.load('bys_model2.pkl')# 输出模型的内容
print("=======================输出模型的内容========================")
print("clf2--->",clf2)
print("joblib_clf2--->",joblib_clf2)# 预测
print("=======================预测========================")
y_pred2 = clf2.predict(X_test)
joblib_clf2_y_pred2 = joblib_clf2.predict(X_test)
print("=======================计算加载模型准确率========================")
print("pickle模型准确率:",metrics.accuracy_score(y_test, y_pred2))
print("joblib_clf2模型准确率:",metrics.accuracy_score(y_test, joblib_clf2_y_pred2))

输出为:
在这里插入图片描述在这里插入图片描述

MultinomialNB实现
# 构建模型
print("=======================构建模型========================")
from sklearn.naive_bayes import GaussianNB,MultinomialNB,BernoulliNB
# clf = GaussianNB()
clf = MultinomialNB()
# clf = BernoulliNB()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

BernoulliNB 伯努利分布
# 构建模型
print("=======================构建模型========================")
from sklearn.naive_bayes import GaussianNB,MultinomialNB,BernoulliNB
# clf = GaussianNB()
# clf = MultinomialNB()
clf = BernoulliNB()

输出为:
在这里插入图片描述
在这里插入图片描述

确定方向过程

针对完全没有基础的同学们
1.确定机器学习的应用领域有哪些
2.查找机器学习算法应用有哪些
3.确定想要研究的领域极其对应的算法
4.通过招聘网站和论文等确定具体的技术
5.了解业务流程,查找数据
6.复现经典算法
7.持续优化,并尝试与对应企业人员沟通心得
8.企业给出反馈


http://www.ppmy.cn/server/179085.html

相关文章

Milvus vs. ElasticSearch:向量库检索性能测试

目录 1. 构建检索库2. 测试条件3. 测试结果4. 性能分析5. 结论 1. 构建检索库 构建通用场景库总计约2万张。构建车辆数据库总计约12万张。构建公共数据库,包括Flickr30k、COCO、nlvr2、vqa等数据集约43万张。 2. 测试条件 环境说明:分别单机部署Milvu…

基于Spring Boot的可信捐赠系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

关于CNN,RNN,GAN,GNN,DQN,Transformer,LSTM,DBN你了解多少

以下是神经网络中常见的几种模型的简要介绍: 1. ​CNN (Convolutional Neural Network, 卷积神经网络) ​用途: 主要用于图像处理和计算机视觉任务。​特点: 通过卷积核提取局部特征,具有平移不变性,能够有效处理高维数据(如图像…

D-Link 登录信息泄露(越权)CVE-2018-7034 漏洞分析

D-Link 登录信息泄露(越权)CVE-2018-7034 漏洞分析 Description TRENDnet TEW-751DR v1.03B03, TEW-752DRU v1.03B01, and TEW733GR v1.03B01 devices allow authentication bypass via an AUTHORIZED_GROUP1 value, as demonstrated by a request for…

git管理时keil项目忽略文件列表

在使用 Git 管理 Keil MDK(μVision 5)工程时,需要忽略编译生成的临时文件、调试文件、用户配置等非必要内容。以下是忽略文件的详细列表及说明,可直接保存为 .gitignore 文件: Keil MDK 工程的 .gitignore 文件 giti…

Linux第九讲:动静态库

Linux第九讲:动静态库 1.静态库的制作 && 什么是库1.1静态库生成 2.动态库2.1动态库生成2.2静态链接和动态链接的区别2.3解决策略2.3.1将我们写的动态库拷贝至系统2.3.2建立软链接2.3.3LD_LIBRARY_PATH2.3.4ldconfig方案:配置/etc/ld.so.conf.d/…

HTTP长连接与短连接的前世今生

HTTP长连接与短连接的前世今生 大家好!作为一名在互联网摸爬滚打多年的开发者,今天想跟大家聊聊HTTP中的长连接和短连接这个话题。 记得我刚入行时,对这些概念一头雾水,希望这篇文章能帮助新入行的朋友少走些弯路。 什么是HTTP…

基于深度学习的行人人脸识别系统的设计与实现

标题:基于深度学习的行人人脸识别系统的设计与实现 内容:1.摘要 随着安防、智能监控等领域的快速发展,行人人脸识别技术的需求日益增长。本研究旨在设计并实现一个基于深度学习的行人人脸识别系统。采用先进的深度学习算法,如卷积神经网络(C…