C/C++教程

机器学习之PCA降维

本文主要是介绍机器学习之PCA降维,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

PCA之降维与可视化

一、PCA 降维

1、使用使用sklearn自带数据集load_breast_cancer

from sklearn import datasets
cancer = datasets.load_breast_cancer()
X = cancer.data
y = cancer.target
在这里插入图片描述

2、划分训练测试集

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 1/4, random_state = 202

3、定义PCA

from sklearn.decomposition import PCA
n_components = 20
pca = PCA(n_components = n_components).fit(X_train)
X_train_pca = pca.transform(X_train)
X_test_pca = pca.transform(X_test)

4、使用XGB分别对降维前和降维后的训练集进行训练,并对测试集进行预测

import xgboost as xgb
num_round = 50
bst = xgb.train(params, X_train_xgb_origin, num_round, [(X_train_xgb_origin,‘train’),(X_test_xgb_origin,‘test’)])
在这里插入图片描述

降维后

num_round = 50
bst = xgb.train(params, X_train_xgb_pca, num_round, [(X_train_xgb_pca,‘train’),(X_test_xgb_pca,‘test’)])
由于数据量较少,因此在速度提升上不明显,但是训练效果有所下降…
在这里插入图片描述

二、PCA可视化

1、#将30维特征降到2维

n_components = 2
pca = PCA(n_components = n_components)
X_pca = pca.fit_transform(X)
import matplotlib.pyplot as plt
import numpy as np

#正样本用红色圆形表示,负样本用蓝色三角形表示
plt.scatter(pos[:,0],pos[:,1],s=60,marker = ‘o’,c= ‘r’)
plt.scatter(neg[:,0],neg[:,1],s=60,marker = ‘^’,c= ‘b’)
plt.title(u’PCA降维’)
plt.xlabel(u’维度1’)
plt.ylabel(u’维度2’)
plt.show()
在这里插入图片描述 从上图可以看出,正负样本的分布差异比较明显,尤其对于正样本,分布较为集中。

这篇关于机器学习之PCA降维的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!