# 一、分类算法-K-近邻算法
> 通过邻居判断类别
## 一、定义
> 如果一个样本在特征空间中的 k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
> 来源:KNN算法,一种分类算法
## 二、计算距离公式:欧式距离
> 相似的样本,特征之间的值都是相近的。
> 计算特征距离时,应该进行标准化。
## 三、算法API
## 四、k的取值
> k的取值会影响k的结果
## 五、实例:预测入住位置。
# 一、分类算法-K-近邻算法
> 通过邻居判断类别
## 一、定义
> 如果一个样本在特征空间中的 k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
> 来源:KNN算法,一种分类算法
## 二、计算距离公式:欧式距离
> 相似的样本,特征之间的值都是相近的。
> 计算特征距离时,应该进行标准化。
## 三、算法API
## 四、k的取值
> k的取值会影响k的结果
## 五、实例:预测入住位置。
## 转换器与估计器
> 引入:实例化是一个转换器类,调用fit_transfrom
# 数据的划分和介绍
## 1、sklearn 数据集
### 数据集划分
- 训练集 占大多数 70% 80% 75% 构建模型
- 测试集 30% 20% 25% 用于评估模型是否有效
sklearn.model_selection.train_test_split
## 机器学习算法分类以及开发流程
> 算法是核心,数据和计算是基础
> 找准定位,算法设计是算法工程师在做,我们要分析数据,分析业务,应用常见算法,特征工程,调参数,优化
- 学会分析问题,用算法解决问题
- 掌握算法基本思想
- 利用库和框架解决问题
### 算法分类
1、数据类型
- 离散型数据:由记录不同类别个体的数目所得到的数据,又称计数数据,不能再细分,也不能进一步地提高精确度。
- 连续型数据:可以在某个范围内取任意数,即变量的取值可以是连续的,如长度时间质量值等。通常是非整数,含有小数部分。
2、 算法分类
1) 监督学习(预测)特征值+目标值
- 分类 k-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归、神经网络
- 回归 线性回归 岭回归
- 标注 隐马尔科夫模型 不做要求
2) 无监督学习 特征值无标签,无标准答案
- 聚类 k-means
> 分类:目标值离散型 回归:目标值连续型
> 分类概念:分类是监督学习的一个核心问题,在监督学习中,当输出变量取有限个离散值时,预测问题变成为分类问题。最基础的便是二分类问题,即判断是非,从两个类别中选择一个作为预测结果。
> 应用:银行业务,图像处理,手写识别,文本分类
例子:
1、明天天气多少度:回归
2、明天天气是阴、晴还是雨:分类
3、人脸年龄预测:回归
4、人脸识别:分类
## 数据降维
> 维度:特征的数量
> 为什么要降维:删除一些不必要的特征
- 特征选择
- 主成分分析
### 特征选择
特征选择的原因
- 冗余:部分特征相关度高,容易消耗计算性能
- 噪声:部分特征对预测结果有影响
特征选择的主要方法
- filter 过滤式 variance threshold
- embedded 嵌入式 正则化、决策树
- wrapper 包裹式
### 过滤式特征选择
sklearn.feature_selection.VarianceThreshold
> 特征之间容易相关 对于高纬度数据来说
n_components:
- 小数 百分比(0~1)保留多少信息 一般取90~95%
- 整数 减少到的特征数量
一般使用小数
sklearn.preprocessing.MinMaxScaler
### 特征的预处理: 对数据进行处理
### 特征预处理的方法
> 通过特定的统计方法,将数据转换成算法要求的数据
数值型数据:标准缩放:
- 归一化
- 标准化
类别型数据:one-hot编码
时间类型:时间的切分
### sklearn特征处理API
- sklearn.preprocessing
### tf_ idf分析
朴素贝叶斯
> tf: term frequency(词的频率) 出现的次数
> idf: 逆文档频率 inverse document frequency 公式:log(总文档数量/该词出现的文档数量)
log() 输入的数值越小,结果越小。
> tf*idf 重要性 用以苹果一个词对于一个文件集或一个语料库中的其中一份文件的重要程度。
sklearn.feature_extraction.text.TfidVectorizer
### 字典特征数据抽取
> 特征抽取:文本,字符串
> sklearn特征抽取API
- 字典特征抽取
sklearn.feature_extraction.Dictvectorizer
### Dictvectorizer语法
DictVectorizer.fit_transform(x)
返回sparse矩阵
### 流程
- 实例化DictVectorizer
- 输入数据并转换 fit_transform()
### 数据对于特征的处理
pandas:一个数据读取非常方便以及基本的处理格式的工具
- 缺失值
- 数据转换
- 重复值 (机器学习中不需要进行去重)
sklearn:对于特征的处理提供了强大的接口
特征工程
> 概念:将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高了对未知数据的预测准确性
> 意义:直接影响预测结果
### sklearn
> python语言的机器学习工具
> 机器学习算法的实现
- 数据的特征抽取
- 数据的特征预处理
- 数据的降维