1.2. Linear and Quadratic Discriminant Analysis
Linear and Quadratic Discriminant Analysis with covariance ellipsoid
from scipy import linalg
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
from matplotlib import colors
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis
cmap = colors.LinearSegmentedColormap('red_blue_classes',
{'red':[(0,1,1),
(1,0.7,0.7)],
'green':[(0,0.7,0.7),
(1,0.7,0.7)],
'blue':[(0,0.7,0.7),
(1,1,1)]
})
plt.cm.register_cmap(cmap=cmap)
aa = [(0, 1, 1), (1, 0.7, 0.7)]#一个列表
aa1= [[0, 1, 1], [1, 0.7, 0.7]]#也是一个列表
bb = np.array([[0, 1, 1], [1, 0.7, 0.7]])#一个数组
cc = np.mat([[0, 1, 1], [1, 0.7, 0.7]])#一个矩阵
cc2 = cc*2
np.dot(cc,cc2.transpose())==cc*cc2.transpose()#都是矩阵相乘
def dataset_fix_cov():
#生成两个协方差矩阵相同的数据集
n,dim = 300,2
np.random.seed(0)
C = np.array([[0,-0.23],[0.83,0.23]])
X = np.r_[np.dot(np.random.randn(n,dim),C),
np.dot(np.random.randn(n, dim), C)+np.array([1,1])]
#np.dot 数组小于等于二维的时候执行矩阵的乘法,等价于*
Y = np.hstack((np.zeros(n),np.ones(n)))
return X,Y
def dataset_cov():
#生成两个个方差不相等的数据集
n, dim = 300, 2
np.random.seed(0)
C = np.array([[0., -1.], [2.5, .7]]) * 2.#这就是设置方差的
X = np.r_[np.dot(np.random.randn(n, dim), C),
np.dot(np.random.randn(n, dim), C.T) + np.array([1, 4])]
Y = np.hstack((np.zeros(n), np.ones(n)))
return X, Y
def plot_data(lda,X,Y,Y_pred,fig_index):
splot = plt.subplot(2,2,fig_index)
if fig_index==1:
p