热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

机器学习、数据挖掘和统计模式识别学习(Matlab代码实现)

    目录💥

       目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码



💥1 概述

机器学习是让计算机在没有明确编程的情况下采取行动的科学。在过去的十年中,机器学习为我们提供了自动驾驶汽车,实用的语音识别,有效的网络搜索以及对人类基因组的理解大大提高。机器学习在今天是如此普遍,以至于你可能每天使用它几十次而不自知。许多研究人员还认为,这是朝着人类水平的人工智能取得进展的最佳方式。在本代码中,您将了解最有效的机器学习技术,并获得实施它们并让它们为自己工作的练习。更重要的是,您不仅将学习学习的理论基础,还将获得快速有效地将这些技术应用于新问题所需的实践知识。最后,您将了解硅谷在创新方面的一些最佳实践,因为它与机器学习和人工智能有关。本代码广泛介绍了机器学习、数据挖掘和统计模式识别。主题包括:(i)监督学习(参数/非参数算法,支持向量机,内核,神经网络)。(ii)无监督学习(聚类、降维、推荐系统、深度学习)。(iii)机器学习的最佳实践(偏差/方差理论;机器学习和人工智能的创新过程)。本课程还将借鉴众多案例研究和应用,以便您还将学习如何应用学习算法来构建智能机器人(感知、控制)、文本理解(网络搜索、反垃圾邮件)、计算机视觉、医学信息学、音频、数据库挖掘和其他领域。

📚2 运行结果

主函数部分代码:

%% Machine Learning Online Class

%  Exercise 6 | Spam Classification with SVMs

%

%  Instructions

%  ------------

%  This file contains code that helps you get started on the

%  exercise. You will need to complete the following functions:

%

%     gaussianKernel.m

%     dataset3Params.m

%     processEmail.m

%     emailFeatures.m

%

%  For this exercise, you will not need to change any code in this file,

%  or any other files other than those mentioned above.

%

%% Initialization

clear ; close all; clc

%% ==================== Part 1: Email Preprocessing ====================

%  To use an SVM to classify emails into Spam v.s. Non-Spam, you first need

%  to convert each email into a vector of features. In this part, you will

%  implement the preprocessing steps for each email. You should

%  complete the code in processEmail.m to produce a word indices vector

%  for a given email.

fprintf('\nPreprocessing sample email (emailSample1.txt)\n');

% Extract Features

file_contents = readFile('emailSample1.txt');

word_indices  = processEmail(file_contents);

% Print Stats

fprintf('Word Indices: \n');

fprintf(' %d', word_indices);

fprintf('\n\n');

fprintf('Program paused. Press enter to continue.\n');

pause;

%% ==================== Part 2: Feature Extraction ====================

%  Now, you will convert each email into a vector of features in R^n. 

%  You should complete the code in emailFeatures.m to produce a feature

%  vector for a given email.

fprintf('\nExtracting features from sample email (emailSample1.txt)\n');

% Extract Features

file_contents = readFile('emailSample1.txt');

word_indices  = processEmail(file_contents);

features      = emailFeatures(word_indices);

% Print Stats

fprintf('Length of feature vector: %d\n', length(features));

fprintf('Number of non-zero entries: %d\n', sum(features > 0));

fprintf('Program paused. Press enter to continue.\n');

pause;

%% =========== Part 3: Train Linear SVM for Spam Classification ========

%  In this section, you will train a linear classifier to determine if an

%  email is Spam or Not-Spam.

% Load the Spam Email dataset

% You will have X, y in your environment

load('spamTrain.mat');

fprintf('\nTraining Linear SVM (Spam Classification)\n')

fprintf('(this may take 1 to 2 minutes) ...\n')

C = 0.1;

model = svmTrain(X, y, C, @linearKernel);

p = svmPredict(model, X);

fprintf('Training Accuracy: %f\n', mean(double(p == y)) * 100);

%% =================== Part 4: Test Spam Classification ================

%  After training the classifier, we can evaluate it on a test set. We have

%  included a test set in spamTest.mat

% Load the test dataset

% You will have Xtest, ytest in your environment

load('spamTest.mat');

fprintf('\nEvaluating the trained Linear SVM on a test set ...\n')

p = svmPredict(model, Xtest);

fprintf('Test Accuracy: %f\n', mean(double(p == ytest)) * 100);

pause;

%% ================= Part 5: Top Predictors of Spam ====================

%  Since the model we are training is a linear SVM, we can inspect the

%  weights learned by the model to understand better how it is determining

%  whether an email is spam or not. The following code finds the words with

%  the highest weights in the classifier. Informally, the classifier

%  'thinks' that these words are the most likely indicators of spam.

%

% Sort the weights and obtin the vocabulary list

[weight, idx] = sort(model.w, 'descend');

vocabList = getVocabList();

fprintf('\nTop predictors of spam: \n');

for i = 1:15

    fprintf(' %-15s (%f) \n', vocabList{idx(i)}, weight(i));

end

fprintf('\n\n');

fprintf('\nProgram paused. Press enter to continue.\n');

pause;

%% =================== Part 6: Try Your Own Emails =====================

%  Now that you've trained the spam classifier, you can use it on your own

%  emails! In the starter code, we have included spamSample1.txt,

%  spamSample2.txt, emailSample1.txt and emailSample2.txt as examples. 

%  The following code reads in one of these emails and then uses your 

%  learned SVM classifier to determine whether the email is Spam or 

%  Not Spam

% Set the file to be read in (change this to spamSample2.txt,

% emailSample1.txt or emailSample2.txt to see different predictions on

% different emails types). Try your own emails as well!

filename = 'spamSample1.txt';

% Read and predict

file_contents = readFile(filename);

word_indices  = processEmail(file_contents);

x             = emailFeatures(word_indices);

p = svmPredict(model, x);

fprintf('\nProcessed %s\n\nSpam Classification: %d\n', filename, p);

fprintf('(1 indicates spam, 0 indicates not spam)\n\n');


🎉3 参考文献

​[1]谢宜鑫. 基于机器学习的建筑空调能耗数据挖掘和模式识别[D].北京交通大学,2019.

👨‍💻4 Matlab代码



推荐阅读
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 机器学习核心概念与技术
    本文系统梳理了机器学习的关键知识点,涵盖模型评估、正则化、线性模型、支持向量机、决策树及集成学习等内容,并深入探讨了各算法的原理和应用场景。 ... [详细]
  • 深入浅出TensorFlow数据读写机制
    本文详细介绍TensorFlow中的数据读写操作,包括TFRecord文件的创建与读取,以及数据集(dataset)的相关概念和使用方法。 ... [详细]
  • 本文档旨在帮助开发者回顾游戏开发中的人工智能技术,涵盖移动算法、群聚行为、路径规划、脚本AI、有限状态机、模糊逻辑、规则式AI、概率论与贝叶斯技术、神经网络及遗传算法等内容。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
author-avatar
海滨的微博小窝
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有