注:本篇文章没有具体的实例,后面会有的。
简单描述:在预测目标值的时候选择和自己相似的目标值。比如,有五个人分在在武汉的五个区域,小明不知道自己在什么区域,他计算自己和其他4个人的距离,谁离自己最近,他在什么区,小明就在什么区。
k-近邻算法计算公式:欧式距离公式
计算步骤:
1、算距离:给定测试对象,计算它与训练集中的每个对象的距离
2、找邻居:圈定距离最近的k个训练对象,作为测试对象的近邻
3、做分类:根据这k个近邻归属的主要类别,来对测试对象分类
为防止某个值对结果的影响较大需要将数据进行标准化处理。
KNN模块介绍:
sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,algorithm='auto')
n_neighbors:选择相似的5组数据,按照比例分类。
algorithm:指定找出相似的数据的算法,比如有ball_tree和kd_tree,而auto则是根据传递的数据选择合适的算法。
当数据集较大的时候需要处理:
1、缩小数据集范围
2、如果有日期类型需要处理日期
3、删除不需要的特征
4、数据处理完需要标准化处理
5、使用算法进行预测
常见问题:
k值取多少?也就是参数n_neighbors的大小
k值取的小:容易受到异常值的影响。
k值取的大:容易送到k值数据类别多而波动。
性能:
懒惰算法,对测试样本分类时的计算量大,内存开销大,评分慢
可解释性较差。
优点:
简单,易于理解,易于实现,无需估计参数,无需训练
一般使用场景:小数据样本,几千-几万的数据。
朴素贝叶斯算法
k-近邻算法是和那个相似就是那个类别,而朴素贝叶斯算法会计算出属于某个类别的概率。
使用朴素贝叶斯算法的前提条件:特征独立。在计算概率的时候要求两个事件是独立的,这里也一样。
计算公式:
模块介绍:
sklearn.naive_bayes.MultinomialNB(alpha=1.0)
alpha:拉普拉斯平滑系数
拉普拉斯平滑系数是为了防止计算出概率为0的情况。
步骤:
1、对数据进行前期处理(切割等)
2、生成特征词:TfidfVectorizer(比如科技类文章,云计算出现的次数)
3、利用朴素贝叶斯算法进行计算
优点:
1、稳定的分类效率
2、对缺失护具不敏感,常用文本分类
3、分类准确率高,速度快
缺点:
特征之间需要独立,不能相互影响。
精确率和召回率
在上述文章中我们判断预测是否准确用准确率。也就是预测的正确结果占全部的百分比。
召回率:简单来说就是预算正确的占用实际正确的百分比,在有些领域是需要看召回率的。比如:
50个人中有有20个人是癌症,用算法识别出来有18个人是癌症,但是有3个人识别错了,这个召回率就是
15/20。在有些领域需要提高召回率,宁可识别出30个人是癌症,实际得癌症的人全在里面。
精确率:计算计算对的值占得百分比。一般不使用。
评估模型模块:
sklearn.metrics.classification_report(y_true,y_pred,target_names=None)
y_true:真实目标值
y_pred:预测目标值
target_names:目标类别名称
返回类别的精确率(precision)和召回率(recall)。
KNN算法调优
交叉验证
以前是将数据分为训练集和测试集,交叉验证:
1、把训练集分为n等分。n是自己设定。把其中第一份拿出来当做验证集。来计算得出一个准确率。
2、把第2份当做验证集,其他当做训练集得出一个准确率。
3、同上。第三份,第四份等等。
4、求出平均准确率
k-近邻算法中的n_neighbors参数该给多少?
超参数搜索(网格搜索):
n_neighbors这种需要手动指定的叫做超参数,所以需要设定比如1,3,5等
都采用交叉验证来进行评估,最后选出最优参数来建立模型。
超参数搜索(网格搜索)使用:
sklearn.model_selection.GridSearchCV(estimator,param_grid=None,cv=None)
estimator:估计器对象,也就是算法。
param_grid:参数(字段形式),{'n_neighbors':[1,3,5]}
cv:指定多少次交叉验证,一般使用10.
分析结果:
best_score_:最好的结果
best_estimator_:最好的参数模型
cv_results_:每次交叉验证后的准确率
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有