您的位置:首页 > 汽车 > 时评 > 英文网站定制公司_影视公司招聘信息_手机广告推广软件_营销模式方案

英文网站定制公司_影视公司招聘信息_手机广告推广软件_营销模式方案

2025/4/1 6:34:50 来源:https://blog.csdn.net/m0_37758063/article/details/146519066  浏览:    关键词:英文网站定制公司_影视公司招聘信息_手机广告推广软件_营销模式方案
英文网站定制公司_影视公司招聘信息_手机广告推广软件_营销模式方案

1. 作者介绍

高赫,男 ,西安工程大学电子信息学院,2024级研究生
研究方向:机械视觉与人工智能
电子邮件:1969337336@qq.com

高金年,男,西安工程大学电子信息学院,2024级研究生,张宏伟人工智能课题组
研究方向:机器人与智能装备控制技术
电子邮件:2432529790@qq.com

2. 算法介绍

2.1 什么是 PCA:

PCA : 是一种常用的降维算法。通过线性变换将高维数据投影到低维空间,同时保留数
据的主要特征,目标是减少数据的维度,同时尽可能保留数据的方差信息。

2.2 PCA 的核心思想:

方差最大化:找到数据中方差最大的方向(主成分),作为新的坐标轴。
降维:选择前 k个主成分,将数据从高维空间投影到低维空间。
去相关性:通过正交变换,使新的特征之间不相关。

2.3 PCA在手写数字识别中的应用

在Kaggle手写数字识别任务中,PCA降维算法就像是一个“数据压缩器”,它能够将复杂的图像数据简化,同时保留关键信息。具体来说,手写数字的图像数据是由28×28像素组成的,这意味着每个图像有784个特征。PCA的作用是将这些784个特征压缩到更少的维度,例如50维,这样可以大大减少数据的复杂性,提高后续模型的训练效率。
在这个过程中,PCA通过寻找数据中最重要的“方向”来实现降维。这些“方向”实际上是一些新的特征,它们能够最大程度地保留原始数据的变异性和信息。通过这种方式,PCA不仅减少了数据的维度,还去除了噪声和冗余信息,使得模型能够更专注于重要的特征,从而提高识别手写数字的准确率。

3. 数据集介绍

(1) 来源:https://www.kaggle.com/c/digit-recognizer/data
(2) 内容:包含 28x28 像素的手写数字图像,每个像素值为 0-255。
(3) 规模:训练集:60,000 张图像。测试集:10,000 张图像。
(4) 标签:每张图像对应一个数字标签(0-9)。
数据集展示图:
在这里插入图片描述
可视化结果图:在这里插入图片描述

4. 代码实现

# 导入必要的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
import joblib  # 用于保存和加载模型# 1. 加载数据集
data = pd.read_csv('../数据集文件夹/train.csv')
X = data.iloc[:, 1:].values  # 特征 (784维,28x28像素)
y = data.iloc[:, 0].values   # 标签 (0-9的数字类别)# 2. 数据标准化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)# 3. 应用PCA降维
pca = PCA(n_components=0.95, random_state=42)
X_pca = pca.fit_transform(X_scaled)
print(f"降维后的特征维度: {X_pca.shape[1]}")# 4. 划分训练集和测试集
# 注意:这里同时划分原始数据 X 和降维后的数据 X_pca
X_train, X_test, y_train, y_test, X_train_orig, X_test_orig = train_test_split(X_pca, y, X, test_size=0.1, random_state=42)# 5. 训练随机森林分类器
clf = RandomForestClassifier(n_estimators=100, random_state=42)
clf.fit(X_train, y_train)# 6. 预测测试集
y_pred = clf.predict(X_test)# 7. 计算模型准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"模型准确率: {accuracy * 100:.2f}%")# 8. 混淆矩阵
print("\n混淆矩阵:")
conf_matrix = confusion_matrix(y_test, y_pred)
print(conf_matrix)# 9. 分类报告
print("\n分类报告:")
class_report = classification_report(y_test, y_pred)
print(class_report)# 10. 可视化模型的预测结果
def plot_sample_predictions(X_test_orig, y_test, y_pred, num_samples=5):plt.figure(figsize=(12, 6))for i in range(num_samples):idx = np.random.randint(0, len(X_test_orig))  # 随机选择一个样本image = X_test_orig[idx].reshape(28, 28)  # 将原始特征向量还原为28x28图像true_label = y_test[idx]pred_label = y_pred[idx]plt.subplot(1, num_samples, i + 1)plt.imshow(image, cmap='gray')plt.title(f"True: {true_label}\nPred: {pred_label}")plt.axis('off')plt.show()# 调用函数,展示5个样本的预测结果
plot_sample_predictions(X_test_orig, y_test, y_pred, num_samples=5)

5. 运行结果

混淆矩阵:
在这里插入图片描述
分类报告:
在这里插入图片描述
(1)混淆矩阵直观展示了模型在每个类别上的分类情况,可以帮助分析模型的分类错误。
(2)分类报告包括精确率(Precision),召回率(Recall),F1 分数(F1-score),支持数(Support)。可以全面评估模型在每个类别上的性能。识别模型的弱点,指导模型优化。
(3)通过混淆矩阵和分类报告,可以全面了解模型的分类性能。对于手写数字识别任务,可以分析模型在哪些数字上表现较差,并针对性地优化模型。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com