机器学习学习笔记——以波士顿房价问题为例

本文是机器学习初学者的学习笔记,以波士顿房价预测为例,介绍了机器学习的基本概念,包括监督学习的回归和分类,无监督学习的聚类。文章通过加载sklearn的波士顿房价数据集,进行散点图绘制和回归分析,重点讨论了最小二乘法在求解最优模型中的应用。
摘要由CSDN通过智能技术生成

前言

说起入坑机器学习,还是因为在学校一个偶然的机会:那时候在我们教三楼验收数据库课设,然后去学办逛了逛,就看到了有一个百度菁英俱乐部的创立请求书,然后觉得百度这个头衔听牛批的,并且主席刚好是我的一个朋友,然后就找到了他,当天中午去参加了面试(没有走后门嗷),还是正经的写了简历和做了题目的,然后一个研究生学长面试我们(我也比较熟),由于想学技术,就选了技术部,刚好他问的问题我都有所了解,然后就顺利通过了面试。(难道这个俱乐部就是为我准备的?哈哈哈)。后面就开始学了,部门里每周都会安排培训,讲解一些学习过程中的核心内容,然后平时的课余时间就是看书,看视频入门,总之刚开始的时候是极其的枯燥乏味,并且有的书会经常讲一些数学公式啥的,由于之前学的高数、概率论、线代啥的忘得差不多了,理解起来非常的吃力。后面逛了逛知乎和一些前辈的博客,我了解到,刚入门的时候是没有必要一下子搞懂所有数学推导公示的,就算你懂了,花费了大量的时间不说,不能实时应用,学了没多一会儿就容易忘了,这不是在做无用功。所以我们只需要了解机器学习是干啥的,有哪些方法/算法可以用于实现机器学习,这些方法的思想是什么,这么多方法,我们应该怎么选择合适的算法去实现,如何评价机器学习算法模型的优劣等等知识,让你的脑子里有一个大体的运用机器学习解决一些问题的框架就行,并且你还不用了解的特别深入,毕竟这只是入门而已,刚开始学的太多,不然就是“机器学习从入门到放弃”了。

什么是机器学习?

以下是百度百科里面对机器学习的定义:

机器学习是一门多学科交叉专业,涵盖概率论知识,统计学知识,近似理论知识和复杂算法知识,使用计算机作为工具并致力于真实实时的模拟人类学习方式, 并将现有内容进行知识结构划分来有效提高学习效率。

简单来说,机器学习是从现有的数据中自动分析获得一个或多个模型,再通过这个模型对未知的数据进行预测。这很像我们人类学习知识的过程,先在一堆乱七八糟的数据里面寻找一些规律,通过这些规律去解决其他问题,就是老师经常说的“举一反三”,包括你解数学题,先跟着老师解一个题,后面你再去做家庭作业做其他类似的题。

机器学习分类

一般分为两类:监督学习和无监督学习
而监督学习又分为回归和分类问题
无监督学习分为聚类和关联分析

监督学习

百度百科定义:

利用一组已知类别的样本调整分类器的参数,使其达到所要求性能的过程,也称为监督训练或有教师学习。
监督学习是从标记的训练数据来推断一个功能的机器学习任务。训练数据包括一套训练示例。在监督学习中,每个实例都是由一个输入对象(通常为矢量)和一个期望的输出值(也称为监督信号)组成。监督学习算法是分析该训练数据,并产生一个推断的功能,其可以用于映射出新的实例。一个最佳的方案将允许该算法来正确地决定那些看不见的实例的类标签。这就要求学习算法是在一种“合理”的方式从一种从训练数据到看不见的情况下形成。

监督学习需要人为的操作,为我们的数据添加标记,通过这些标记来训练我们的模型,标记的选择和添加对模型的好坏有着很大的影响。说白了就是我们教机器怎么做事,他根据我们给出的解决问题方法(模型)来解决其他的问题。

回归

