1.什么是机器学习

(引用:[Datawhale](https://github.com/datawhalechina/team-learning-data-mining/blob/master/EnsembleLearning/CH2-%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80%E6%A8%A1%E5%9E%8B%E5%9B%9E%E9%A1%BE/%E7%AC%AC%E4%BA%8C%E7%AB%A0%EF%BC%9A%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E5%9F%BA%E7%A1%80.ipynb))

什么是机器学习?机器学习的一个重要的目标就是利用数学模型来理解数据,发现数据中的规律,用作数据的分析和预测。数据通常由一组向量组成,这组向量中的每个向量都是一个样本,我们用xixi来表示一个样本,其中i=1,2,3,...,Ni=1,2,3,...,N,共N个样本,每个样本xi=(xi1,xi2,...,xip,yi)xi=(xi1,xi2,...,xip,yi)共p+1个维度,前p个维度的每个维度我们称为一个特征,最后一个维度yiyi我们称为因变量(响应变量)。特征用来描述影响因变量的因素,如:我们要探寻身高是否会影响体重的关系的时候,身高就是一个特征,体重就是一个因变量。通常在一个数据表dataframe里面,一行表示一个样本xixi,一列表示一个特征。
根据数据是否有因变量,机器学习的任务可分为:有监督学习无监督学习

  • 有监督学习:给定某些特征去估计因变量,即因变量存在的时候,我们称这个机器学习任务为有监督学习。如:我们使用房间面积,房屋所在地区,环境等级等因素去预测某个地区的房价。
  • 无监督学习:给定某些特征但不给定因变量,建模的目的是学习数据本身的结构和关系。如:我们给定某电商用户的基本信息和消费记录,通过观察数据中的哪些类型的用户彼此间的行为和属性类似,形成一个客群。注意,我们本身并不知道哪个用户属于哪个客群,即没有给定因变量

根据因变量的是否连续,有监督学习又分为回归分类

  • 回归:因变量是连续型变量,如:房价,体重等。
  • 分类:因变量是离散型变量,如:是否患癌症,西瓜是好瓜还是坏瓜等。

为了更好地叙述后面的内容,我们对数据的形式作出如下约定:

在学习机器学习中,我们经常使用scikit-learn简称sklearn工具库来探索机器学习项目,下面我们开始使用sklearn来演示这几个具体的概念:

# 引入相关科学计算包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use("ggplot")
import seaborn as sns

1.1 回归

首先,我们先来看看有监督学习中回归的例子,我们使用sklearn内置数据集Boston房价数据集。sklearn中所有内置数据集都封装在datasets对象内: 返回的对象有:

  • data:特征X的矩阵(ndarray)
  • target:因变量的向量(ndarray)
  • feature_names:特征名称(ndarray)
from sklearn import datasets
boston = datasets.load_boston()     # 读取波士顿数据集,返回一个类似于字典的类
X = boston.data
y = boston.target
features = boston.feature_names
boston_data = pd.DataFrame(X,columns=features)
boston_data["Price"] = y
boston_data.head() #查看数据集内容

sns.scatterplot(boston_data['NOX'],boston_data['Price'],color="r",alpha=0.6)
plt.title("Price~NOX")
plt.show()

plt.scatter(boston_data['NOX'],boston_data['Price'],color="r",alpha=0.6) #使用Matplotlib
plt.title("Price~NOX")
plt.show()

我们可以看到,数据给定任务所需要的因变量,因变量为波士顿房价Price是一个连续型变量,所以这是一个回归的例子。

各个特征的相关解释:

  • CRIM:各城镇的人均犯罪率
  • ZN:规划地段超过25,000平方英尺的住宅用地比例
  • INDUS:城镇非零售商业用地比例
  • CHAS:是否在查尔斯河边(=1是)
  • NOX:一氧化氮浓度(/千万分之一)
  • RM:每个住宅的平均房间数
  • AGE:1940年以前建造的自住房屋的比例
  • DIS:到波士顿五个就业中心的加权距离
  • RAD:放射状公路的可达性指数
  • TAX:全部价值的房产税率(每1万美元)
  • PTRATIO:按城镇分配的学生与教师比例
  • B:1000(Bk - 0.63)^2其中Bk是每个城镇的黑人比例
  • LSTAT:较低地位人口
  • Price:房价

1.2 分类

我们来看看一个分类的例子,我们来看看大名鼎鼎的iris数据集:

from sklearn import datasets
iris = datasets.load_iris()
X = iris.data
y = iris.target
features = iris.feature_names
iris_data = pd.DataFrame(X,columns=features)
iris_data['target'] = y
iris_data.head()

# 使用Matplotlib可视化特征
marker = ['s','x','o']
for index,c in enumerate(np.unique(y)):plt.scatter(x=iris_data.loc[y==c,"sepal length (cm)"],y=iris_data.loc[y==c,"sepal width (cm)"],alpha=0.8,label=c,marker=marker[c])
plt.xlabel("sepal length (cm)")
plt.ylabel("sepal width (cm)")
plt.legend()
plt.show()

# 使用seaborn可视化特征
marker = ['s','x','o']
for index,c in enumerate(np.unique(y)):sns.scatterplot(x=iris_data.loc[y==c,"sepal length (cm)"],y=iris_data.loc[y==c,"sepal width (cm)"],alpha=0.8,label=c,marker=marker[c])
plt.xlabel("sepal length (cm)")
plt.ylabel("sepal width (cm)")
plt.legend()
plt.show()

我们可以看到:每种不同的颜色和点的样式为一种类型的鸢尾花,数据集有三种不同类型的鸢尾花。因此因变量是一个类别变量,因此通过特征预测鸢尾花类别的问题是一个分类问题。

各个特征的相关解释:

  • sepal length (cm):花萼长度(厘米)
  • sepal width (cm):花萼宽度(厘米)
  • petal length (cm):花瓣长度(厘米)
  • petal width (cm):花瓣宽度(厘米)

1.3 无监督学习

我们可以使用sklearn生成符合自身需求的数据集,下面我们用其中几个函数例子来生成无因变量的数据集:
https://scikit-learn.org/stable/modules/classes.html?highlight=datasets#module-sklearn.datasets

# 使用Matplotlib生成月牙型非凸集
from sklearn import datasets
x, y = datasets.make_moons(n_samples=2000, shuffle=True,noise=0.05, random_state=None)
for index,c in enumerate(np.unique(y)):plt.scatter(x[y==c,0],x[y==c,1],s=7)
plt.show()

# 使用seaborn生成月牙型非凸集
from sklearn import datasets
x, y = datasets.make_moons(n_samples=2000, shuffle=True,noise=0.05, random_state=None)
for index,c in enumerate(np.unique(y)):sns.scatterplot(x[y==c,0],x[y==c,1],s=7)
plt.show()

# 使用Matplotlib生成符合正态分布的聚类数据
from sklearn import datasets
x, y = datasets.make_blobs(n_samples=5000, n_features=2, centers=3)
for index,c in enumerate(np.unique(y)):plt.scatter(x[y==c, 0], x[y==c, 1],s=7)
plt.show()

# 使用seaborn生成符合正态分布的聚类数据
from sklearn import datasets
x, y = datasets.make_blobs(n_samples=5000, n_features=2, centers=3)
for index,c in enumerate(np.unique(y)):sns.scatterplot(x[y==c, 0], x[y==c, 1],s=7)
plt.show()

Datawhale集成学习笔记:熟悉机器学习的三大主要任务相关推荐

  1. Datawhale集成学习笔记:XGBOOST算法

    引用:Datawhale XGBoost算法 XGBoost是陈天奇等人开发的一个开源机器学习项目,高效地实现了GBDT算法并进行了算法和工程上的许多改进,被广泛应用在Kaggle竞赛及其他许多机器学 ...

  2. 【组队学习】【23期】Datawhale集成学习(上)

    集成学习(上) 开源内容:https://github.com/datawhalechina/team-learning-data-mining/tree/master/IntegratedLearn ...

  3. 集成学习--百面机器学习

    集成学习--百面机器学习 集成学习 boosting & bagging 读书笔记--<百面机器学习> 作者:诸葛越,葫芦娃 集成学习分哪几种?他们有何异同? <

  4. Jenkins持续集成学习笔记(2020.11.22)

    Jenkins持续集成学习笔记(2020.11.22) 前言: (官网) 以前很久学习过Jenkins持续集成进行快速部署项目进行测试, 最近换工作了, 发现新公司有用到, 现在来复习一下 官网介绍: ...

  5. 【财务会计学习笔记】——财务的三大报表

    [财务会计学习笔记]--财务的三大报表 财务的三张报表是什么 三张财务报表的勾稽关系 财务报告为啥被需要? 财务报表如何反映业务实质? 总结 财务的表现是以财务报表为核心体现企业的经营状况. 财务的三 ...

  6. 集成学习(上):机器学习基础task1-熟悉机器学习的三大主要任务

    机器学习基础task1-熟悉机器学习的三大主要任务 1.导论 1.1 回归 1.2 分类 1.3 无监督学习 学习内容来源链接 1.导论 什么是机器学习?机器学习的一个重要的目标就是利用数学模型来理解 ...

  7. Datawhale集成学习:Stacking 算法与实战

    前言 Stacking核心思想 stacking严格来说并不是一种算法,而是精美而又复杂的,对模型集成的一种策略. Stacking集成算法可以理解为一个两层的集成,第一层含有多个基础分类器,把预测的 ...

  8. DataWhale集成学习(中)——Task09提升(Boosting)方法和Adaboost

    目 录 Boosting方法 AdaBoost算法 AdaBoost案例 Bagging的核心是bootstrap,得到几组不同的训练数据集,主要通过降低 方差来减少预测误差: Boosting则是对 ...

  9. 影像组学视频学习笔记(37)-机器学习模型判断脑卒中发病时间(文献报告)、Li‘s have a solution and plan.

    作者:北欧森林 链接:https://www.jianshu.com/p/3e7a2c84288e 来源:简书,已获授权转载 RadiomicsWorld.com "影像组学世界" ...

  10. 逻辑斯蒂回归_逻辑斯蒂回归详细解析 | 统计学习方法学习笔记 | 数据分析 | 机器学习...

    本文包括: 重要概念 逻辑斯蒂回归和线性回归 二项逻辑斯谛回归模型 逻辑斯蒂回顾与几率 模型参数估计 多项逻辑斯谛回归 其它有关数据分析,机器学习的文章及社群 1.重要概念: 在正式介绍逻辑斯蒂回归模 ...

最新文章

  1. 大牛实战归纳——Kafka架构原理
  2. 100内奇数之和流程图_Python进阶记录之基础篇(四)
  3. Node中的Http模块和Url模块的使用
  4. VTK修炼之道53:图形基本操作进阶_多分辨率策略(模型细化的三种方法)
  5. boost::mpl模块实现sort相关的测试程序
  6. php单表显示动态下拉框,PHP:使用optgroup动态下拉列表
  7. 7-14 电话聊天狂人 (25 分)map做法 + 详解 + 思路分析
  8. 用python绘制一条直线_python绘制直线的方法
  9. MySql:函数总结
  10. 上过云么?一行代码秒上云体验过么?
  11. linux删除csv换行符,从CSV保存行删除换行符(Remove linefeed from csv preserving r
  12. MSG_NOSIGNAL
  13. springboot @datetimeformat 标注在参数上无效_Spring Boot 中必须掌握的 45 个注解
  14. 为什么微信、Facebook都在做企业通信软件
  15. Eclipse热部署JSP
  16. C++实现数组类模板
  17. MyBatis分页插件PageHelper
  18. 分布式系统必读中文版-分布式系统模式-分享
  19. 关于被调函数形参:SqList L、SqList L、SqList *L 的区别
  20. html的各种标签详解

热门文章

  1. python画喜羊羊代码_PYTHON养成日记 DAY-7
  2. 张靓颖同学2006年日程表
  3. php deflate 解压,PHP编码gzdeflate与Golang解码DEFLATE
  4. Visual reasoning
  5. Lake Counting
  6. Smartbi报表工具的学习笔记,如何学好报表分析?
  7. 实践篇(4):Apache jena SPARQL endpoint及推理
  8. 【LeetCode】275. H指数 II
  9. 流批OLAP一体的flink引擎
  10. Burp Proxy