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.mzph.cn/news/125851.shtml

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

相关文章

html获取网络数据,列表展示 第二种

html获取网络数据&#xff0c;列表展示 第二种 js遍历json数组中的json对象 image.png || - 判断数据是否为空&#xff0c;为空就显示 - <!DOCTYPE html> <html><head><meta charset"utf-8"><title>网页列表</title><script …

Java作业一

编写程序实现如下界面效果&#xff1a; import java.util.Scanner;public class Test01 {public static void main(String[] args) {String name;Scanner input new Scanner(System.in);System.out.println("请输入您的姓名&#xff1a;");name input.nextLine();S…

R2R 的一些小tip

批次间控制器(Run-to-run Controller)&#xff0c;以应对高混合生产的挑战。将最优配方参数与各种工业特征相关联的模型是根据历史数据离线训练的。预测的最优配方参数在线用于调整工艺条件。 批次控制(R2R control)是一种先进的工艺控制技术&#xff0c;可在运行(如批次或晶圆…

HTML+CSS+JS实现计算器

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开心好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;…

KnowledgeGPT:利用检索和存储访问知识库上增强大型语言模型10.30

利用检索和存储访问知识库上增强大型语言模型 摘要引言2 相关研究3方法3.1 任务定义3.2 知识检索3.2.1 代码实现3.2.2 实体链接3.2.3 获取实体信息3.2.4 查找实体或值3.2.5 查找关系 3.3 知识存储 4 实验 摘要 大型语言模型&#xff08;LLM&#xff09;在自然语言处理领域展现…

不同源安装nginx

Nginx是一款高性能的Web服务器软件。在安装Nginx时&#xff0c;可以选择不同的安装源。 1.官方源&#xff1a;在官方网站下载Nginx的源代码&#xff0c;然后进行编译安装。 2.EPEL源&#xff1a;EPEL (Extra Packages for Enterprise Linux)源是针对Red Hat、CentOS、Scienti…

TestCenter测试管理工具

estCenter&#xff08;简称TC&#xff09;一款广受好评的测试管理工具&#xff0c;让测试工作更规范、更有效率&#xff0c;实现测试流程无纸化&#xff0c;测试数据资产化。 产品概述 TC流程图 产品功能 一、案例库 案例库集中化管理&#xff0c;支持对测试用例集中管理&…

[PHP]DBErp进销存系统 v1.1 RC 221101

DBErp系统&#xff0c;是北京珑大钜商科技有限公司 基于 Laminas doctrine 2 开发的一套进销存系统。 本系统运行环境要求&#xff1a; 服务器系统&#xff1a;Linux&#xff08;推荐&#xff09;、Unix、Windows Web服务软件&#xff1a;Apache&#xff08;推荐&#xff09;…

map和set的使用

序列式容器和关联性容器 首先序列式容器和我们之前学的线性表很相似&#xff0c;序列式容器的功能就只是单纯的储存数据。序列式容器例如&#xff1a;vactor/list/deque等等 而关联式容器则并不单纯的储存数据&#xff0c;数据之间式存在关联关系的&#xff0c;有了这个关联关…

【Redis】环境配置

环境配置 Linux版本&#xff1a; Ubuntu 22.04.2 LTS 下载redis sudo apt install redis 启动redis redis-server 输入redis-server启动redis竟然报错了&#xff0c;原因是redis已经启动&#xff0c;网上大多数的解决方案如下&#xff1a; ps -ef | grep -i redis 查询redi…

顺序表——leetcode

原地删除数据 我们的思路这里给的是双指针&#xff0c;给两个指针&#xff0c;从前往后移动&#xff0c;如果不是val就覆盖&#xff0c;如果是我就跳过&#xff0c;大家一定要看到我们的条件是原地修改&#xff0c;所以我们不能另开一个数组来实现我们这道题目。 这里我们给两…

【React】02.create-react-app基础操作

文章目录 当前以及未来的开发&#xff0c;一定是&#xff1a;组件化开发如何划分组件React的工程化/组件化开发create-react-app基础运用运用react常用版本一个React项目中&#xff0c;默认会安装 2023年最新珠峰React全家桶【react基础-进阶-项目-源码-淘系-面试题】 当前以及…

docker进阶

文章目录 docker 进阶Part1 常用命令总结docker version 查看docker客户端和服务端信息docker info 查看更加详细信息docker images 列出所有镜像基本用法常用选项 docker search 搜索镜像基本用法示例用法 docker pull 拉取镜像基本用法示例用法 docker rmi 删除镜像基本用法示…

这样的软件测试报告模板你绝对没见过!!!

测试报告如此重要&#xff0c;那么我们应该如何撰写呢&#xff1f;为了让大家彻底掌握测试模板的撰写&#xff0c;所以本文结构如下&#xff1a; 1、测试报告写给谁看&#xff1f; 2、测试报告的基本骨架&#xff08;通过|不通过&#xff09;&#xff1f; 3、测试报告如何才能达…

RSA ——Rational Structure Architecture r入门教程

&#xff08;一&#xff09;UML概述 UML&#xff0c;即统一建模语言&#xff08;Unified Modeling Language&#xff09;&#xff0c;是一种通用的面向对象的可视化建模语言。其核心目的是为软件的面向对象描述和建模提供一种标准化的方法。UML并不是一种编程语言&#xff0c;因…

海外跨境电商云厂商阿里云、华为云、九河云选择攻略

近几年出海已成为趋势&#xff0c;而要打有准备的仗&#xff0c;就必须先收集关键信息。国内企业出海需要对海外市场进行深入的分析和挖掘&#xff0c;数据分析技术可以帮助国内企业更好地了解海外市场的需求和趋势&#xff0c;包括市场调研、用户画像、销售数据分析等方面&…

如何将 ruby 打包类似于jdk在另一台相同架构的机器上面开箱即用

需求 目前工作中使用到了ruby作为java 项目的中转语言&#xff0c;但是部署ruby的时候由于环境的不同会出现安装依赖包失败的问题&#xff0c;如何找到一种开箱即用的方式类似于java 中的jdk内置jvm这种方式 解决 TruffleRuby 完美解决问题&#xff0c;TruffleRuby 是使用 T…

餐饮连锁品牌2023:端起“外卖碗”,吃上“下沉饭”

作者 | 陈小江 文 | 螳螂观察 “没想到&#xff0c;蜜雪(蜜雪冰城&#xff09;能到我们这乡镇来开&#xff0c;我觉得挺意外的。「柏记水饺」也算挺大一品牌&#xff0c;没想到也能来&#xff08;我们&#xff09;乡镇”。 谈起不断有连锁品牌进镇开店&#xff0c;黑龙江讷河…

框架安全-CVE 漏洞复现DjangoFlaskNode.jsJQuery框架漏洞复现

目录 服务攻防-框架安全&CVE复现&Django&Flask&Node.JS&JQuery漏洞复现中间件列表介绍常见语言开发框架Python开发框架安全-Django&Flask漏洞复现Django开发框架漏洞复现CVE-2019-14234&#xff08;Django JSONField/HStoreField SQL注入漏洞&#xff…

9. linux系统设置开机自启动发射热点

1. 说明 某种情况下需要使用wifi进行通信时&#xff0c;可以在linux系统中发射一个热点让以使别的设备能够连接&#xff0c;然后进行通信。一般情况下可以在有无线wifi发射器的情况下&#xff0c;每次linux系统开机后&#xff0c;手动设置开启热点&#xff0c;但这种方式比较麻…