机器学习入门KNN近邻算法(一)


1 机器学习处理流程:

机器学习入门KNN近邻算法(一)

2 机器学习分类:

  • 有监督学习

    主要用于决策支持,它利用有标识的历史数据进行训练,以实现对新数据的表示的预测

    1 分类

    分类计数预测的数据对象是离散的。如短信是否为垃圾短信,用户是否喜欢电子产品

    常用方法: K近邻、朴素贝叶斯、决策树、SVM

    2 回归

    回归技术预测的数据对象是连续值。例如温度变化或时间变化。包括一元回归和多元回归,线性回归和非线性回归

    常用方法: 线性回归、逻辑回归、岭回归

  • 无监督学习

    主要用于知识发现,在历史数据中发现隐藏的模式或内在结构

    1 聚类

    聚类算法用于在数据中寻找隐藏的模式或分组。K-means

  • 半监督学习

    在半监督学习方式下,训练数据有部分被标识,部分没有被标识,这种模型首先需要学习数据的内在结构,以便合理的组织数据来进行预测。算法上,包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测。

    常见方法: 深度学习

3 K-近邻算法原理

  • KNN概述

    简单来说,K-近邻算法采用测量不同特征值之间的距离方法进行分类(k-Nearest Neighbor,KNN)

    优点: 精度高、对异常值不敏感、无数据输入假定

    缺点: 时间复杂度高、空间复杂度高

    1、当样本不平衡时,比如一个类的样本容量很大,其他类的样本容量很小,输入一个样本的时候,K个临近值中大多数都是大样本容量的那个类,这时可能就会导致分类错误。改进方法是对K临近点进行加权,也就是距离近的点的权值大,距离远的点权值小。

    2、计算量较大,每个待分类的样本都要计算它到全部点的距离,根据距离排序才能求得K个临近点,改进方法是:先对已知样本点进行剪辑,事先去除对分类作用不大的样本。

    适用数据范围 : 数值型和标称型

    1 标称型:标称型目标变量的结果只在有限目标集中取值,如真与假(标称型目标变量主要用于分类)

    2 数值型:数值型目标变量则可以从无限的数值集合中取值,如0.100,42.001等 (数值型目标变量主要用于回归分析)

  • 工作原理

    1 样本训练集

    2 电影类别KNN分析

    3 欧几里得距离(欧式距离)

    机器学习入门KNN近邻算法(一)

    4 KNN计算过程流程图

    机器学习入门KNN近邻算法(一)

    入门案例 : 电影类型分析

    	电影名称	动作镜头	接吻镜头	电影类别
    0 前任三 2 15 爱情
    1 复仇者联盟 36 3 动作
    2 杀破狼 24 1 动作
    3 战狼 29 2 动作
    4 泰坦尼克号 1 18 爱情
    5 大话西游 29 3 爱情
    6 星愿 2 20 爱情
    7 西游记 25 2 动作
    8 七月与安生 3 19 爱情
    import numpy as np
    import pandas as pd
    from pandas import Series,DataFrame import matplotlib.pyplot as plt
    %matplotlib inline
    #从excel读取数据
    films = pd.read_excel('films.xlsx',sheet_name=1)
    train = films[['动作镜头','接吻镜头']]
    target = films['电影类别'] # 创建机器学习模型
    from sklearn.neighbors import KNeighborsClassifier
    knn = KNeighborsClassifier() # 对knn模型进行训练
    # 构建函数原型、构建损失函数、求损失函数最优解
    knn.fit(train,target)
    '''
    KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
    metric_params=None, n_jobs=1, n_neighbors=5, p=2,
    weights='uniform')
    '''
    #输入两个案例
    cat = np.array([[3,16],[20,4]])
    # 使用predict函数对数据进行预测
    knn.predict(cat) plt.scatter(train.values[:,0],train.values[:,1])
    plt.scatter(cat[:,0],cat[:,1],color='red')

    aaarticlea/png;base64,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" alt="predict">

    KNN近邻机器学习案例2

    from sklearn.neighbors import KNeighborsClassifier
    import numpy as np
    #knn对象
    neigh = KNeighborsClassifier(n_neighbors=3) #身高、体重、鞋的尺寸
    X = np.array([[181,80,44],[177,70,43],[160,60,38],[154,54,37],
    [166,65,40],[190,90,47],[175,64,39],[177,70,40],
    [159,55,37],[171,75,42],[181,85,43]])
    display(X)
    y = ['male','male','female','female','male','male','female','female','female','male','male'] # 第1步:训练数据
    neigh.fit(X,y)
    # 第2步:预测数据
    Z = neigh.predict(np.array([[190,70,43],[168,55,37]])) display(Z)
    #array(['male', 'female'], dtype='<U6') 识别出对应的性格

