统计学习方法 第三章 K近邻法

k近邻的实现过程:
1.计算已知类别数据集中的每个点与当前点之间的距离
2.按照距离递增次序排序
3.选取与当前距离最小的k个点
4.确定前k个点所在的类别的出现频率
5.返回前k个点出现频率最高的类别作为当前点的预测分类

参考《机器学习实战》里的第二章,先做出原始形式的knn代码:

import numpy as np
import operator

#欧氏距离计算
def dist_euclid(in_x,data_mat):
    m = np.shape(data_mat)[0]
    #tile表示按行或列复制填充
    diff_mat = np.tile(in_x,(m,1)) - data_mat
    dist = np.sqrt(np.square(diff_mat).sum(axis = 1))
    return dist

def knn(in_x,data_mat,label_mat,k,dist = dist_euclid):
    dist = dist(in_x,data_mat)
    #递增排序,得出对应距离值的原先位置
    #argsort方法只能对单行起作用,单列不起作用
    dist_index = np.array(np.argsort(dist.T)).tolist()[0]
    class_count = {}
    for i in range(k):
        class_label = np.array(label_mat[dist_index[i]]).tolist()[0][0]
        #字典的get方法,有则获取键值,无则初始值为0
        class_count[class_label] = class_count.get(class_label,0) + 1
    #itemgetter方法表示按照第几个域排序,reverse True表示降序
    sorted_class_count =  sorted(class_count.items(),key = operator.itemgetter(1),reverse = True)
    return sorted_class_count[0][0]

令data_mat = np.mat([[2,2],[0,0],[1,0],[0,1],[1,2]]),label_mat = np.mat([-1,1,1,1,-1]).T,测试点in_x = np.array([1,1]),结果返回值为1,正确。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《统计学习方法》是一本经典的机器学习教材,其中介绍了统计学习的基本原理和常用方法。李航编写的《统计学习方法》一书在学术界和工业界都有很高的影响力。 对于李航《统计学习方法》一书中的MATLAB代码,我不清楚具体指的是书中的哪些代码。该书中没有提供完整的MATLAB代码,但其中给出了一些算的伪代码和概念性的示例。 如果要在MATLAB中实现书中的算,可以根据伪代码和示例进行改写和实现。具体的实现方式取决于要实现的算和具体应用的需求。 一般来说,实现统计学习方法的MATLAB代码需要用到一些基本的数学和编程技巧,如矩阵运算、概率理论、优化算等。可以利用MATLAB中的矩阵和向量操作的高效性,简化算的实现过程。 对于不熟悉MATLAB语言的人来说,编写《统计学习方法》的MATLAB代码可能相对困难。此时,可以参考相关的机器学习库和工具箱,如MATLAB自带的Statistics and Machine Learning Toolbox或者第三方开源库,来实现相关的算。 总之,《统计学习方法》一书提供了机器学习的理论基础和实现思路,而具体的MATLAB代码的编写取决于实际需求和编程经验。 ### 回答2: 李航的《统计学习方法》是机器学习领域的经典教材之一,其中包含了很多重要的算和理论。针对这本书中的内容,可以使用MATLAB编写相关的代码来实现其中的一些算。 例如,在书中介绍了支持向量机(SVM)的原理和实现方法。MATLAB提供了一个简单易用的工具箱,可以直接调用其中的函数来实现支持向量机的训练和预测。下面是一个简单的MATLAB代码示例: ``` % 导入数据集 load('data.mat'); X = data(:, 1:2); % 输入特征 y = data(:, 3); % 标签 % 训练支持向量机模型 svm_model = fitcsvm(X, y, 'KernelFunction', 'linear'); % 预测新样本 new_data = [2, 3; 4, 5]; % 新样本特征 labels = predict(svm_model, new_data); % 预测标签 % 输出预测结果 disp(labels); ``` 以上代码首先导入数据集,然后使用`fitcsvm`函数训练了一个线性核的支持向量机模型。接着,我们可以使用这个模型对新的样本进行预测,使用`predict`函数可以得到预测的标签。最后,将预测结果输出到命令行中。 需要注意的是,以上代码只是一个简单的示例,实际应用中可能需要进行更多的数据预处理、调参等操作。而且,书中涉及的其他算方法也可以使用类似的方式在MATLAB中进行实现。希望这个简单的示例能够帮助你理解如何在MATLAB中编写《统计学习方法》中的算代码。 ### 回答3: 李航的《统计学习方法》是一本经典的机器学习教材,其中介绍了统计学习方法的原理、算和应用。Matlab是一种常用的科学计算软件,也是机器学习中常用的编程语言之一。在学习和实践统计学习方法过程中,我们可以使用Matlab来实现其中的算和案例。 首先,可以使用Matlab来编写Perceptron算的实现。Perceptron算是 Li Haung 在《统计学习方法》中介绍的一种简单的二分类算。我们可以编写一个函数,输入训练数据集和标签集,利用Perceptron算进行训练,得到权重向量W和截距b。然后,我们可以使用得到的W和b来预测新的样本数据。这个过程可以使用Matlab的矩阵操作和循环结构来实现。 接下来,可以使用Matlab来实现K近邻。K近邻是《统计学习方法》中介绍的一种非参数分类算。我们可以编写一个函数,输入训练数据集、训练标签集和测试数据,计算测试数据与训练数据之间的距离,并找到K个最近邻的样本。然后,根据这K个最近邻的标签来预测测试数据的类别。在Matlab中,可以使用欧氏距离计算距离,并利用排序函数来找出K个最近邻。 另外,我们还可以用Matlab来实现决策树算。决策树是《统计学习方法》中介绍的一种常用的分类算。我们可以编写一个函数,输入训练数据集和标签集,通过递归地选择最优特征来构建决策树。然后,使用构建好的决策树来预测新的样本数据的类别。在Matlab中,可以使用选择最优特征的指标和递归函数来构建决策树。 总结来说,通过使用Matlab来实现《统计学习方法》中的算,我们能更好地理解和应用统计学习方法的原理和算

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值