(y == i).mean() import numpy as np y = np.array([1,1,2,2,3]) y_prob = {} y_set = set(y) for i in y_set: y_prob[i] = (y == i).mean() y_prob y_prob[i] = (y == i).mean() 该代码的特点: 思想一致:都是在计算离散变量的概率 高性能计算:效率高,计算速度快 效果一致:与理论上的结果一致 标签概率 标签是类别,类别的概率,即离散变量的概率计算,是数数 一类的个数/总个数 (y == i).mean() - y == i 真假列表 ,0或1 - y是一个向量,i是一个数值,会将向量的每个元素与i进行比较 - mean,1的个数加起来/总个数 ,即用一个函数mean替换了count/sum, |
P(y1|(x1,x2,x3)) = P(x1|y1) P(x2|y1) P(x3|y1)P(y1) P(y1|x) = P(y1|(x1,x2,x3)) = P(x1|y1) P(x2|y1) P(x3|y1)P(y1) x1,x2,x3是不同的特征,自有其特点/特性, 有不同的均值,标准差, 这里假设 - 所有特征相互独立 - 所有变量默认为连续变量 - 连续变量按概率密度求概率,自带归一化处理 - 因此,已经将他们拉到标准正态的维度上进行处理了 同时这里也有工程近似 - 该公式来自贝叶斯,对于既定的样本x,它的概率是定值,因为概率不像频率,本来就是定值 - 之所以抹去p(x),是相对y1,y2,...,yn来说的,目的在于取出它们中的最大值 - 而公式中的分母都是p(x),故可以抹去 |
X[y==0] import numpy as np X = np.arange(21).reshape((7,3)) X array([[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8], [ 9, 10, 11], [12, 13, 14], [15, 16, 17], [18, 19, 20]]) y = np.array([0,1,0,1,0,0,1]) X[y==0] array([[ 0, 1, 2], [ 6, 7, 8], [12, 13, 14], [15, 16, 17]]) X[y==1] array([[ 3, 4, 5], [ 9, 10, 11], [18, 19, 20]]) ----------------------------------------------------------------- |
|
import numpy as np from matplotlib import pyplot as plt x = np.linspace(start=-10, stop=10, num=50) |
|
|
|
|
label = np.array(y_train) if label.ndim > 1: label = label.ravel() # 转换为一维数组 label.shape ravel 英/ˈrævl/ 美/ˈrævl/ vt. 使…缠绕;使更复杂;使更纷乱 n. 缠绕;(绳,织物等)散开的一端;错杂 |
![]() |
|
|
|