距离量度
欧氏距离:
曼哈顿距离也称为“城市街区距离”(City Block distance),曼哈顿城市特点:横平竖直:
切比雪夫距离:
国际象棋中,国王可以直行、横行、斜行,所以国王走一步可以移动到相邻8个方格中的任意一个。
国王从格子(x1,y1)走到格子(x2,y2)最少需要多少步?这个距离就叫切比雪夫距离
闵可夫斯基距离 Minkowski Distance
闵氏距离 ,
不是一种新的距离的度量方式。 是对多个距离度量公式的概括性的表述
两个n维变量a(x11 ,x12, …, x1n) 与 b(x21, x22,…, x2n)
间的闵可夫斯基距离定义为
其中p是一个变参数:
当 p=1 时,就是曼哈顿距离;
当 p=2 时,就是欧氏距离;
当 p→∞ 时,就是切比雪夫距离
根据 p 的不同
,闵氏距离可表示某一类种的距离
归一化与标准化
特征的
单位或者大小相差较大,或者某特征的方差相比其他的特征要大出几个数量级
,
容易影响
(支配)目标结果
,使得一些模型(算法)无法学习到其它的特征。这是就需要归一化或标准化
归一化:
import numpy as np
from sklearn.preprocessing import MinMaxScaler
def dm01_MinMaxScaler():
# 1. 准备数据
data = [[90, 2, 10, 40],
[60, 4, 15, 45],
[75, 3, 13, 46]]
# 2. 初始化归一化对象
transformer = MinMaxScaler()
# 3. 对原始特征进行变换
data = transformer.fit_transform(data)
# 4. 打印归一化后的结果
print(data)
标准化:
数据标准化:通过对原始数据进行标准化,转换为均值为0标准差为1的标准正态分布的数据
公式:
mean为特征的平均值,为特征的标准差
from sklearn.preprocessing import StandardScaler
def dm03_StandardScaler(): # 对特征值进行标准化
# 1. 准备数据
data = [[90, 2, 10, 40],
[60, 4, 15, 45],
[75, 3, 13, 46]]
# 2. 初始化标准化对象
transformer = StandardScaler()
# 3. 对原始特征进行变换
data = transformer.fit_transform(data)
# 4. 打印归一化后的结果
print(data)
# 5 打印每1列数据的均值和标准差
print('transfer.mean_-->', transfer.mean_)
print('transfer.var_-->', transfer.var_)
实现流程:
# 1 获取数据集
# 2 数据基本处理
# 3 数据集预处理-数据标准化
# 4 机器学习(模型训练)
# 5 模型评估
# 6 模型预测