Python:将MNIST数据PCA降维到87维,并另存为arff格式

import numpy as np
import copy
import pandas as pd
from sklearn import datasets
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler

MNIST = datasets.fetch_mldata('MNIST original')
X, y = MNIST['data'], MNIST['target']
# Scaler = StandardScaler()
# X = Scaler.fit_transform(X)
pca = PCA(0.9)
pca.fit(X)
X = pca.fit_transform(X)
# print(y.shape)

# data = np.array(pd.read_csv(r'E:\dataset\clusterData\sonar.csv', header=None))
# X = data[:, :-1]
# y = data[:, -1]
# Scaler = StandardScaler()
# pca = PCA(n_components=10)
# X = Scaler.fit_transform(data[:, :-1])
# X = pca.fit_transform(X)
# y = data[:, -1]

y = np.vstack(y)

data = np.hstack((X,y))
print(data.shape)
data = pd.DataFrame(data)
data.to_csv(r'E:\dataset\clusterData\MNIST_PCA.csv',header=None,index=None)

然后,打开生成的csv文件,在第一行对每一列加入一个属性名称。不加的话第一行数据被默认为head。在java运行中数据集就会少一行。

package classifier;
import weka.core.Instances;
import weka.core.converters.ConverterUtils.DataSource;
import weka.core.converters.ArffSaver;

import java.util.Random;
import java.io.File;

public class TransformCSV_arff {
    public static void main(String[] args) throws Exception{
        Instances allData = DataSource.read("E:\\dataset\\clusterData\\COIL20_2.csv");
        ArffSaver saver = new ArffSaver();
        saver.setInstances(allData);
        saver.setFile(new File("E:\\dataset\\clusterData\\COIL20_2.arff"));
        saver.writeBatch();
        System.out.println("已经转化为arrf文件");
    }
}

记得安装weka包,不然就没有然后了!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
PCA(Principal Component Analysis)是一种常用的降维方法,它可以将高数据转换成低数据,同时保留原始数据的主要特征。 在对MNIST数据集进行降维时,我们首先需要对数据进行预处理,例如对每个像素值进行标准化处理,使其均值为0,方差为1。然后,我们将数据输入PCA模型中。PCA模型会计算出一组特征向量和对应的特征值,特征向量表示数据中的主要方向,特征值表示数据在对应特征向量上的重要程度。 我们可以根据特征值的大小来选择保留多少个主要特征向量。通常,我们选择前K个特征向量,其中K是我们预先设定的度。这样,我们可以将原始的高数据转换成K数据,实现数据降维。 通过对MNIST数据集进行PCA降维,可以达到以下几个目的: 1. 减少数据度,降低计算和存储的复杂性。原始的MNIST数据集包含784的特征(每个样本是28x28的像素矩阵),而PCA可以将数据降到更低度,例如50,从而减少需要处理的特征数量。 2. 保留了数据的主要特征。通过选择保留较大特征值对应的特征向量,PCA可以保留数据中最重要的信息,从而在降维的同时尽量减少信息损失。 3. 可视化数据。通过降维后的数据,我们可以更容易地对数据进行可视化,例如绘制散点图、热力图等,从而更好地理解数据的分布和结构。 需要注意的是,降维后的数据可能损失一部分细节信息,因此降维的合理性需要根据具体问题进行评估。同时,在PCA的应用中,我们还可以通过调整度数量、选择其他降维方法(如LDA、t-SNE等)来进行对比和分析,以获得更好的降维效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DeniuHe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值