回归:从一组数据出发,确定某些变量之间的定量关系式;即建立数学模型并估计未知参数。
回归的目的是预测数值型的目标值,它的目标是接受连续数据,寻找最适合数据的方程,并能够对特定值进行预测。这个方程称为回归方程,而求回归方程显然就是求该方程的回归系数,求这些回归系数的过程就是回归。

回归问题的目标值是连续的数据,这跟我们高中所学习的回归问题有异曲同工之妙。不过高中所学习的回归问题大都比较简单,一般都是线性的。机器学习中的回归问题不只是普通的求解一个回归方程而已,后面还需要大量的工作来实现模型的优化检验等一系列问题。

分类

分类就是在已有数据的基础上学习出一个分类函数或构造出一个分类模型,这就是通常所说的分类器。该函数或者模型能够把数据集中的样本x映射到某个给定的类别y,从而用于数据预测。

分类问题的预测值(目标值)是离散的数据。就是把一组数据值归类嘛,像是识别某个图片是不是猫,一组图片是、一组不是,不就是分类问题嘛。分类有两步:第一步,分析数据集特点创建分类模型(选用适合的算法);第二步,使用构建好的模型测试数据集,评估这个模型的好坏,选择分类效果好的模型。
监督学习常用算法有:线性回归、逻辑回归、高斯判别分析、朴素贝叶斯、决策树、神经网络、支持向量机、协同过滤等。

无监督学习

百度百科定义:

现实生活中常常会有这样的问题:缺乏足够的先验知识,因此难以人工标注类别或进行人工类别标注的成本太高。很自然地,我们希望计算机能代我们完成这些工作,或至少提供一些帮助。根据类别未知(没有被标记)的训练样本解决模式识别中的各种问题,称之为无监督学习。

无监督学习就跟监督学习相反,很多情况下,我们也不知道这个问题应该有一种什么模型来解决,也不知道这类问题之间的数据有什么关联或者说他们之间的关联很难表示出来,这时候我们就希望通过某一种或几种特定的模型来让计算机得到其中的关系。这更像是自学,没有老师教。
这跟我们平时考试做题差不多,监督学习像是那些有标准答案的科目,我们通过答案来分析解决这一类问题;而无监督学习则像是没有标准答案,我们根据自己的知识储备来解决这些问题,可能效果很好,也可能不尽如人意。

聚类

聚类就是将数据集划分为由若干相似实例组成的簇的过程,使得同一个簇中实例间的相似度最大化,不同簇中实例间的相似度最小化。也就是说,一个簇就是由彼此相似的一组对象所构成的集合,不同簇中的实例通常不相似或相似度很低。聚类是由样本间相似性的度量标准将数据集自动划分为几个簇,簇是怎么样的没有事先的定义,而是根据实际数据的特征按照数据之间的相似性来定义的。就像是老话说的“物以类聚,人以群分”。聚类分析算法的输入是一组样本及一个度量样本间相似度的标准,输出是簇的集合。

一个小例子

波士顿房价预测

我们借助sklearn这么一个基于python语言的机器学习工具,用机器学习方法来简单的预测一下波士顿房价的走向。

1.导入数据

sklearn.datasets

  • 加载获取流行数据集
    • datasets.load_*()
      获取小规模数据集,数据包含在datasets里
    • datasets.fetch_*(data_home=None)
      获取大规模数据集,需要从网络上下载,函数的第一个参数是data_home,表示数据集下载的目录,默认是 ~/scikit_learn_data/
    • load和fetch返回的数据类型datasets.base.Bunch(字典格式)

其中一般:

  • data:特征数据数组,是 [n_samples * n_features] 的二维 numpy.ndarray 数组
  • target:标签数组,是 n_samples 的一维 numpy.ndarray 数组
  • DESCR:数据描述
  • feature_names:特征名,新闻数据,手写数字、回归数据集没有
  • target_names:标签名
    首先我们从sklearn中导入有关波士顿房价的数据
from sklearn.datasets import load_boston
data = load_boston(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值