# Machine_Learning_Experiments **Repository Path**: SinceraXY/Machine_Learning_Experiments ## Basic Information - **Project Name**: Machine_Learning_Experiments - **Description**: A comprehensive machine learning algorithms implementation and experimentation project, covering everything from basic clustering algorithms to deep learning implementations. - **Primary Language**: Python - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-03 - **Last Updated**: 2025-12-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 机器学习实验项目 **[English Version](README_EN.md) | 中文版本** 一个全面的机器学习算法实现和实验项目,包含从基础的聚类算法到深度学习的完整实现。 ## 🎯 项目概述 本项目实现了三个核心机器学习算法的完整代码框架: - **K-Means 聚类算法** - 无监督学习 - **朴素贝叶斯分类器** - 监督学习 - **卷积神经网络** - 深度学习 ## ✨ 主要特性 - ✅ **从零实现**: 所有算法均从基础数学原理开始实现 - ✅ **完整实验**: 包含数据预处理、模型训练、评估和可视化 - ✅ **教育友好**: 详细注释,适合学习和教学 - ✅ **实际应用**: 使用真实数据集进行验证 - ✅ **性能优化**: 包含模型选择和参数调优 ## 📁 项目结构 ``` Machine_Learning_Experiments/ ├── kmeans/ # K-均值聚类实现 │ ├── k_means.py # K-均值核心算法类 │ ├── K.py # 完整实验脚本(手肘法+轮廓系数) │ ├── final.py # 最终实验结果 │ ├── kmeans_dataset.csv # 聚类数据集 │ └── kmeans.txt # 实验说明文档 ├── Naive Bayes/ # 朴素贝叶斯分类器 │ ├── Naive Bayesian Code Framework/ │ │ ├── Bayes.py # 贝叶斯分类器核心实现 │ │ ├── DATA_Bayes.csv # 完整数据集 │ │ ├── DATA_Bayes_train.csv # 训练数据集 │ │ ├── DATA_Bayes_test.csv # 测试数据集 │ │ └── new data.py # 数据处理脚本 │ └── Example/ │ └── MLPClassifier例子.py # MLP分类器示例 ├── Convolutional Neural Network/ # 卷积神经网络 │ ├── ComputerVision/ │ │ ├── MNIST/ # MNIST手写数字识别 │ │ │ ├── Recognition.py # 基础CNN模型 │ │ │ ├── Recognition_with_attention.py # 注意力机制版本 │ │ │ ├── Recognition_with_data.py # 数据增强版本 │ │ │ ├── Recognition_with_data_and_attention.py # 完整版本 │ │ │ ├── add_test_data.py # 测试数据处理 │ │ │ ├── add_train_data.py # 训练数据处理 │ │ │ ├── score.py # 评分脚本 │ │ │ └── mnistData/ # MNIST数据目录 │ │ └── Data_Enhancement/ # 数据增强技术 │ │ └── data_enhancement.py │ └── 各代码及文件目录设置.txt ├── examples/ # 示例脚本目录 │ ├── README.md # 示例使用说明 │ ├── kmeans_example.py # K-means使用示例 │ ├── naive_bayes_example.py # 朴素贝叶斯使用示例 │ └── cnn_example.py # CNN使用示例 ├── LICENSE # 开源许可证 ├── requirements.txt # Python依赖包列表 ├── .gitignore # Git忽略文件配置 └── README.md # 项目说明文档 ``` ## 🚀 快速开始 ### 环境要求 ```bash Python >= 3.7 numpy >= 1.19.0 pandas >= 1.3.0 scikit-learn >= 1.0.0 torch >= 1.9.0 torchvision >= 0.10.0 matplotlib >= 3.3.0 seaborn >= 0.11.0 opencv-python >= 4.5.0 ``` ### 安装依赖 ```bash # 克隆仓库 git clone https://github.com/SinceraXY/Machine_Learning_Experiments.git cd Machine_Learning_Experiments # 安装依赖包 pip install -r requirements.txt ``` ## 📊 算法实现详情 ### 1. K-Means 聚类 **核心功能**: 无监督聚类算法,自动将数据分为K个簇 **主要文件**: `kmeans/k_means.py`, `kmeans/K.py` **特性**: - 从零实现K-means算法核心逻辑 - 支持手肘法(Elbow Method)确定最优K值 - 轮廓系数(Silhouette Score)评估聚类质量 - 可视化聚类结果和性能指标 **快速使用**: ```python from kmeans.k_means import KMeans import numpy as np # 创建示例数据 data = np.random.rand(100, 2) # 初始化K-means kmeans = KMeans(data, num_clusters=3) # 训练模型 centroids, labels = kmeans.train(max_iterations=50) ``` **运行完整实验**: ```bash cd kmeans python K.py ``` **数据集**: 项目包含真实的购物中心客户数据集 (`kmeans_dataset.csv`),包含客户性别、年龄、收入和消费评分等特征。 ### 2. 朴素贝叶斯分类器 **核心功能**: 基于贝叶斯定理的概率分类器 **主要文件**: `Naive Bayes/Naive Bayesian Code Framework/Bayes.py` **特性**: - 支持分类特征和数值特征混合处理 - 高斯朴素贝叶斯用于连续特征 - 多项式朴素贝叶斯用于离散特征 - 包含平滑处理避免零概率问题 **快速使用**: ```python from Naive_Bayes.Naive_Bayesian_Code_Framework.Bayes import NaiveBayesClassifier import torch # 初始化分类器 nbc = NaiveBayesClassifier() # 训练模型 nbc.fit(X_train, y_train, is_categorical=is_categorical_list) # 预测 predictions = nbc.predict(X_test) ``` **数据集**: 使用多特征分类数据集进行训练和测试,支持混合数据类型处理。 ### 3. 卷积神经网络 **核心功能**: 深度学习图像识别,专门用于MNIST手写数字识别 **主要文件**: - `Convolutional Neural Network/ComputerVision/MNIST/Recognition.py` - 多个变种实现支持不同技术 **特性**: - 完整的CNN架构实现 - 支持注意力机制 (Attention Mechanism) - 数据增强技术 (Data Augmentation) - 自定义数据集加载器 - GPU/CPU自适应训练 **模型变种**: 1. **基础版本** (`Recognition.py`) - 标准CNN实现 2. **注意力版本** (`Recognition_with_attention.py`) - 集成注意力机制 3. **数据增强版本** (`Recognition_with_data.py`) - 包含数据增强 4. **完整版本** (`Recognition_with_data_and_attention.py`) - 所有技术集成 **快速使用**: ```bash cd "Convolutional Neural Network/ComputerVision/MNIST" python Recognition.py ``` **数据集**: 支持自定义图像数据集和标准MNIST数据集,包含完整的数据加载和预处理管道。 ## 📈 实验结果 ### K-Means 聚类结果 - 使用手肘法确定最优聚类数量 - 通过轮廓系数评估聚类效果 - 可视化SSE和轮廓系数变化曲线 ### 朴素贝叶斯分类性能 - 支持混合数据类型处理 - 高效的概率计算 - 良好的分类准确率 ### CNN图像识别效果 - MNIST数据集上达到高准确率 - 支持多种网络架构优化 - 注意力机制显著提升性能 ## 🔧 高级用法 ### 自定义数据集 每个算法都支持自定义数据集输入: ```python # K-Means your_data = pd.read_csv('your_dataset.csv') kmeans = KMeans(your_data, num_clusters=desired_k) # Naive Bayes nbc = NaiveBayesClassifier() nbc.fit(your_X, your_y, is_categorical=your_feature_types) # CNN custom_dataset = CustomDataset(image_folder, label_file, transform=pipeline) ``` ### 参数调优 项目包含完整的参数调优示例: - K-Means: K值选择、初始化方法 - 朴素贝叶斯: 平滑参数、特征选择 - CNN: 学习率、批大小、网络结构 ## 🧪 运行测试 ```bash # 测试K-Means算法 cd kmeans && python K.py # 测试朴素贝叶斯 cd "Naive Bayes/Naive Bayesian Code Framework" && python Bayes.py # 测试CNN模型 cd "Convolutional Neural Network/ComputerVision/MNIST" && python Recognition.py ``` ## 📚 学习资源 本项目适合以下学习场景: - 🎓 **机器学习课程**: 理解算法原理和实现 - 🔬 **算法研究**: 对比不同方法的效果 - 💻 **实践项目**: 真实数据集上的应用 - 📖 **代码学习**: 查看详细的算法实现 ## 🤝 贡献指南 欢迎提交Issue和Pull Request! 1. Fork 项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交变更 (`git commit -m 'Add some AmazingFeature'`) 4. 推送分支 (`git push origin feature/AmazingFeature`) 5. 开启 Pull Request ## 📄 许可证 本项目采用 MIT 许可证。详见 [LICENSE](LICENSE) 文件。 ## 👨‍💻 作者 **小彭同学** - 邮箱: [2952671670@qq.com](mailto:2952671670@qq.com) - GitHub: [https://github.com/SinceraXY](https://github.com/SinceraXY) ## 🙏 致谢 - 感谢所有开源机器学习库的贡献者 - 特别感谢PyTorch和Scikit-learn社区 - 感谢提供数据集的研究机构 --- ⭐ 如果这个项目对你有帮助,请给个Star! ⭐ If this project helps you, please give it a Star!