作者:泳鱼

来源:算法进阶

机器学习按照学习数据经验的不同,即训练数据的标签信息的差异,可以分为:

*监督学习(supervised learning)

*非监督学习(unsupervised learning)

*半监督学习(semi- supervised learning)

*强化学习(reinforcement learning)。

机器学习类别

监督学习

监督学习是机器学习中应用最广泛及成熟的,它是从有标签的数据样本(x,y)中,学习如何关联x到正确的y。这过程就像是模型在给定题目的已知条件(特征x),参考着答案(标签y)学习,借助标签y的监督纠正,模型通过算法不断调整自身参数以达到学习目标。

监督学习常用的模型有:线性回归、朴素贝叶斯、K最近邻、逻辑回归、支持向量机、神经网络、决策树、集成学习(如LightGBM)等。按照应用场景,以模型预测结果Y的取值有限或者无限的,可再进一步分为分类或者回归模型。

分类模型

分类模型是处理预测结果取值有限的分类任务。如下示例通过逻辑回归分类模型,根据温湿度、风速等情况去预测是否会下雨。

  • 逻辑回归简介

逻辑回归虽然名字有带“回归”,但其实它是一种广义线性的分类模型,由于模型简单和高效,在实际中应用非常广泛。

逻辑回归模型结构可以视为双层的神经网络(如图4.5)。模型输入x,通过神经元激活函数f(f为sigmoid函数)将输入非线性转换至0~1的取值输出,最终学习的模型决策函数为Y=sigmoid(wx + b)。其中模型参数w即对应各特征(x1, x2, x3...)的权重(w1,w2,w3...),b模型参数代表着偏置项,Y为预测结果(0~1范围)。

模型的学习目标为极小化交叉熵损失函数。模型的优化算法常用梯度下降算法去迭代求解损失函数的极小值,得到较优的模型参数。

  • 代码示例

示例所用天气数据集是简单的天气情况记录数据,包括室外温湿度、风速、是否下雨等,在分类任务中,我们以是否下雨作为标签,其他为特征(如图4.6)

import pandas as pd    # 导入pandas库
weather_df = pd.read_csv('./data/weather.csv')   # 加载天气数据集
weather_df.head(10)   # 显示数据的前10行from sklearn.linear_model import LogisticRegression  # 导入逻辑回归模型
x = weather_df.drop('If Rain', axis=1)  # 特征x
y = weather_df['If Rain']  # 标签y
lr = LogisticRegression()
lr.fit(x, y)  # 模型训练
print("前10个样本预测结果:", lr.predict(x[0:10]) ) # 模型预测前10个样本并输出结果

以训练的模型输出前10个样本预测结果为:[1 1 1 1 1 1 0 1 1 1],对比实际前10个样本的标签:[1 1 1 1 1 0 1 0 0 1],预测准确率并不高。在后面章节我们会具体介绍如何评估模型的预测效果,以及进一步优化模型效果。

回归模型

回归模型是处理预测结果取值无限的回归任务。如下代码示例通过线性回归模型,以室外湿度为标签,根据温度、风力、下雨等情况预测室外湿度。

  • 线性回归简介

线性回归模型前提假设是y和x呈线性关系,输入x,模型决策函数为Y=wx+b。模型的学习目标为极小化均方误差损失函数。模型的优化算法常用最小二乘法求解最优的模型参数。

  • 代码示例

from sklearn.linear_model import LinearRegression  #导入线性回归模型
x = weather_df.drop('Humidity', axis=1)  # 特征x
y = weather_df['Humidity']  # 标签y
linear = LinearRegression()linear.fit(x, y)  # 模型训练
print("前10个样本预测结果:", linear.predict(x[0:10]) ) # 模型预测前10个样本并输出结果

非监督学习

非监督学习也是机器学习中应用较广泛的,是从无标注的数据(x)中,学习数据的内在规律。这个过程就像模型在没有人提供参考答案(y),完全通过自己琢磨题目的知识点,对知识点进行归纳、总结。按照应用场景,非监督学习可以分为聚类,特征降维和关联分析等方法。如下示例通过Kmeans聚类划分出不同品种的iris鸢尾花样本。

  • Kmeans聚类简介

Kmeans聚类是非监督学习常用的方法,其原理是先初始化k个簇类中心,通过迭代算法更新各簇类样本,实现样本与其归属的簇类中心的距离最小的目标。其算法步骤为:1.初始化:随机选择 k 个样本作为初始簇类中心(可以凭先验知识、验证法确定k的取值);2.针对数据集中每个样本 计算它到 k 个簇类中心的距离,并将其归属到距离最小的簇类中心所对应的类中;3.针对每个簇类 ,重新计算它的簇类中心位置;4.重复上面 2 、3 两步操作,直到达到某个中止条件(如迭代次数,簇类中心位置不变等)

  • 代码示例

