k最近邻算法及python测试

#k最近邻算法-测试
#导入测试数据
from sklearn.datasets import load_wine
#导入knn分类器
from sklearn.neighbors import KNeighborsClassifier,KNeighborsRegressor
#导入画图工具
import matplotlib.pyplot as plt
#导入数据集拆分工具
from sklearn.model_selection import train_test_split

import numpy as np

#1 概念:KNN算法的核心思想是用距离最近的k个样本数据的分类来代表目标数据的分类。
#2 优点:
#2.1 算法简单,易于理解和实现
#2.2 对异常值不敏感
#3 缺点:
#3.1 需要设定k值,结果会受到k值的影响,不同的k值,最后得到的分类结果不尽相同
#3.2 计算量大,需要计算样本集中每个样本的距离,才能得到k个最近的数据样本
#3.3 训练样本集不平衡导致结果不准确问题

#knn分类,预测酒的分类
def knn_classifier():
    wine_dataset=load_wine()

    #random_state=0,每次生成的随机数不同
    #x代表数据集,y代表分类标签
    x_train,x_test,y_train,y_test=train_test_split(wine_dataset["data"],wine_dataset["target"],random_state=0)

    #创建nkk分类模型
    knn=KNeighborsClassifier(n_neighbors=4)

    #用模型对数据进行拟合
    knn.fit(x_train,y_train)

    #测试模型得分
    score=knn.score(x_test,y_test)
    print(score)

    score=knn.score(x_train,y_train)
    print(score)

    #使用模型完成预测
    x_news=np.array([[13.2,2.77,2.51,18.5,96.6,1.04,2.55,0.57,1.47,6.2,1.05,3.33,820]])
    prediction=knn.predict(x_news)
    print(wine_dataset["target_names"][prediction])

#knn回归,根据身高,年龄预测体重
def knn_regress():
    person_data={
        "data":[[5,45],[5.11,26],[5.6,30],[5.9,34],[4.8,40],[5.8,36],[5.3,19],[5.8,28],[5.5,23],[5.6,32]],
        "target":[[77],[47],[55],[59],[72],[60],[40],[60],[45],[58]]
    }
    knn=KNeighborsRegressor(n_neighbors=3)
    knn.fit(person_data["data"],person_data["target"])

    #测试模型得分
    score=knn.score(person_data["data"],person_data["target"])
    print(score)

    x_news = np.array([[5.5, 38]])
    pre=knn.predict(x_news)
    print(pre)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值