主成分分析:将多变量降维成少变量,在保持原有信息尽量完整的前提下,尽可能多的减少变量
# 导入库
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import seaborn as sns
%matplotlib inline
from sklearn.datasets import load_breast_cancer
# 加载数据库,转为dataframe
cancer = load_breast_cancer()
df = pd.DataFrame(cancer['data'],columns=cancer['feature_names'])
df.head()
- numpy、pandas、matplotlib:数据分析的常用库
- seaborn:数据可视化
- sklearn.datasets:从机器学习库中导入数据集
# PCA
from sklearn.preprocessing import StandardScaler
# 归一化
scaler = StandardScaler()
scaler.fit(df)
scaled_data = scaler.transform(df)
- from sklearn.preprocessing import StandardScaler:机器学习库中的标准化
- StandardScaler().fit():算均值和方差
- StandardScaler().transform:算2.后的标准化
from sklearn.decomposition import PCA
#选取主成分个数,暂定为2
pca = PCA(n_components=2)
pca.fit(scaled_data)
- from sklearn.decomposition import PCA:机器学习库中的主成分分析
- PCA(n_components=2):选取主成分个数,2个
- PCA(n_components=2).fit:用于训练
# 数据投影
x_pca = pca.transform(scaled_data)
- pca.transform():将得到的主成分分析结果进行投影
scaled_data.shape
- 获取表格的行列
x_pca.shape
# 可视化
plt.figure(figsize=(8,6))
plt.scatter(x_pca[:,0],x_pca[:,1],c=cancer['target'],cmap='rainbow')
plt.xlabel('First principal component')
plt.ylabel('Second Principal Component')
- 将数据结果可视化:figure画布,scatter、plot图标类型,xlabel、ylabel坐标轴标签
pca.components_
- pca.components_:返回具有最大方差的主成分
map= pd.DataFrame(pca.components_,columns=cancer['feature_names'])
plt.figure(figsize=(12,6))
sns.heatmap(map,cmap='twilight')
热力图