机器学习---KNN算法

kNN:

如果一个样本特征空间中的K个中的最相似大多数属于某一个类别,则该样本也是属于这个类别;欧式距离。

欧式距离:d=\sqrt{​{(x1-x2)}^2+{(y1-y2)}^2}

曼哈顿距离:d=\sum_{k=1}^{n}{|x1k-x2k|}

切比雪夫距离:d=max(|x1i-x2i|)

闵可夫斯基距离:d=\sqrt[p]{\sum_{k=1}^{n}{|x1k-x2k|}^p}

标准化欧式距离(将单位换算了):

余弦距离:cos\theta=\frac{x1x2+y1y2}{\sqrt{​{x1}^2+{y1}^2}+\sqrt{​{x2}^2+{y2}^2}}

鸢尾花综合(KNN)案例:

步骤:

  • 获取数据集
  • 数据基本处理(划分数据集)
  • 特征工程
  • 机器学习
  • 模型评估
#得到数据集
from sklearn.datasets  import load_iris
#导入模型
from sklearn.neighbors import KNeighborsClassifier
#划分数据集
from sklearn.model_selection import train_test_split
#标准化处理
from sklearn.preprocessing import StandardScaler

"""
获取数据集
划分数据集
特征工程
机器学习
模型评估
"""

#获取数据集
iris_data=load_iris()
print(iris_data)
#划分数据集 train_test_split(X,y)
x_train,x_test,y_train,y_test=train_test_split(iris_data.data,iris_data.target,random_state=33,test_size=0.2)
# print(x_train,x_test,y_train,y_test)
#特征工程: 处理训练集合验证集中的特征值
transfer=StandardScaler()

x_train=transfer.fit_transform(x_train)
x_test=transfer.fit_transform(x_test)
# print(x_train,x_test)


#机器学习:训练模型:实例化一个估计其:
estimator=KNeighborsClassifier(n_neighbors=5) #设置参数
estimator.fit(x_train,y_train) #训练模型;拟合数据

#模型评估:
y_predict=estimator.predict(x_test) #预测测试集中的数据
print("预测值是:\n",y_predict)
print("真实值与预测值对比:\n",y_test==y_predict)
#进行模型评估
res=estimator.score(x_test,y_test)
print("res的值:\n",res)

结果:机器学习---KNN算法_第1张图片

数据集:

机器学习---KNN算法_第2张图片

 机器学习---KNN算法_第3张图片

你可能感兴趣的:(机器学习,算法)