KNN算法

来源:4-2 scikit-learn中的机器学习算法封装

慕移动3485595

2020-07-04

  1. assert 的功能是否等同于if, 区别是什么?
  2. assert 1 <=k <= X_train.shape[0],
    assert X_train.shape[0] == y_train.shape[0],
    assert X_train.shape[1] == x.shape[0]
    这里为什么不是x.shape[1] ? 如果测试特征数量是否相同的话(即列是否相同)。
  3. KNN_classifier.fit(X_train, y_train) 的返回值,这里不是太明白。
    KNeighborsClassifier(algorithm=‘auto’, leaf_size=30, metric=‘minkowski’,
    metric_params=None, n_jobs=1, n_neighbors=6, p=2,
    weights=‘uniform’)
    这是啥意思?到底返回的是什么? 为什么不用重新定义一个变量进行存储?
    4.kNN_classifier.predict(X_predict)
    y_predict = kNN_classifier.predict(X_predict)
    课程中只说对X_predict进行了predict,我想知道怎么predict的?过程是什么? predict后得到了array[1], 那么array[1]中的内容是什么?
写回答

1回答

liuyubobobo

2020-07-04

assert(x) 等同于: if(!x) 则程序直接中断。

试一试给 k 赋值为不再 1 <=k <= X_train.shape[0] 之间的值,运行层序,看看会发生什么?


2

knn 用最近的 k 个样本作为依据,所以 k 最大为 X_train.shape[0],及所有样本数。


3

fit 实际上是完成了一个内部计算,所以并不需要使用返回值。但是你写成 knn_clf = KNN_classifier.fit(X_train, y_train) 也是没问题的。因为 sklearn 内部实际也将自己返回去了。这样设计是为了方便管道的设计需要。现在还没有学习管道,不用管这一点。


4

怎么 predict 的就是 4-1 小节介绍的方式。具体的得到的就是预测的标签。把 predict 的结果打印出来看一看?


继续加油!:)


0
2
liuyubobobo
回复
慕移动3485595
3 和 4,对,sklearn 自带的。意思和我们自己封装的 fit 和 predict 一模一样。fit 是对模型做训练;predict 是对数据做预测。
2020-07-04
共2条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5850 学习 · 2437 问题

查看课程