鸢尾花数据可视化,PCA降到两维后,对数据标准化、归一化

用PCA降维,后输出降维后每一列的贡献率,各列贡献相加为1.

// An highlighted block
if __name__ == "__main__":
    iris = datasets.load_iris()  # 获取鸢尾花数据集Dick
    X=iris["data"]#训练数据
    Y=iris["target"]#类别
    pca = PCA(n_components=2)  # 降到2维
    pca.fit(X)  # 训练
    x = pca.fit_transform(X)  # 降维后的数据
    print(pca.explained_variance_ratio_)  # 输出贡献率

基于鸢尾花数据画图,用PCA降维到两维后

    plt.figure(figsize=(10, 5))
    # x1_min, x1_max = x[:, 0].min(), x[:, 0].max()  # 第0列的范围
    # x2_min, x2_max = x[:, 1].min(), x[:, 1].max()  # 第1列的范围
    # plt.xlim(x1_min, x1_max)
    # plt.ylim(x2_min, x2_max) 
    
    for i in range(len(Y)):
        if Y[i]==0:
            plt.plot(x[i, 0], x[i, 1], 'ro')
        elif Y[i]==1:
            plt.plot(x[i, 0], x[i, 1], 'bo')
        else:
            plt.plot(x[i, 0], x[i, 1], 'yo')

    #gca="get current axis" 设置坐标轴原点
    ax = plt.gca()
    ax.xaxis.set_ticks_position("bottom")#把四条外边框的下边当做x轴
    ax.yaxis.set_ticks_position("left")#把四条外边框的左边当做y轴
    ax.spines["bottom"].set_position(("data", 0))#把x轴的位置放到y的0位置
    ax.spines["left"].set_position(("data", 0))#把y轴的位置放到x的0位置

    plt.grid(True)
    plt.xlabel('1st')
    plt.ylabel('2nd')
    plt.title('Scatter Plot')
    plt.show()

效果图如下:
鸢尾花数据可视化,PCA降到两维后,对数据标准化、归一化_第1张图片
对上图进行归一化处理,通过遍历每列feature vector里的每一个数据,将Max和Min的记录下来,并通过Max-Min作为基数(即Min=0,Max=1)进行数据的归一化处理,将每个特征值规约到(0,1)之间。
在这里插入图片描述

    #导入包:from sklearn.preprocessing import MinMaxScaler
    #归一化(normalization)
    minMax = MinMaxScaler()
    x_std = minMax.fit_transform(x)

效果图如下:
鸢尾花数据可视化,PCA降到两维后,对数据标准化、归一化_第2张图片
标准化处理:对原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1,这个方法被广泛的使用在许多机器学习算法中(例如:支持向量机、逻辑回归和类神经网络)。公式如下:
在这里插入图片描述

    #导入包:from sklearn.preprocessing import StandardScaler
    #标准化(Standardization)
    scaler = StandardScaler().fit(x)
    x_std = scaler .transform(x)#标准化后的数据
    print(scaler.mean_)#输出均值
    print(scaler.scale_)#输出标准差

你可能感兴趣的:(数据预处理)