KNN模型

使用K-Nearest Neighbors (KNN)算法进行分类。首先加载一个数据集,然后进行预处理,选择最佳的K值,并训练一个KNN模型。
# encoding=utf-8
import numpy as np
datas = np.loadtxt('datingTestSet2.txt')  # 加载数据集,返回一个numpy数组
# 提取特征和标签
x_data = datas[:, 0:3]  # 提取前三列数据作为特征
y_data = datas[:, 3]  # 提取第四列数据作为标签
print('标准化前:', x_data)  # 特征矩阵
print(y_data)  # 标签向量
# 数据maxmin标准化
from sklearn.preprocessing import MinMaxScaler  # 用于数据的标准化
std = MinMaxScaler()  # 创建一个MinMaxScaler对象
x_data = std.fit_transform(x_data)  # 标准化
print('标准化:', x_data)
# 拆分数据集(训练集和测试集)
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x_data, y_data, test_size=0.2,
                                                    random_state=123)  # 测试集占总数据的20%,随机种子设为123以保证结果的可重复性
# 建立KNN模型
from sklearn.neighbors import KNeighborsClassifier
# 使用交叉验证法评估模型性能
from sklearn.model_selection import cross_val_score
k_range = range(1, 31)  # 创建一个范围从1到30的序列,用于试验不同的K值。
k_error = []  # 创建一个空列表,用于存储每个K值对应的错误率。
# 找最合适的k,既平均值最高
for k in k_range:
    model_kun = KNeighborsClassifier(n_neighbors=k)
    scores = cross_val_score(model_kun, x_train, y_train, cv=6, scoring="accuracy") 
    # 将数据集分成6个子集
    # 估计方法对象 数据特征 数据标签 几折交叉验证
    meanscores = scores.mean()  # 平均值
    k_error.append(1 - meanscores)  # 将准确率的平均值转换为错误率
    print("k=", k, "meanscores=", meanscores)
# 可视化K值和错误率的关系
import matplotlib.pyplot as plt
plt.plot(k_range, k_error)  # 绘制K值与错误率的图像
plt.show()
# 建立KNN分类器模型,并使用训练集进行训练
model_kun = KNeighborsClassifier(n_neighbors=9)  # n_neighbors=9表示在预测时,KNN分类器将考虑最近的9个邻居,并根据这9个邻居中最常见的类别来预测输入样本的类别
model_kun.fit(x_train, y_train)  # 使用训练集对模型进行训练
scores = model_kun.score(x_test, y_test)  # 使用测试集评估模型性能,返回准确率
print('准确率为:', scores)

 

 

 

 

 使用KNN算法加载鸢尾花数据集

# 加载鸢尾花数据集
from sklearn.datasets import load_irisiris = load_iris()
print(iris)
x_data = iris.data  # 样本数据
y_data = iris.target  # 标签数据
print("标准化前:", x_data)# 数据maxmin标准化
from sklearn.preprocessing import MinMaxScalermms = MinMaxScaler()
x_data = mms.fit_transform(x_data)
print(x_data)# 拆分数据集(训练集和测试集)
from sklearn.model_selection import train_test_splitx_train, x_test, y_train, y_test = train_test_split(x_data, y_data,   test_size=0.2,random_state=123)# 建立knn模型
from sklearn.neighbors import KNeighborsClassifierfrom sklearn.model_selection import cross_val_scorek_range=range(1,31)
k_error=[] #错误率# 找最合适的k,既平均值最高
for k in k_range:model_kun=KNeighborsClassifier(n_neighbors=k)scores=cross_val_score(model_kun,x_train,y_train,cv=6,scoring="accuracy")# 估计方法对象 数据特征 数据标签 几折交叉验证meanscores=scores.mean()    # 平均值k_error.append(1-meanscores)    # 错误率print("k=",k,"meanscores=",meanscores)# 将k的值和错误率可视化出来,比较好找
import matplotlib.pyplot as plt
plt.plot(k_range,k_error)
plt.show()model_knn = KNeighborsClassifier(n_neighbors=10)model_knn.fit(x_train, y_train)
scores = model_knn.score(x_test, y_test)  # 准确率
print(scores)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/155452.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[SHCTF 2023 校外赛道] reverse

