请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

KNN算法

  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]中的内容是什么?

正在回答 回答被采纳积分+3

1回答

liuyubobobo 2020-07-04 13:12:33

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 回复 有任何疑惑可以回复我~
  • 提问者 慕移动3485595 #1
    谢谢老师回答
    2. 我之前指的是assert X_train.shape[1] == x.shape[0],这里为什么会相等?难道不是assert X_train.shape[1] == x.shape[1]吗?   我后来自己想了想,这里小x是向量,是一维的,就是元素的多少。所以 assert X_train.shape[1] == x.shape[0]   没问题。
    
    3.我的意思是.fit()这个是scikit-learn中自带的吗?结果中的各个参数都是啥意思? 之前课程都会讲讲用法,参数之类的。scikit-learn中kNN这里直接都略过去了。所以看起来有点不知所以然。
    
    4.和3一样,predict()是自带的吗? 函数的用法,参数讲解也没有。一样看起来有点不知所以然。
    回复 有任何疑惑可以回复我~ 2020-07-04 17:16:11
  • liuyubobobo 回复 提问者 慕移动3485595 #2
    3 和 4,对,sklearn 自带的。意思和我们自己封装的 fit 和 predict 一模一样。fit 是对模型做训练;predict 是对数据做预测。
    回复 有任何疑惑可以回复我~ 2020-07-04 17:27:14
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信