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.rhkb.cn/news/176170.html

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

相关文章

MES 价值点之数据追随

在现代制造业中,数据追溯已经越来越得到重视,特别是那些推行精益生产的企业重要性就更加突出了,而制造执行系统(MES)作为一种关键的生产管理工具,是能很好的为制造企业提供数据追溯功能。今天,和…

原来服务器这么有用-创建一个自己的云存储:FileBrowser

原来服务器这么有用-创建一个自己的云存储:FileBrowser 1、介绍 filebrowser 是一个使用go语言编写的软件,功能是可以通过浏览器对服务器上的文件进行管理。 Filebrowser提供了一个在指定目录内进行文件管理的界面,可以用于上传、删除、预览…

iOS的应用生命周期以及应用界面

在iOS的原生开发中,我们需要特别关注两个东西:AppDelegate和ViewController。我们主要的编码工作就是在AppDelegate和ViewControlle这两个类中进行的。它们的类图如下图所示: AppDelegate是应用程序委托对象,它继承了UIResponder类…

在Jetpack Compose中使用Paging 3实现无限滚动

在Jetpack Compose中使用Paging 3实现无限滚动 本文将介绍在Jetpack Compose中进行分页加载。分页加载意味着一次只加载应用程序中的小数据块。 假设您在服务器上有大量数据,并且您希望在UI上显示这些数据。显然,您不希望一次性加载所有数据。您希望每次…

JavaEE-cookie和session

本部分内容包括 cookie基本概念,sendcookies和getcookies代码; session基本概念,session实现登陆界面; 上述过程中涉及的代码如下: 1 import javax.servlet.ServletException; import javax.servlet.annotation.WebSe…

测开 (Junit 单元测试框架)

目录 了解 Junit 引入相关依赖 1、Junit注解 Test BeforeEach、BeforeAll AfterEach && AfterAll 2、断言 1、Assertions - assertEquals 方法 2、Assertions - assertNotEquals 方法 3、Assertions - assertTrue && assertFalse方法 4、Assertions…

python随手小练14

题目: 文件操作 : 根据文件要求(测试)筛选出数据并且放入一个新的文件 具体操作: f1 open("1.txt","r",encoding"UTF-8") f2 open("2.txt","w",encoding"U…

JVM 类加载的过程

JVM 类加载的过程 加载验证准备解析初始化 加载 “加载”(Loading)阶段是整个“类加载”(Class Loading)过程中的一个阶段,它和类加载 Class Loading 是不同的,一个是加载 Loading 另一个是类加载 Class L…

【Linux进程控制】进程控制专篇

【Linux进程控制】进程控制专篇 目录 【Linux进程控制】进程控制专篇进程创建fork函数写实拷贝fork常规用法fork调用失败的原因 进程终止进程退出场景进程常见退出方法_exit函数return退出 进程等待进程等待必要性进程等待的方法获取子进程status 具体代码实现进程程序替换替换…

Django 社区志愿者管理系统

摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 社区志愿者服务管理系统,主要的模块包括查看首页、个人中心、通知公告管理、志愿者管理、普通管理员管理、志愿活动管理、活动宣…

day02 矩阵 2023.10.26

1.矩阵 2.矩阵乘法 3.特殊矩阵 4.逆矩阵 5.正交矩阵 6.几何意义 7.齐次坐标 8.平移矩阵 9.旋转矩阵 10.缩放矩阵 11.复合运算

浪潮信息inMerge超融合 刷新全球vSAN架构虚拟化VMmark最佳成绩

近日,在国际权威的VMmark测试中,浪潮信息inMerge1100超融合产品搭载NF5280M7服务器,满载运行44Tiles取得40.95分的成绩,刷新了vSAN架构(Intel双路最新平台)虚拟化性能测试纪录。该测试结果证明inMerge1100可…

hdlbits系列verilog解答(移位寄存器)-23

文章目录 一、问题描述二、verilog源码三、仿真结果 一、问题描述 您将获得一个具有两个输入和一个输出的模块 my_dff (实现 D 触发器)。实例化其中的三个,然后将它们链接在一起以形成长度为 3 的移位寄存器。端口 clk 需要连接到所有实例。…

linux查看系统版本、内核信息、操作系统类型版本

1. 使用 uname 命令:这将显示完整的内核版本信息,包括内核版本号、主机名、操作系统类型等。 uname -a2. 使用 lsb_release 命令(仅适用于支持 LSB(Linux Standard Base)的发行版):这将显示包含…

如何优雅地单元测试 Kotlin/Java 中的 private 方法?

翻译自 https://medium.com/mindorks/how-to-unit-test-private-methods-in-java-and-kotlin-d3cae49dccd ❓如何单元测试 Kotlin/Java 中的 private 方法❓ 首先,开发者应该测试代码里的 private 私有方法吗? 直接信任这些私有方法,测试到…

Servlet 上下文参数

7)Servlet上下文对象:ServletContext生活中的例子:张三和李四在不远处窃窃私语,并且频繁的对着你坏笑。你肯定会跑过去问:你们俩在聊什么?注意:此处的聊什么,其实就是你在咨询他们聊天的上下文&…

FreeRTOS深入教程(队列内部机制和源码分析)

文章目录 前言一、队列结构体分析二、创建队列三、读写队列源码分析1.读队列源码分析2.写队列源码分析 总结 前言 本篇文章主要来为大家分析队列的内部机制和源码实现。 一、队列结构体分析 在FreeRTOS中队列会使用一个结构体来表示: 1.int8_t * pcHead 和 int…

V90PN总线伺服梯形加减速速度控制(标准报文1应用)

V90 PN总线伺服速度控制应用可以利用标准报文1和SinaSpeed功能块实现,具体代码介绍请查看下面相关文章链接,这里不再赘述。 速度随动控制 V90伺服PN总线速度随动控制(手摇轮功能)-CSDN博客文章浏览阅读40次。V90PN总线控制相关内容,请参考下面文章链接:博途1200/1500PLC …

使用tensorflow创建自己的量化金融工具

介绍 在充满活力的金融领域,高频交易 (HFT) 已经成为游戏规则的改变者。高频交易能够在几毫秒内执行数千个订单,利用先进的算法和计算技术实时利用微小的价格差异。随着金融市场的不断发展,支持高频交易策略的工具和框架也必须不断发展。在这一背景下,TF Quant Finance (T…

物联网AI MicroPython传感器学习 之 SHT3X温湿度传感器

学物联网,来万物简单IoT物联网!! 一、产品简介 Sensirion SHT3x-DIS湿度和温度传感器基于CMOSens传感器芯片,更加智能、可靠,精度更高。SHT3x-DIS具有增强的信号处理能力、两个独特的用户可选I2C地址,通信…