• PCA降维可视化


    二维

    import pandas as pd
    import warnings
    warnings.filterwarnings("ignore")
    
    df = pd.read_csv('data/data.csv').dropna()
    features = df.columns[:-1]
    X, y = df[features], df['label']
    
    from sklearn.preprocessing import MinMaxScaler
    # 创建MinMaxScaler对象
    scaler = MinMaxScaler()
    # 对数据进行拟合和转换
    X = scaler.fit_transform(X)
    
    from sklearn.decomposition import PCA  
    # PCA降维
    pca = PCA(n_components=2)  
    X_pca = pca.fit_transform(X) 
    
    # 得到正负样本集  
    label = y
    pos_mask = label == 0  
    neg_mask = label == 1  
    pos = X_pca[pos_mask]  
    neg = X_pca[neg_mask]  
    
    import matplotlib.pyplot as plt
    # 防止中文乱码
    plt.rcParams["font.sans-serif"] = ["SimHei"]
    plt.rcParams["axes.unicode_minus"] = False
    # 可视化  
    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() 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    在这里插入图片描述

    三维

    import pandas as pd
    import warnings
    warnings.filterwarnings("ignore")
    
    df = pd.read_csv('data/data.csv').dropna()
    features = df.columns[:-1]
    X, y = df[features], df['label']
    
    from sklearn.preprocessing import MinMaxScaler
    # 创建MinMaxScaler对象
    scaler = MinMaxScaler()
    # 对数据进行拟合和转换
    X = scaler.fit_transform(X)
    
    from sklearn.decomposition import PCA
    import matplotlib.pyplot as plt
    # 防止中文乱码
    plt.rcParams["font.sans-serif"] = ["SimHei"]
    plt.rcParams["axes.unicode_minus"] = False
    from mpl_toolkits.mplot3d import Axes3D
    
    # 创建PCA对象
    pca = PCA(n_components=3)
    # 使用数据集拟合PCA对象
    pca.fit(X)
    # 将数据集进行降维
    X_pca = pca.transform(X)
    
    # 创建3D图形
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    # 设置图形大小
    fig.set_size_inches(10, 10)
    # 绘制3D散点图
    ax.scatter(X_pca[:, 0], X_pca[:, 1], X_pca[:, 2], c=-y, cmap='viridis', s=50)
    # 设置坐标轴标签
    ax.set_xlabel('PC1')
    ax.set_ylabel('PC2')
    ax.set_zlabel('PC3')
    # 设置图形标题
    ax.set_title('PCA visualization in 3D')
    # 显示图形
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    在这里插入图片描述

  • 相关阅读:
    TypeError: Cannot read properties of undefined (reading ***)
    Docker 安装MYSQL 5.7.38
    LeetCode-1106. 解析布尔表达式【栈,递归,字符串】
    每日简报 8月30日简报新鲜事 每天一分钟 了解新鲜事
    Mysql 讲解所有的约束类型
    【无标题】
    挖矿僵尸网络蠕虫病毒kdevtmpfsi处理过程(包含部分pgsql线程池满的情况)
    公司的这种打包启动方式,我简直惊呆了
    Android Studio插件版本与Gradle 版本对应关系
    C++容器工作效率-内存操作
  • 原文地址:https://blog.csdn.net/weixin_45735391/article/details/133961303