Python——K近邻算法,朴素贝叶斯算法

首页 » 算法 » 正文

K-近邻算法

定义:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

计算距离公式:

√(〖(a1-b1)〗^2+〖(a2-b2)〗^2+〖(a3-b3)〗^2 )

需要对数据做标准化处理(特征值)

API:


sklearn.neighbors.
KNeighborsClassifier
(
n_neighbors
=5,algorithm='auto')
 
 
作业:测试
鸢尾花
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler



def knncls():
    """
    K-近邻预测用户签到位置
    :return:None
    """
    # 读取数据
    data = load_iris()
    #print(data)

    x_train, x_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.25)
    # 特征工程(标准化)
    std = StandardScaler()

    # 对测试集和训练集的特征值进行标准化
    x_train = std.fit_transform(x_train)

    x_test = std.transform(x_test)

    # 进行算法流程 # 超参数
    knn = KNeighborsClassifier()

    # # fit, predict,score
    knn.fit(x_train, y_train)
    #
    # # 得出预测结果
    y_predict = knn.predict(x_test)
    #
    print("预测的目标签到位置为:", y_predict)
    #
    # # 得出准确率
    print("预测的准确率:", knn.score(x_test, y_test))

    return None


if __name__ == "__main__":
    knncls()

朴素贝叶斯-贝叶斯公式

𝑃𝐶𝑊=(P(W│C)P(C))/(P(W)),有结果可能有0的情况

解决办法:

拉普拉斯平滑系数

  P(F1│C)=(Ni+α)/(N+αm)                

API:

sklearn.naive_bayes.MultinomialNB         

交叉验证:

将数据分成n等分,分为验证集和测试集,目的是让评估的模型更加准确

网格搜索:(调参数)

  • sklearn.model_selection.GridSearchCV(estimator, param_grid=None,cv=None)
  • 对估计器的指定参数值进行详尽搜索
  • estimator:估计器对象
  • param_grid:估计器参数(dict){“n_neighbors”:[1,3,5]}
  • cv:指定几折交叉验证
  • fit:输入训练数据score:准确率结果分析:
  • best_score_:在交叉验证中测试的最好结果
  • best_estimator_:最好的参数模型
  • cv_results_:每次交叉验证后的测试集准确率结果和训练集准确率结果

未经允许不得转载:作者:1146-陶同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《Python——K近邻算法,朴素贝叶斯算法》 发布于2020-07-14

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录