from sklearn.datasets import load_boston
boston = load_boston()
boston_data = boston['data']
boston_target = boston['target']
boston_names = boston['feature_names']
print('boston数据集数据的形状为:',boston_data.shape)
print('boston数据集标签的形状为:',boston_target.shape)
print('boston数据集特征名的形状为:',boston_names.shape)
boston数据集数据的形状为: (506, 13)
boston数据集标签的形状为: (506,)
boston数据集特征名的形状为: (13,)
from sklearn.model_selection import train_test_split
boston_data_train, boston_data_test, \
boston_target_train, boston_target_test = \
train_test_split(boston_data, boston_target,
test_size=0.2, random_state=42)
print('训练集数据的形状为:',boston_data_train.shape)
print('训练集标签的形状为:',boston_target_train.shape)
print('测试集数据的形状为:',boston_data_test.shape)
print('测试集标签的形状为:',boston_target_test.shape)
训练集数据的形状为: (404, 13)
训练集标签的形状为: (404,)
测试集数据的形状为: (102, 13)
测试集标签的形状为: (102,)
import numpy as np
from sklearn.preprocessing import StandardScaler
################标准差标准化################
# zij=(xij-xi)/si #
# zij为标准化后的变量值 #
# xij为实际变量值 #
# xi算术平均值(数学期望) #
# si标准差 #
############################################
stdScale = StandardScaler().fit(boston_data_train) ## 生成规则
## 将规则应用于训练集
boston_trainScaler = stdScale.transform(boston_data_train)
## 将规则应用于测试集
boston_testScaler = stdScale.transform(boston_data_test)
print('标准差标准化后训练集数据的方差为:',np.var(boston_trainScaler))
print('标准差标准化后训练集数据的均值为:',
np.mean(boston_trainScaler))
print('标准差标准化后测试集数据的方差为:',np.var(boston_testScaler))
print('标准差标准化后测试集数据的均值为:',np.mean(boston_testScaler))
标准差标准化后训练集数据的方差为: 1.0
标准差标准化后训练集数据的均值为: 1.3637225393110834e-15
标准差标准化后测试集数据的方差为: 0.9474773930196593
标准差标准化后测试集数据的均值为: 0.030537934487192598
from sklearn.decomposition import PCA
#####################################PCA降维#####################################
# 将原始数据按列组成 n 行 m 列矩阵 X #
# 将 X 的每一行进行零均值化,即减去这一行的均值 #
# 求出协方差矩阵 #
# 求出协方差矩阵的特征值及对应的特征向量 #
# 将特征向量按对应特征值大小从上到下按行排列成矩阵,取前 k 行组成矩阵 P #
# Y=PX 即为降维到 k 维后的数据 #
#################################################################################
pca = PCA(n_components=5).fit(boston_trainScaler) ## 生成规则
## 将规则应用于训练集
boston_trainPca = pca.transform(boston_trainScaler)
## 将规则应用于测试集
boston_testPca = pca.transform(boston_testScaler)
print('降维后boston数据集数据测试集的形状为:',boston_trainPca.shape)
print('降维后boston数据集数据训练集的形状为:',boston_testPca.shape)
降维后boston数据集数据测试集的形状为: (404, 5)
降维后boston数据集数据训练集的形状为: (102, 5)