#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)
k最近邻算法及python测试
最新推荐文章于 2023-03-18 09:29:19 发布