分别进行PCA降维和LDA降维后分类iris数据集

降维

对iris数据集分别进行PCA降维和LDA降维后,再使用logisticRegression、SGDClassifier、Perceptron进行分类

# PCA降维
pca = PCA(n_components=2)
pca.fit(X)
X_PCA = pca.transform(X)

# LDA降维
lda = LinearDiscriminantAnalysis(n_components=2)
lda.fit(X, y)
X_LDA = lda.transform(X)

分类

# logisticRegression分类
lr_PCA = LogisticRegression(max_iter=5000, random_state=1)
lr_PCA.fit(X_train_PCA_scaler, y_train_PCA)
y_pred_PCA_lr = lr_PCA.predict(X_test_PCA_scaler)

# LR
lr_LDA = LogisticRegression(max_iter=5000, random_state=1)
lr_LDA.fit(X_train_LDA_scaler, y_train_LDA)
y_pred_LDA_lr = lr_LDA.predict(X_test_LDA_scaler)

# Perceptron
perceptron_PCA = Perceptron(max_iter=500, random_state=1)
perceptron_PCA.fit(X_train_PCA_scaler, y_train_PCA)
y_pred_perceptron_PCA = perceptron_PCA.predict(X_test_PCA_scaler)

perceptron_LDA = Perceptron(max_iter=500, random_state=1)
perceptron_LDA.fit(X_train_LDA_scaler, y_train_LDA)
y_pred_perceptron_LDA = perceptron_LDA.predict(X_test_LDA_scaler)

# SGDClassifier
SGD_LDA = SGDClassifier(max_iter=5000, random_state=1)
SGD_LDA.fit(X_train_LDA_scaler, y_train_LDA)
y_pred_SGD_LDA = SGD_LDA.predict(X_test_LDA_scaler)

SGD_PCA = SGDClassifier(max_iter=5000, random_state=1)
SGD_PCA.fit(X_train_PCA_scaler, y_train_PCA)
y_pred_SGD_PCA = SGD_PCA.predict(X_test_PCA_scaler)

结果展示

Perceptron分类器的平均性能更好,由实验结果可以看出Perceptron分类器的准确率最高,但是SGDClassifier分类器不太稳定有时候效果很好,但是有的时候准确率比其他两个都要低,所以整体看Perceptron分类器的性能更好。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

当在划分降维后的数据集的train_test_split函数中的shuffle参数改为True,让数据集乱序排列之后,然后在每个分类器定义的时候加入max_iter参数,并设置为5000时,可以明显的提高每个分类器的性能。

在这里插入图片描述

在这里插入图片描述

这个参数代表了迭代的次数,通过调整这个值每个分类器的准确率提高了很多。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
高光谱PCA降维分类代码包括两部分,一部分是PCA降维代码,另一部分是分类代码。 PCA降维代码: PCA(Principal Component Analysis,主成分分析)是一种常用的降维方法,可以将高维数据映射到低维空间。通过选择保留的主成分数目,可以实现数据的降维。下面是高光谱PCA降维代码的实现: ```python import numpy as np from sklearn.decomposition import PCA # 读入高光谱数据 data = np.loadtxt('spectrometer_data.txt', delimiter=',') # 实例化PCA类对象 pca = PCA(n_components=3) # 对数据进行降维 data_pca = pca.fit_transform(data) # 输出降维后的数据 print(data_pca) ``` 这段代码中,我们使用sklearn库中的PCA进行降维操作。通过n_components参数指定保留的主成分数目,将高光谱数据进行降维,并输出降维后的数据。 分类代码: 分类是对数据进行标签预测的操作,常用的分类算法包括支持向量机、K近邻等。本文以支持向量机为例,给出高光谱数据分类代码的实现: ```python from sklearn.svm import SVC from sklearn.metrics import accuracy_score from sklearn.model_selection import train_test_split # 读入高光谱数据和标签 data = np.loadtxt('spectrometer_data.txt', delimiter=',') labels = np.loadtxt('spectrometer_labels.txt', delimiter=',') # 划分训练集和测试集 x_train, x_test, y_train, y_test = train_test_split(data, labels, random_state=0, test_size=0.3) # 实例化SVM分类器类对象 model = SVC(kernel='rbf', C=1) # 在训练集上训练模型 model.fit(x_train, y_train) # 在测试集上进行预测 y_pred = model.predict(x_test) # 输出分类准确率 acc = accuracy_score(y_test, y_pred) print("Accuracy:", acc) ``` 这段代码中,我们使用sklearn库中的SVC类实现支持向量机分类器,kernel参数指定核函数类型,C参数指定错误项的惩罚参数。通过train_test_split函数将高光谱数据划分为训练集和测试集,调用fit函数在训练集上训练模型,predict函数在测试集上进行预测,最后利用accuracy_score函数计算分类的准确率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值