机器学习笔记 – 1.介绍(note)

本系列是笔者在贪心科技-机器学习教程的学习笔记, 补充有python相关的知识.初学机器学习, 还请多多指教.

监督学习

训练数据包含输入和预期输出

  1. 分类(枚举值)
  2. 回归(数值)

非监督学习

训练数据只有输入,没有预期输出

  1. 聚类

关于监督学习与非监督学习, 我的理解是:前者为有多少人工就有多少智能,本质上跟传统数据分析没有差别. 后者的目标更为模糊化, 是实现高级分析智能的基础.

当然在这个阶段对如此大的概念进行区分, 并没有太大必要. 我们继续看课程.

  • 特征工程 – 从目标对象中抽取特征信息, 比如苹果,可以选的特征有颜色,重量,温度等等, 针对不一样的场景需求, 特征工程选择不同的特征
  • 预处理 – 对特征进行预处理以方便后续分析, 主要有以下手段:
    • 特征提取(对特征进行转换, 把直接的特征变成可分析的. 似乎跟特征工程的定义有重合)
    • 处理缺失数据
    • 数据定标
      • Normalization/Min-Max-Scaler (归一化)
      • Standardization (标准化)
    • 数据转换:
      • One-Hot encoding
      • One/Two/MultiGram
      • Bag of words
      • 取对数

课后习题(线性回归预测气温)

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

# pd.read_csv方法返回类型为DataFrame
data = pd.read_csv("data/height.vs.temperature.csv")
data.head()

# data['height']得到一个1*N的矩阵(类型为ndarray)
# 通过reshape(x,y可以转为x*y的矩阵, 类型同样为ndarray,
# 用户需要自己保证数据转换后的结构一致性)
X = data['height'].values.reshape(-1, 1)
y = data['temperature'].values.reshape(-1, 1)

reg = LinearRegression()
reg.fit(X, y)

# temp = -0.0065695*height + 12.719
print('temp = {:.5}*height + {:.5}'
      .format(reg.coef_[0][0], reg.intercept_[0]))
# 8000米的气温: -39.838
print('8000米的气温: {:.5}'.format(reg.predict([[8000]])[0][0]))

plt.figure(figsize=(16, 8))
plt.scatter(data['height'], data['temperature'])
plt.xlabel("height")
plt.ylabel("temperature")
plt.show()

代码很简单,但是有几个numpypandas的概念这里深入一下 .

Series

是pandas定义的可索引的一维数组. 注意是可索引的, 而且索引的key和保存的value可以是任意类型. (key必须可hash)

s = pd.Series({1: 'a', 2: 'b', 3: 'c'}) # key可重复, 重复的key会覆盖旧值
v = s[1] # 获取key=1的值, 即a

DataFrame

是pandas定义的二维数组. 可以理解成通过字典(dict)封装的Series.

ndarray

即N-dimensional array, 是numpy中定义的一种数据结构,用来保存多维数组.

>>> x = np.array([[1, 2, 3], [4, 5, 6]], np.int32)
>>> type(x)
<type 'numpy.ndarray'>

上面我们创建了一个ndarray, 它的详细结构如下图. 可以看到包含了:

  • shape: 的tuple来定义ndarray的维度结构
  • dtype: 定义ndarray内部数据的类型
  • array: 保存数据的容器, 里面的元素可以是下一个维度的ndarray或者数据本身

发表评论

电子邮件地址不会被公开。

44 ÷ = 11