主成分分析PCA数据降维原理及python应用(葡萄酒案例分析)
2020-08-10 22:03
966 查看
目录
主成分分析(PCA)——以葡萄酒数据集分类为例
1、认识PCA
(1)简介
数据降维的一种方法是通过特征提取实现,主成分分析PCA就是一种无监督数据压缩技术,广泛应用于特征提取和降维。
换言之,PCA技术就是在高维数据中寻找最大方差的方向,将这个方向投影到维度更小的新子空间。例如,将原数据向量x,通过构建
import pandas as pd import numpy as np from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split import matplotlib.pyplot as plt def main(): # load data df_wine = pd.read_csv('D:\\PyCharm_Project\\maching_learning\\wine_data\\wine.data', header=None) # 本地加载 # df_wine=pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data',header=None)#服务器加载 # split the data,train:test=7:3 x, y = df_wine.iloc[:, 1:].values, df_wine.iloc[:, 0].values x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, stratify=y, random_state=0) # standardize the feature 标准化单位方差 sc = StandardScaler() x_train_std = sc.fit_transform(x_train) x_test_std = sc.fit_transform(x_test) # print(x_train_std) # 构造协方差矩阵,得到特征向量和特征值 cov_matrix = np.cov(x_train_std.T) eigen_val, eigen_vec = np.linalg.eig(cov_matrix) # print("values\n ", eigen_val, "\nvector\n ", eigen_vec) # 解释方差比 tot = sum(eigen_val) # 总特征值和 var_exp = [(i / tot) for i in sorted(eigen_val, reverse=True)] # 计算解释方差比,降序 # print(var_exp) # cum_var_exp = np.cumsum(var_exp) # 累加方差比率 # plt.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文 # plt.bar(range(1, 14), var_exp, alpha=0.5, align='center', label='独立解释方差') # 柱状 Individual_explained_variance # plt.step(range(1, 14), cum_var_exp, where='mid', label='累加解释方差') # Cumulative_explained_variance # plt.ylabel("解释方差率") # plt.xlabel("主成分索引") # plt.legend(loc='right') # plt.show() # 特征变换 eigen_pairs = [(np.abs(eigen_val[i]), eigen_vec[:, i]) for i in range(len(eigen_val))] eigen_pairs.sort(key=lambda k: k[0], reverse=True) # (特征值,特征向量)降序排列 # print(eigen_pairs) w = np.hstack((eigen_pairs[0][1][:, np.newaxis], eigen_pairs[1][1][:, np.newaxis])) # 降维投影矩阵W # print(w) x_train_pca = x_train_std.dot(w) # print(x_train_pca) color = ['r', 'g', 'b'] marker = ['s', 'x', 'o'] for l, c, m in zip(np.unique(y_train), color, marker): plt.scatter(x_train_pca[y_train == l, 0], x_train_pca[y_train == l, 1], c=c, label=l, marker=m) plt.title('Result') plt.xlabel('PC1') plt.ylabel('PC2') plt.legend(loc='lower left') plt.show() if __name__ == '__main__': main()View Code
总结:
本案例介绍PCA步骤和实现过程,单步进行是我更理解PCA内部实行的过程,主成分分析PCA作为一种无监督数据压缩技术,学习之后更好掌握数据特征提取和降维的实现方法。记录学习过程,不仅能让自己更好的理解知识,而且能与大家共勉,希望我们都能有所帮助!
我的博客园:https://www.cnblogs.com/chenzhenhong/p/13472460.html
我的CSDN:原创 PCA数据降维原理及python应用(葡萄酒案例分析)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/Charzous/article/details/107883679
相关文章推荐
- sklearn降维2: 主成分分析PCA原理python过程
- 机器学习(七):主成分分析PCA降维_Python
- PCA(主成分分析)原理,步骤详解以及应用
- 机器学习中的降维方法——主成分分析(PCA)与核主成分分析(KPCA)原理详解
- python实现PCA(主成分分析)降维
- 短小精悍算例:Python实现PCA(主成分分析)降维
- 数据挖掘学习------------------1-数据准备-4-主成分分析(PCA)降维和相关系数降维
- python_主成分分析(PCA)降维
- 数据降维及压缩1:主成分分析PCA实例
- 【机器学习算法-python实现】PCA 主成分分析、降维
- 机器学习--PCA(主成分分析)原理及应用
- 主成分分析降维(用Python中的PCA模块实现)
- 【机器学习算法-python实现】PCA 主成分分析、降维
- spark mllib 数据降维 主成分分析(PCA)
- 主成分分析(PCA)的数学原理与应用
- 【机器学习】数据降维—核主成分分析(Kernel PCA)
- Python queue队列原理与应用案例分析
- 数据降维技术——PCA(主成分分析)
- 人脸识别中用主成分分析PCA来将数据降维--MATLAB代码
- 机器学习(七):主成分分析PCA降维_Python