距离量度
欧氏距离:横坐标之差的平方与纵坐标之差的平方和开根号
曼哈顿距离:也称为城市街区距离,特点:横平竖直
切比雪夫距离
切比雪夫距离也好理解,我们不妨给他换个名字,叫国王距离。为什么这么说,国际象棋里的国王属于是八面玲珑了,以国王所在的格子为中心的九宫格,剩下的八个格子随便走
闵可夫斯基距离闵可夫斯基距离是欧氏距离和曼哈顿距离的一般化形式,可以根据参数p的不同取值,分别表示为欧氏距离和曼哈顿距离。在二维空间中,闵可夫斯基距离可以表示为:(∑i=1n∣x1i−x2i∣p)p1
归一化
这需要运用数学的芝士了,也就是将多个数据特征转换成(0,1)之间
from sklearn.preprocessing import MinMaxScaler # 导入MinMaxScaler类,用于将数据特征缩放到指定的范围内
data=[[88,90,4],[77,96,6],[52,95,2],[89,52,7]] # 创建一个包含四个样本的二维列表,每个样本有三个特征值
print(data) # 打印原始数据
model=MinMaxScaler() # 创建一个MinMaxScaler对象,用于进行特征缩放
data=model.fit_transform(data) # 使用fit_transform()方法对原始数据进行特征缩放,将数据缩放到[0,1]范围内
print(data) # 打印特征缩放后的数据
标准化
标准化是数据预处理中的一种常见技术,其目的是使数据集的特征在统计意义上具有相似的尺度,以便更好地进行分析和模型训练。在标准化过程中,通常会对数据的特征进行线性变换,使其均值为0,标准差为1。
from sklearn.preprocessing import StandardScaler,MinMaxScaler
#准备数据
data = [[90, 2, 10, 40],
[60, 4, 15, 45],
[75, 3, 13, 46]]
def dm02_MinMaxScaler(data): #归一化
transformer = MinMaxScaler()
data = transformer.fit_transform(data)
print(data)
dm02_MinMaxScaler(data)
2.利用KNN算法对鸢尾花分类 -加载鸢尾花数据集
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
iris_data =load_iris()
#数据展示
def dmo2_irisdata_show(data):
iris_df=pd.DataFrame(iris_data['data'],columns=iris_data.feature_names)
#print(iris_df)
iris_df['target']=iris_data.target
#print(iris_df)
feature_names=list(iris_data.feature_names)
#print(feature_names)
for i in range(len(feature_names)):
for j in range(i+1,len(feature_names)):
c1=feature_names[i]
c2=feature_names[j]
sns.lmplot(x=c1,y=c2,hue='target',data=iris_df,fit_reg=False)
plt.xlabel(c1)
plt.ylabel(c2)
plt.title(f'{c1}vs{c2}')
plt.show()
dmo2_irisdata_show(iris_data)