4 KNN用于分类

  • 用于分类的numpy方法介绍

    np.meshgrid 从坐标向量返回坐标矩阵

    import numpy as np
    nx, ny = 3, 4
    x = np.linspace(0, 1, nx)
    y = np.linspace(0, 1, ny)
    xv, yv = np.meshgrid(x, y)
    display(x,y,xv,yv)

    输出:

    array([ 0. , 0.5, 1. ])

    array([ 0. , 0.33333333, 0.66666667, 1. ])

    array([[ 0. , 0.5, 1. ],

       [ 0. ,  0.5,  1. ],
    [ 0. , 0.5, 1. ],
    [ 0. , 0.5, 1. ]])

    array([[ 0. , 0. , 0. ],

    [ 0.33333333, 0.33333333, 0.33333333],

    [ 0.66666667, 0.66666667, 0.66666667],

    [ 1. , 1. , 1. ]])


    >np.ravel 返回一个连续的平坦矩阵 ```python
    x = np.array([[1, 2, 3], [4, 5, 6]])
    display(x,x.ravel()) #输出:
    array([[1, 2, 3],
    [4, 5, 6]])
    array([1, 2, 3, 4, 5, 6])

    np.c_ 将切片对象按第二轴转换为串联

np.c_[np.array([1,2,3]), np.array([4,5,6])]

输出:

array([[1, 4],

[2, 5],

[3, 6]])



- **具体操作**

```python
# 导入库:KNeighborsClassifier
import numpy as np
from sklearn.neighbors import KNeighborsClassifier
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap # 导入sklearn自带数据集
from sklearn import datasets # 得到训练样本
iris = datasets.load_iris()
X = iris.data[:,:2]
y = iris.target #定义三种颜色代表三种蓝蝴蝶
cmap_species = ListedColormap(['#FF0000','#00FF00','#0000FF'])
#c对应颜色池映射到target值
plt.scatter(X[:,0],X[:,1],c = y,cmap = cmap_species)
plt.show()

aaarticlea/png;base64,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" alt="">

绘制图形之后进行KNN

#定义KNN分类器
clf = KNeighborsClassifier(n_neighbors=10) # 第1步:训练分类器
clf.fit(X,y) # 图片的显示范围,画布的边界范围
x_min, x_max = X[:,0].min()-1, X[:,0].max()+1
y_min, y_max = X[:,1].min()-1, X[:,1].max()+1 # 图片的背景显示坐标
xx,yy = np.meshgrid(np.arange(x_min,x_max,0.02),np.arange(y_min,y_max,0.02)) # 第2步:预测 ravel()数据扁平化
Z = clf.predict(np.c_[xx.ravel(),yy.ravel()])
z = Z.reshape(xx.shape) cmap_background = ListedColormap(['#FFAAAA','#AAFFAA','#AAAAFF'])
# 显示背景的颜色
plt.pcolormesh(xx,yy,z,cmap=cmap_background) # 显示点的颜色
plt.scatter(X[:,0],X[:,1],c = y,cmap=cmap_species)
plt.xlim(xx.min(),xx.max())
plt.ylim(yy.min(),yy.max())
plt.title('3-class classification')
plt.show()

aaarticlea/png;base64,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" alt="">

5 KNN用于回归

import numpy as np
import matplotlib.pyplot as plt
from sklearn.neighbors import KNeighborsRegressor
%matplotlib inline x = np.linspace(0,2*np.pi,40)
y = np.sin(x)
plt.scatter(x,y)
plt.xlabel('feature')
plt.ylabel('target') # 随机数种子,用于固定随机数
np.random.seed(2)
noise = np.random.random(size=20) - 0.5
y[::2] += noise
plt.scatter(x,y) # 生成knn回归模型
# n_neighbors 就是距离预测样本最近的点的个数
knn = KNeighborsRegressor(n_neighbors=19)
knn.fit(x.reshape(-1,1),y) # 获取预测样本集
# 预测数据的形状应该和训练数据的形状一致(不要求数量一致,要求特征一致)
X_test = np.linspace(0,2*np.pi,100).reshape(-1,1)
y_ = knn.predict(X_test) plt.plot(X_test,y_,color='orange',label='predict')
plt.scatter(x,y,color='blue',label='true-data')
plt.legend()

aaarticlea/png;base64,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%0AIiIx9P8BPwxKwNfCbvEAAAAASUVORK5CYII=" alt="">

# 创建多个算法模型,采用不同的参数,查看回归的结果
knn1 = KNeighborsRegressor(n_neighbors=1)
knn2 = KNeighborsRegressor(n_neighbors=7)
knn3 = KNeighborsRegressor(n_neighbors=21) knn1.fit(x.reshape(-1,1),y)
knn2.fit(x.reshape(-1,1),y)
knn3.fit(x.reshape(-1,1),y) y1_ = knn1.predict(X_test)
y2_ = knn2.predict(X_test)
y3_ = knn3.predict(X_test) # 拟合度过高,称为过拟合,对数据分析的过于在意局部特征
plt.plot(X_test,y1_,color='orange',label='n_neighbors=1')
# 拟合度刚好,称为最佳拟合,这是机器学习的终极目标,调参就是为了达到这个目的
plt.plot(X_test,y2_,color='cyan',label='n_neighbors=7')
# 拟合度太差,称为欠拟合,对数据特征分析不透彻,数据有效特征太少,样本数量太少
plt.plot(X_test,y3_,color='red',label='n_neighbors=21')
plt.scatter(x,y,color='blue',label='true-data')
plt.legend()

aaarticlea/png;base64,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" alt="">

上一篇:MySQL Index Condition Pushdown(ICP) 优化


下一篇:好用的DNS服务器推荐