from sklearn.datasets import load_iris  # 数据集
from sklearn.cluster import KMeans   #  Kmeans模型
import matplotlib.pyplot as plt  # plt画图
lris_df = datasets.load_iris()  # 加载iris鸢尾花数据集,数据集有150条样本,分三类的iris品种
x = lris_df.data
k = 3  # 聚类出k个簇类, 已知数据集有三类品种, 设定为3
model = KMeans(n_clusters=k)
model.fit(x)  # 训练模型
print("前10个样本聚类结果:",model.predict(x[0:10]) ) # 模型预测前10个样本并输出聚类结果:[1 1 1 1 1 1 1 1 1 1]
# 样本的聚类效果以散点图展示
x_axis = lris_df.data[:,0] # 以iris花的sepal length (cm)特征作为x轴
y_axis = lris_df.data[:,1] # 以iris花的sepal width (cm)特征作为y轴
plt.scatter(x_axis, y_axis, c=model.predict(x)) # 分标签颜色展示聚类效果
plt.xlabel('Sepal length (cm)')#设定x轴注释
plt.ylabel('Sepal width (cm)')#设定y轴注释
plt.title('Iris KMeans Scatter')
plt.show()   # 如图4.7聚类效果

半监督学习

半监督学习是介于传统监督学习和无监督学习之间(如图4.8),其思想是在有标签样本数量较少的情况下,以一定的假设前提在模型训练中引入无标签样本,以充分捕捉数据整体潜在分布,改善如传统无监督学习过程盲目性、监督学习在训练样本不足导致的学习效果不佳的问题。按照应用场景,半监督学习可以分为聚类,分类及回归等方法。如下示例通过基于图的半监督算法——标签传播算法分类俱乐部成员。

  • 标签传播算法简介

标签传播算法(LPA)是基于图的半监督学习分类算法,基本思路是在所有样本组成的图网络中,从已标记的节点标签信息来预测未标记的节点标签。

  1. 首先利用样本间的关系(可以是样本客观关系,或者利用相似度函数计算样本间的关系)建立完全图模型。

  2. 接着向图中加入已标记的标签信息(或无),无标签节点是用一个随机的唯一的标签初始化。

  3. 将一个节点的标签设置为该节点的相邻节点中出现频率最高的标签,重复迭代,直到标签不变即算法收敛。

  • 代码示例

该示例的数据集空手道俱乐部是一个被广泛使用的社交网络,其中的节点代表空手道俱乐部的成员,边代表成员之间的相互关系。

import networkx as nx # 导入networkx图网络库
import matplotlib.pyplot as plt
from networkx.algorithms import community  # 图社区算法
G=nx.karate_club_graph()   # 加载美国空手道俱乐部图数据
#注: 本例未使用已标记信息, 严格来说是半监督算法的无监督应用案例
lpa = community.label_propagation_communities(G)  # 运行标签传播算法
community_index = {n: i for i, com in enumerate(lpa) for n in com} # 各标签对应的节点
node_color = [community_index[n] for n in G]  # 以标签作为节点颜色
pos = nx.spring_layout(G)  # 节点的布局为spring型
nx.draw_networkx_labels(G, pos) # 节点序号
nx.draw(G, pos, node_color=node_color) # 分标签颜色展示图网络
plt.title(' Karate_club network LPA')
plt.show() #展示分类效果,不同颜色为不同类别

强化学习

强化学习从某种程度可以看作是有延迟标签信息的监督学习(如图4.9),是指智能体Agent在环境Environment中采取一种行为action,环境将其转换为一次回报reward和一种状态表示state,随后反馈给智能体的学习过程。本书中对强化学习仅做简单介绍,有兴趣可以自行扩展。

9月11日,面基技术大佬,相约腾讯北京总部,立即扫码报名

技术

懂外语、会创作,机器高质量学习

福利

如何在众多简历中脱颖而出?

技术

YOLO 实现吸烟行为监测

资讯

史上最大规模 DDoS 攻击

分享

点收藏

点点赞

点在看

