1.KNN
曼哈顿距离一般比欧氏距离长
加下面这句话就不会有报警告了
数据
data, target :一般表示全部数据
训练数据
X_train : 训练集中的数据
y_train : 训练集中的数据对应的结果
预测数据
测试集中的数据X_test
测试集中的数据对应的真实结果y_test
y_pred .测试集中的数据对应的预测结果
注意score()的参数
内部计算是按照predict()函数计算的结果进行计算的
接收的3个参数:
X_test: 接收输入的数组类型测试样本,一般是二维数组,每一行是一个样本,每一列是一个属性
y_test: X这些预测样本的真实标签,一维数组或者二维数组
KNN项目
导包
手写数字预测
用训练集进行训练,用测试集进行预测
2.线性回归
逻辑回归虽然基于线性回归,但是解决的是分类问题,不是回归问题,逻辑回归算法原理简单来理解
计算线性回归的值
将值带入sigmoid函数得到一个0~1之间的概率值
取大于0.5概率的分类作为分类结果
数学基础
练习
算出来之后有多个θ,带入预测函数,将测试值代入即可
线性回归代码
subplot(m,n,p) 将当前图形划分为 m×n 网格,并在 p 指定的位置创建坐标轴
梯度下降算法
不是抛物线的时候,如何求解最小值:梯度下降
如果θ是6,那么就会在曲线右边往下趋近2,因为左边的斜率是负的,右边的是正的
lr=0.8的话,跨度太大了,虽然也能接近最小值
实战:logistics回归
手写数字数据集的分类
跟KNN进行对比
改变centers即可改变点的种类数量
决策树
每个特征的信息熵
好友密度的计算跟日志密度的计算也是一样的
决策树代码
随机森林
朴素贝叶斯
朴素贝叶斯法(Naive Bayes) 是基于贝叶斯定理与特征条件独立假设的分类算法
朴素贝叶斯算法是以贝叶斯原理为基础,使用概率统计的知识对样本数据集进行分类。由于其有着坚实的数学基础,贝叶斯分类算法的误判率是很低的。贝叶斯方法的特点是结合先验概率和后验概率,贝叶斯分类算法在数据集较大的情况下表现出较高的准确率,同时算法本身也比较简单
[关键词]
朴素:独立性假设
贝叶斯公式
优点:
朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率
对小规模的数据表现很好:
对缺失数据不太敏感,算法也比较简单,常用于文本分类
缺点
只能用于分类问题。需要计算先验概率
朴素贝叶斯原理
朴素贝叶斯算法是一个典型的统计学习方法,主要理论基础就是一个贝叶斯公式,贝叶斯公式的基本定义如下:
这个公式虽然看上去简单,但它却能总结历史,预知未来:
公式的右边是总结历史·公式的左边是预知未来
如果把Y看成类别,X看成特征,P(Yk|X)就是在已知特征的情况下求YK类别的概率,而对PYkX)的计算又全部转化到类别Yk的特征分布上来。
朴素的概念:独立性假设,假设各个特征之间是独立不相关的
支持向量机
支持向量机 (Support Vector Machine,SVM) 是一类按监督学习方式对数据进行分类的分类器,其决策边界是对学习样本求解的最大边距超平面
如图,支持向量机算法原理:距离决策边界线A最近的点(这些点叫做支持向量),并且让到这些的到决策边界线A距离最远
右图是线性核函数,我们也可以使用非线性核函数,如高斯核函数