diff --git a/.gitignore b/.gitignore index 72364f99..6564ff4a 100644 --- a/.gitignore +++ b/.gitignore @@ -87,3 +87,4 @@ ENV/ # Rope project settings .ropeproject +.vscode diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index fe715984..00000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "python.linting.pylintEnabled": false -} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json deleted file mode 100644 index 66d0b4ec..00000000 --- a/.vscode/tasks.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - // See https://go.microsoft.com/fwlink/?LinkId=733558 - // for the documentation about the tasks.json format - "version": "0.1.0", - "command": "/usr/bin/python", - "isShellCommand": true, - "args": ["${file}"], - "showOutput": "always" -} diff --git a/README.md b/README.md index c11aceb2..c7544159 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,8 @@ * 1) 机器学习基础 * [机器学习基础](./docs/1.机器学习基础.md) -* 2) k-紧邻算法 +* 2) k-近邻算法 + * [k-近邻算法](./docs/2.k-近邻算法.md) * 3) 决策树 * 4) 基于概率论的分类方法:朴素贝叶斯 * 5) Logistic回归 diff --git a/docs/2.k-近邻算法.md b/docs/2.k-近邻算法.md new file mode 100644 index 00000000..87640c0d --- /dev/null +++ b/docs/2.k-近邻算法.md @@ -0,0 +1,21 @@ + +# 2) k-近邻算法 + +* k-近邻算法的特点 + * 优点:精度高、对异常值不敏感、无数据输入假定 + * 缺点:计算复杂度高、空间复杂度高 + * 适用数据范围:数值型和标称型 +* 工作原理 + * 已知样本数据集的每一个数据的特征和所属分类,将新数据的特征与样本数据进行比较,找到最相似(最近邻)的k(通常k <= 20)个数据。选择k个数据中出现次数最多的分类,作为新数据的分类。 +* k-近邻算法的一般流程 + * 收集数据:任何方法 + * 准备数据:距离计算所需要的数值,最好是结构化的数据格式 + * 分析数据:任何方法 + * 测试数据:计算错误率 + * 使用算法:输入样本数据和结构化的输出结果,然后运行k-近邻算法判断输入数据分类属于哪个分类,最后对计算出的分类执行后续处理 +* 总结 + * k-近邻算法其实就是根据空间两个向量距离来判断类别性,关键的是引入k值,保证了一定的稳定性,很明显的缺点就是每次都要与所有样本数据进行对比。 + * 文中处理约会数据时,归一化的方法是对于消除影响很十分重要的 + * 阅读本章之前建议阅读一下numpy的文档 + * [numpy英文文档](https://docs.scipy.org/doc/numpy-dev/user/quickstart.html) + * [numpy中文文档](http://old.sebug.net/paper/books/scipydoc/numpy_intro.html)