一文速览机器学习的类别(Python代码)相关推荐

  1. 【机器学习】一文速览机器学习的类别(Python代码)

    序列文章:上一篇    <白话机器学习概念> 一. 机器学习类别 机器学习按照学习数据经验的不同,即训练数据的标签信息的差异,可以分为监督学习(supervised learning).非 ...

  2. Pyecharts一文速学-绘制树形图实例+Python代码

    目录 前言 一.Tree树图 二.数据处理 点关注,防走丢,如有纰漏之处,请留言指教,非常感谢 前言 之前写pandas和matplotlib的时候说到了想要出一期Pyechart系列数据可视化的文章 ...

  3. 一文看懂Stacking!(含Python代码)

    一文看懂Stacking!(含Python代码) https://mp.weixin.qq.com/s/faQNTGgBZdZyyZscdhjwUQ 转载于:https://www.cnblogs.c ...

  4. 【机器学习】一文读懂层次聚类(Python代码)

    本篇和大家介绍下层次聚类,先通过一个简单的例子介绍它的基本理论,然后再用一个实战案例Python代码实现聚类效果. 首先要说,聚类属于机器学习的无监督学习,而且也分很多种方法,比如大家熟知的有K-me ...

  5. 史上最简单的spark教程第二十三章-运行第一个机器学习Java和Python代码案例

    [提前声明] 文章由作者:张耀峰 结合自己生产中的使用经验整理,最终形成简单易懂的文章 写作不易,转载请注明,谢谢! 代码案例地址: ?https://github.com/Mydreamandrea ...

  6. 一文详解层次聚类(Python代码)

    本篇想和大家介绍下层次聚类,先通过一个简单的例子介绍它的基本理论,然后再用一个实战案例Python代码实现聚类效果. 首先要说,聚类属于机器学习的无监督学习,而且也分很多种方法,比如大家熟知的有K-m ...

  7. 一文读懂层次聚类(Python代码)

    本篇想和大家介绍下层次聚类,先通过一个简单的例子介绍它的基本理论,然后再用一个实战案例Python代码实现聚类效果. 首先要说,聚类属于机器学习的无监督学习,而且也分很多种方法,比如大家熟知的有K-m ...

  8. 拥抱人工智能--机器学习(附python代码)

    机器学习简述 加入了代码,如果不想看代码请直接跳过,这不会产生任何影响 文章来自于云栖社区,修改及补充了一些内容,增添了代码 文章目录 机器学习简述 机器学习算法:是使计算机具有智能的关键 下面我们将 ...

  9. 一文全览机器学习建模流程(Python代码)

    作者:泳鱼 来源:算法进阶 引言 随着人工智能时代的到来,机器学习已成为解决问题的关键工具,如识别交易是否欺诈.预测降雨量.新闻分类.产品营销推荐.我们接下来会详细介绍机器学习如何应用到实际问题,并概 ...

最新文章

  1. The Android Gradle plugin supports only Kotlin Gradle plugin version 1.3.0 and higher.
  2. Linux 的数字权限意义
  3. Python3 模块 -- Fabric自动化模版
  4. wow修改人物模型_一张照片生成人物动画!三星最新AI研究成果出炉
  5. 【渝粤教育】国家开放大学2018年春季 0248-22T电工电子技术 参考试题
  6. PyTorch并行与分布式(一)概述
  7. 深入解析Invoke and BeginInvoke, 同步与异步解析
  8. SELinux permissive模式 设置
  9. 大江大河未来10年:中国人改变命运的的七次机遇
  10. Codeforces Round #622 (Div. 2) C2. Skyscrapers (hard version)-单调栈+dp
  11. 服务器阵列卡缓存显示错误,服务器阵列卡(缓存)
  12. 【答题游戏】最强王者--小游戏开发解析
  13. Region Proposal by Guided Anchoring 论文笔记
  14. 导出excel中文文件名乱码问题
  15. 面试现场说要轮岗,实际岗位是地推
  16. python 方差齐性检验_已知F和sig值_方差齐性 sig_如何判断方差齐性_怎么判断方差齐不齐...
  17. wps表格日期计算天数_如何计算Google表格中两个日期之间的天数
  18. 智能货架安全监测系统
  19. MybatisPlus多表联查分页多条件查
  20. 关于考试作弊引发的关于诚信的思考

热门文章

  1. PRD 的编写和修改注意事项
  2. LVM逻辑卷创建管理
  3. html中radio、checkbox选中状态研究(静下心来看,静下心来总结)
  4. C++:STL标准入门汇总
  5. ls和find命令查找的一些小技巧
  6. Linux 安装图形界面及远程连接
  7. 基于animation.css实现动画旋转特效
  8. jQuery中的Ajax----03
  9. MATLAB——scatter的简单应用
  10. Entity Framework CodeFirst数据迁移