1、机器学习入门

一、什么是机器学习?

  • 机器学习是人工智能(AI)的一部分,研究如何让计算机从数据学习某种规律
  • 机器学习并不是人工智能的全部,也不等同于人工智能;
  • 人工智能 > 机器学习 > 深度学习
人工智能范畴.png

备注:手工创建的规则,属于AI,不属于ML

二、机器学习 VS 数据挖掘 VS 大数据

机器学习 VS 大数据.png

三、理解机器学习

  • 通过计算机程序根据数据去优化一个评价指标;
  • 自动的从数据发现规律,使用这些规律作出预测;
  • 根据过去预测未来。

机器学习别名:

  • 推理/估计:统计学
  • 模式识别

四、机器学习家族

  • 监督式学习 -- 训练数据包括输入和预期的输出
    • 分类
      • 垃圾邮件/短信检测
      • 自动车牌号识别
      • 人脸识别
      • 手写字符识别
      • 语音识别
      • 医疗图片的病症诊断
      • ......
    • 回归
      • 二手车股价
      • 股票价格预测
      • 气温预测
      • 自动驾驶
      • ......
  • 非监督式学习 -- 训练数据只有输入,没有预期的输出
    • 聚类: 把对象分成不同的子集(subset),使得属于同一个子集中的成员对象都有相似的一些属性

五、机器学习流程

机器学习流程.png
  1. 数据获取
  2. 数据清洗
  3. 特征工程
  4. 预处理
    • 特征提取
    • 处理缺失数据
    • 数据定标
      • 归一化
      • 标准化
    • 数据转换
  5. 选择机器学习模型
  6. 模型训练 <==> 模型调参
  7. 模型部署

六、线性回归示例 1

Question:

你所在的公司在电视上做产品广告, 收集到了电视广告投入x(以百万为单位)与产品销售量y(以亿为单位)的数据. 你作为公司的数据科学家, 希望通过分析这些数据, 了解电视广告投入x(以百万为单位)与产品销售量y的关系.

假设x与y的之间的关系是线性的, 也就是说 y = ax + b. 通过线性回归(Linear Regression), 我们就可以得知 a 和 b 的值. 于是我们在未来做规划的时候, 通过电视广告投入x, 就可以预测产品销售量y, 从而可以提前做好生产和物流, 仓储的规划. 为客户提供更好的服务.

data:
    TV  sales
0   230.1   22.1
1   44.5    10.4
2   17.2    9.3
3   151.5   18.5
4   180.8   12.9
5   8.7 7.2
6   57.5    11.8
7   120.2   13.2
8   8.6 4.8
9   199.8   10.6
10  66.1    8.6
... ... ...

Script Demo:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
  1. 加载数据
# 加载数据
data = pd.read_csv('data/Advertising.csv')
# 查看部分数据
data.head()
# 查看列索引
data.columns
# 查看行索引
data.index

# 通过数据可视化分析数据
plt.figure(figsize=(16, 8))
plt.scatter(data['TV'], data['sales'], c='blue')
plt.xlabel('Money spent on TV ads (million)')
plt.ylabel('Sales (hundred million)')
plt.show()

散点图

数据可视化.png

  1. 训练线性回归数据
# 训练线性回归数据
X = data['TV'].values.reshape(-1, 1)
y = data['sales'].values.reshape(-1, 1)

reg = LinearRegression()
reg.fit(X, y)
  1. 打印线性模型
reg.coef_[0][0]
reg.intercept_[0]
print('a = {:.5}'.format(reg.coef_[0][0]))
print('b = {:.5}'.format(reg.intercept_[0]))
print('线性模型:y = {:.5}X + {:.5}'.format(reg.coef_[0][0], reg.intercept_[0]))

打印结果:
>>> a = 0.047537
>>> b = 7.0326
>>> 线性模型:y = 0.047537X + 7.0326

  1. 可视化训练好的线性回归模型
# 可视化训练好的线性回归模型
predictions = reg.predict(X)
plt.figure(figsize=(16, 8))
plt.scatter(data['TV'], data['sales'], c='black')
plt.plot(data['TV'], predictions, c='blue', linewidth=2)
plt.xlabel('Money spent on TV ads (million)')
plt.ylabel('Sales (hundred million)')
plt.show()

散点图

模型可视化.png

  1. 预测
test = [[100], [200], [300]]
predictions = reg.predict(test)
for investment, prediction in zip(test, predictions):
    print('>>> 投入{:.2}亿元,预计销售量:{:.5}'.format(investment[0]/100.0, prediction[0]))

打印结果:
>>> 投入1.0亿元,预计销售量:11.786
>>> 投入2.0亿元,预计销售量:16.54
>>> 投入3.0亿元,预计销售量:21.294

七、线性回归示例 2

Question:

气温会随着海拔高度的升高而降低, 我们可以通过测量不同海拔高度的气温来预测海拔高度和气温的关系. 我们假设海拔高度和气温的关系可以使用如下公式表达: y(气温) = a * x(海拔高度) + b

理论上来讲, 确定以上公式 a 和 b的值只需在两个不同高度测试, 就可以算出来 a 和 b 的值了. 但是由于所有的设备都是有误差的, 而使用更多的高度测试的值可以使得预测的值更加准确. 我们提供了在9个不同高度测量的气温值, 请你根据今天学习的线性回归方法预测 a 和 b 的值. 根据这个公式, 我们预测一下在8000米的海拔, 气温会是多少?

data:
height  temperature
0   0.0 12.834044
1   500.0   10.190649
2   1000.0  5.500229
3   1500.0  2.854665
4   2000.0  -0.706488
5   2500.0  -4.065323
6   3000.0  -7.127480
7   3500.0  -10.058879
8   4000.0  -13.206465

Script Demo:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
  1. 加载数据
# 加载数据
data = pd.read_csv('exercise/height.vs.temperature.csv')
# 查看部分数据
data.head()
# 查看列索引
data.columns
# 查看行索引
data.index
  1. 可视化分析数据
plt.figure(figsize=(16, 8))
plt.scatter(data['height'], data['temperature'], c='blue')
plt.xlabel('height (m)')
plt.ylabel('temperature (℃)')
plt.show()

散点图

数据可视化.png

  1. 训练线性回归模型
X = data['height'].values.reshape(-1, 1)
y = data['temperature'].values.reshape(-1, 1)
reg = LinearRegression()
reg.fit(X, y)
  1. 打印线性模型
reg.coef_[0][0]
reg.intercept_[0]
print('>>> a = {:.6}'.format(reg.coef_[0][0]))
print('>>> b = {:.6}'.format(reg.intercept_[0]))
print('>>> 线性模型:y = {:.6}X + {:.6}'.format(reg.coef_[0][0], reg.intercept_[0]))

打印结果:
>>> a = -0.00656953
>>> b = 12.7185
>>> 线性模型:y = -0.00656953X + 12.7185

  1. 可视化线性回归模型
predictions = reg.predict(X)
plt.figure(figsize=(16, 8))
plt.scatter(data['height'], data['temperature'], c='black')
plt.plot(data['height'], predictions, c='blue', linewidth=2)
plt.show()

散点图

模型可视化.png

  1. 预测
test = [[8000], [9000], [10000]]
predictions = reg.predict(test)
for height, temperature in zip(test, predictions):
    print(height)
    print(temperature)
    print('>>> 海拔{}m,气温为:{:.6}℃'.format(height[0], temperature[0]))

打印结果:
>>> 海拔8000m,气温为:-39.8378℃
>>> 海拔9000m,气温为:-46.4073℃
>>> 海拔10000m,气温为:-52.9768℃

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335