python主成分分析法降维_机器学习之路:python 特征降维 主成分分析 PCA

1 from sklearn.svm importLinearSVC2 from sklearn.metrics importclassification_report3 from sklearn.decomposition importPCA4 importpandas as pd5 importnumpy as np6 ‘‘‘

7 主成分分析:8 特征降低维度的方法。9 提取主要特征成分,有关联的特征进行运算组合10 丢弃不显著的特征成分, 同时可能损失有意义的特征11 实现降低特征维度12 api使用:13 estimator = PCA(n_components=20)14 pca_x_train = estimator.fit_transform(x_train)15 pca_x_test = estimator.transform(x_test)16

17 分别使用支持向量机进行学习降维前后的数据再预测18

19 该数据集源自网上 https://archive.ics.uci.edu/ml/machine-learning-databases/optdigits/20 我把他下载到了本地21 训练样本3823条, 测试样本1797条22 图像通过8*8像素矩阵表示共64个维度,1个目标维度表示数字类别23

24 ‘‘‘

25

26 #1 准备数据

27 digits_train = pd.read_csv("./data/optdigits/optdigits.tra", header=None)28 digits_test = pd.read_csv("./data/optdigits/optdigits.tes", header=None)29 #从样本中抽取出64维度像素特征和1维度目标

30 x_train = digits_train[np.arange(64)]31 y_train = digits_train[64]32 x_test = digits_test[np.arange(64)]33 y_test = digits_test[64]34

35 #2 对图像数据进行降维,64维度降低到20维度

36 estimator = PCA(n_components=20)37 pca_x_train =estimator.fit_transform(x_train)38 pca_x_test =estimator.transform(x_test)39

40 #3.1 使用默认配置的支持向量机进行学习和预测未降维的数据

41 svc =LinearSVC()42 #学习

43 svc.fit(x_train, y_train)44 #预测

45 y_predict =svc.predict(x_test)46

47 #3.2 使用默认配置的支持向量机学习和预测降维后的数据

48 pca_svc =LinearSVC()49 #学习

50 pca_svc.fit(pca_x_train, y_train)51 pca_y_predict =pca_svc.predict(pca_x_test)52

53 #4 模型评估

54 print("原始数据的准确率:", svc.score(x_test, y_test))55 print("其他评分:\n", classification_report(y_test, y_predict, target_names=np.arange(10).astype(str)))56

57 print("降维后的数据准确率:", pca_svc.score(pca_x_test, y_test))58 print("其他评分:\n", classification_report(y_test, pca_y_predict, target_names=np.arange(10).astype(str)))59

60 ‘‘‘

61 原始数据的准确率: 0.916527545909849862 其他评分:63 precision recall f1-score support64

65 0 0.98 0.98 0.98 17866 1 0.73 0.99 0.84 18267 2 0.98 0.97 0.98 17768 3 0.96 0.88 0.92 18369 4 0.94 0.95 0.95 18170 5 0.91 0.96 0.93 18271 6 0.99 0.96 0.98 18172 7 0.98 0.92 0.95 17973 8 0.84 0.79 0.81 17474 9 0.94 0.76 0.84 18075

76 avg / total 0.92 0.92 0.92 179777

78 降维后的数据准确率: 0.922092376182526579 其他评分:80 precision recall f1-score support81

82 0 0.97 0.97 0.97 17883 1 0.93 0.86 0.89 18284 2 0.96 0.97 0.96 17785 3 0.93 0.87 0.90 18386 4 0.94 0.97 0.96 18187 5 0.86 0.96 0.91 18288 6 0.97 0.98 0.98 18189 7 0.97 0.88 0.92 17990 8 0.89 0.89 0.89 17491 9 0.82 0.88 0.85 18092

93 avg / total 0.92 0.92 0.92 179794 ‘‘‘

你可能感兴趣的:(python主成分分析法降维)