mirror of
https://github.com/apachecn/ailearning.git
synced 2026-05-08 23:12:06 +08:00
优化 项目实例的规范
This commit is contained in:
@@ -53,11 +53,11 @@ knn 算法按照距离最近的三部电影的类型,决定未知电影的类
|
||||
适用数据范围:数值型和标称型
|
||||
```
|
||||
|
||||
## KNN 项目实战
|
||||
## KNN 项目案例
|
||||
|
||||
### 项目实战1: 优化约会网站的配对效果
|
||||
### 项目案例1: 优化约会网站的配对效果
|
||||
|
||||
> 概述:
|
||||
#### 项目概述
|
||||
|
||||
海伦使用约会网站寻找约会对象。经过一段时间之后,她发现曾交往过三种类型的人:
|
||||
* 不喜欢的人
|
||||
@@ -71,13 +71,7 @@ knn 算法按照距离最近的三部电影的类型,决定未知电影的类
|
||||
|
||||
现在她收集到了一些约会网站未曾记录的数据信息,这更有助于匹配对象的归类。
|
||||
|
||||
海伦把这些约会对象的数据存放在文本文件 [datingTestSet2.txt](https://github.com/apachecn/MachineLearning/blob/master/input/2.KNN/datingTestSet2.txt) 中,总共有 1000 行。海伦约会的对象主要包含以下 3 种特征:
|
||||
|
||||
* 每年获得的飞行常客里程数
|
||||
* 玩视频游戏所耗时间百分比
|
||||
* 每周消费的冰淇淋公升数
|
||||
|
||||
> 使用 KNN 改进约会网站的配对效果
|
||||
#### 开发流程
|
||||
|
||||
```
|
||||
收集数据:提供文本文件
|
||||
@@ -90,7 +84,15 @@ knn 算法按照距离最近的三部电影的类型,决定未知电影的类
|
||||
使用算法:产生简单的命令行程序,然后海伦可以输入一些特征数据以判断对方是否为自己喜欢的类型。
|
||||
```
|
||||
|
||||
* 将文本记录转换为 NumPy 的解析程序:
|
||||
> 收集数据:提供文本文件
|
||||
|
||||
海伦把这些约会对象的数据存放在文本文件 [datingTestSet2.txt](https://github.com/apachecn/MachineLearning/blob/master/input/2.KNN/datingTestSet2.txt) 中,总共有 1000 行。海伦约会的对象主要包含以下 3 种特征:
|
||||
|
||||
* 每年获得的飞行常客里程数
|
||||
* 玩视频游戏所耗时间百分比
|
||||
* 每周消费的冰淇淋公升数
|
||||
|
||||
> 准备数据:使用 Python 解析文本文件
|
||||
|
||||
```Python
|
||||
def file2matrix(filename):
|
||||
@@ -109,7 +111,7 @@ def file2matrix(filename):
|
||||
return returnMat,classLabelVector
|
||||
```
|
||||
|
||||
* 使用 Matplotlib 创建散点图
|
||||
> 分析数据:使用 Matplotlib 画二维散点图
|
||||
|
||||
```Python
|
||||
import matplotlib
|
||||
@@ -120,13 +122,22 @@ ax.scatter(datingDataMat[:, 1], datingDataMat[:, 2])
|
||||
plt.show()
|
||||
```
|
||||
|
||||
> 训练算法:此步骤不适用于 k-近邻算法
|
||||
|
||||
> 测试算法:使用海伦提供的部分数据作为测试样本。
|
||||
测试样本和非测试样本的区别在于:
|
||||
测试样本是已经完成分类的数据,如果预测分类与实际类别不同,则标记为一个错误。
|
||||
|
||||
> 使用算法:产生简单的命令行程序,然后海伦可以输入一些特征数据以判断对方是否为自己喜欢的类型。
|
||||
|
||||
|
||||
[完整代码地址](https://github.com/apachecn/MachineLearning/blob/master/src/python/2.KNN/kNN.py): <https://github.com/apachecn/MachineLearning/blob/master/src/python/2.KNN/kNN.py>
|
||||
|
||||
> 优化点
|
||||
#### 要点补充
|
||||
|
||||
归一化是一个让权重变为统一的过程,更多细节请参考: https://www.zhihu.com/question/19951858
|
||||
|
||||
### 项目实战2: 手写数字识别系统
|
||||
### 项目案例2: 手写数字识别系统
|
||||
|
||||
> 概述
|
||||
|
||||
|
||||
Reference in New Issue
Block a user