week1 ez_asm 想不到第1题是个汇编,咱也不知道拿啥能弄成c,不过这题也不难,直接能看懂,关键部分。 取出异或0x1e然后保存,再取出-0xa再保存。 .text:0000000000401566 loc_401566: …

PHP的Excel导出与导入

下载地址(注意php版本大于7.3可能会报错) GitHub - PHPOffice/PHPExcel: ARCHIVED 解压 1、导出 Excel $data[[name>a,age>11],[name>b,age>22],[name>d,age>33], ]; $fileds["name">"名称","age"…

【代码思路】2023mathorcup 大数据数学建模B题 电商零售商家需求预测及库存优化问题

各位同学们好,我们之前已经发布了第一问的思路视频,然后我们现在会详细的进行代码和结果的一个讲解,然后同时我们之后还会录制其他小问更详细的思路以及代码的手把手教学。 大家我们先看一下代码这一部分,我们采用的软件是Jupyte…

WSL——ubuntu中anaconda换源(conda、pip)

1、conda 打开Ubuntu,输入下列命令。 conda config --set show_channel_urls yes 在文件管理器地址栏,输入:\\wsl$。打开Ubuntu根路径,其中显示了.condarc文件。 以文本形式打开,并输入要换的源,保存即可。…

17、SpringCloud -- natapp 内网穿透

目录 natapp什么是内网穿透?为什么要用natapp?安装、配置:下载隧道:配置启动:访问:natapp官网 natapp 什么是内网穿透? 为什么要用natapp? 安装、配置:

Java修仙传之Flink篇

大道三千:最近我修Flink 目前个人理解: 处理有界,无界流的工具 FLINK: FLINK定义: Flink特点 Flink分层API 流的定义 有界数据流(批处理): 有界流:数据结束了,程序也…

从红队视角看AWD攻击

AWD的权限维持 攻防兼备AWD模式是一种综合考核参赛团队攻击、防御技术能力、即时策略的比赛模式。在攻防模式中,参赛队伍分别防守同样配置的虚拟靶机,并在有限的博弈时间内,找到其他战队的薄弱环节进行攻击,同时要对自己的靶机环…

VNC图形化远程连接Ubuntu服务器

我的Ubuntu版本22.04.3,带有gnome图形桌面。配置过程参考了几篇博客,大致流程如下。因为是配置完之后才整理的流程,可能有疏漏。 Ubuntu服务器上的配置 1.先在服务器上下载vnc server(任何一种版本均可) vncserver有…

从小白到精通:揭秘perf工具的全部功能与操作技巧

揭秘perf工具的全部功能与操作技巧 一、引言二、理解perf工具的基本概念三、安装与配置perf工具3.1、不同操作系统的perf工具安装3.2、perf工具的配置选项和环境设置 四、perf工具的常用命令和功能4.1、perf工具的基本命令结构和常用参数4.2、perf工具的常见用法和功能4.3、per…

cmake多目录构建初步成功

目录和代码和 首次cmake 多目录构建失败 此文一样; 只有一个CMakeLists.txt; cmake_minimum_required(VERSION 3.10) project(mytest3 VERSION 1.0) include_directories("${PROJECT_SOURCE_DIR}/include") add_executable(mytest3 src/main…

MySQL - 索引详解以及优化;Explain执行计划

官网文档 MySQL :: MySQL 5.7 Reference Manual :: 8.3 Optimization and Indexes Mysql优化(出自官方文档) - 第八篇(索引优化系列) 目录 Mysql优化(出自官方文档) - 第八篇(索引优化系列&…

【ChatGPT瀑布到水母】AI 在驱动软件研发的革新与实践

这里写目录标题 前言内容简介作者简介专家推荐读者对象目录直播预告 前言 计算机技术的发展和互联网的普及,使信息处理和传输变得更加高效,极大地改变了金融、商业、教育、娱乐等领域的运作方式。数据分析、人工智能和云计算等新兴技术,也在不…