import numpy as np
import matplotlib.pyplot as plt
def PCA(data, n):
from sklearn.decomposition import PCA
pca = PCA(n_components=n) # n为降到的维数,这里降到的是2维
pca_result = pca.fit_transform(data) # 获取降维后的数据,无监督只需要data
return pca_result # 返回降维后的数据列表
def LDA(data, target, n):
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA
lda = LDA(n_components=n)
lda_result = lda.fit_transform(data, target) # 监督式学习,data和target
return lda_result
def plot(data, target, n):
pca_result = PCA(data, n) # 调用PCA获取降维后的函数
lda_result = LDA(data, target, n) # 调用LDA获取降维后的函数
plt.subplot(1, 2, 1) # 降维后的数据依据target来画点
plt.scatter(pca_result[target == 0, 0], pca_result[target == 0, 1], color='#66CCFF') # 不同标签使用不同颜色
plt.scatter(pca_result[target == 1, 0], pca_result[target == 1, 1], color='#EE0000') # 标签为1
plt.scatter(pca_result[target == 2, 0], pca_result[target == 2, 1], color='#99FFFF')
plt.scatter(pca_result[target == 3, 0], pca_result[target == 3, 1], color='#9999FF')
plt.scatter(pca_result[target == 4, 0], pca_result[target == 4, 1], color='#FFFF00')
plt.scatter(pca_result[target == 5, 0], pca_result[target == 5, 1], color='#99CC33')
plt.title('PCA')
plt.subplot(1, 2, 2)
plt.scatter(lda_result[target == 0, 0], lda_result[target == 0, 1], color='#66CCFF')
plt.scatter(lda_result[target == 1, 0], lda_result[target == 1, 1], color='#EE0000')
plt.scatter(lda_result[target == 2, 0], lda_result[target == 2, 1], color='#99FFFF')
plt.scatter(lda_result[target == 3, 0], lda_result[target == 3, 1], color='#9999FF')
plt.scatter(lda_result[target == 4, 0], lda_result[target == 4, 1], color='#FFFF00')
plt.scatter(lda_result[target == 5, 0], lda_result[target == 5, 1], color='#99CC33')
plt.title('LDA')
plt.show()
if __name__ == '__main__':
load_data = np.load('./feat_before_classifier_set.npy', encoding="latin1") # 加载数据
testdata = [[]]*720 # 创建一个二维数组(加载的数据sklearn框架无法直接读取)
for i in range(720):
testdata[i] = load_data[i][0] # 读取数据,放到二维数组中
print(testdata[0])
load_target = np.load('./label.npy') # 加载标签
n_components = 2 # 数据降到二维
plot(testdata, load_target, n_components) # 画图
python使用pca与lda数据降维
最新推荐文章于 2023-01-06 21:08:05 发布