首页 > 编程语言 >《机器学习》 KNN算法、数据可视化 No.1

《机器学习》 KNN算法、数据可视化 No.1

时间:2024-08-16 13:52:51浏览次数:16  
标签:KNN 机器 学习 算法 可视化 No.1 date 数据

一、了解机器学习

1、什么是机器学习

        机器学习是一种人工智能(AI)的分支,旨在让计算机通过数据自动学习和改进。机器学习算法被设计用于从数据中提取模式和规律,然后利用这些模式和规律来做出预测或做出决策,而无需明确的程序指令。

        机器学习的基本原理是利用大量的输入数据进行训练,然后使用这些数据训练出的模型来进行预测和决策。训练过程一般包括以下步骤:数据收集和准备、选择合适的模型、训练模型、评估和优化模型。

2、机器学习的步骤

简单来说就是下图所示流程:

        1) 数据收集和准备:收集和整理适用于问题的数据集。这可能包括数据清洗、特征选择、处理缺失值和异常值等。

        2) 特征工程:从原始数据中提取和选择适当的特征。这可以涉及特征转换、降维、组合特征等操作,以提高模型的性能。

        3) 模型选择和训练:选择适合问题的机器学习模型,并使用训练数据对其进行训练。模型的选择可以基于问题的类型和数据的特征。

        4) 模型评估:使用测试数据对训练好的模型进行评估,以了解其在未见过的数据上的性能表现。常见的评估指标包括准确率、召回率、精确率、F1分数等。

        5) 模型优化:根据评估结果对模型进行调整和优化,以提高其性能。这可以涉及参数调整、特征选择、算法调整等操作。

        6) 部署和应用:将优化后的模型部署到实际应用中,用于进行预测、决策或提供洞见。模型的部署可以采用各种方式,例如将模型集成到应用程序中、使用API进行远程调用等。

        7) 监控和维护:对部署的模型进行监控和维护,以保持其性能和准确性。这可以包括定期监测模型的性能指标、处理模型的漂移和退化等。

        例如下图,对疫情时期的患病率统计,纵坐标表示患病率,横坐标表示日期,其趋势图为通过大量数据统计,然后再经过可视化得到总体趋势图:

        通过这个图可以预测第25号当天的患病率所对应的比例大致位置,而不会随机出现在极高的位置,也不会出现在极低的位置,大概在如图所示的0.6左右,这就是这段流程的大致画面。

3、为什么要学习机器学习

  1. 解决复杂问题:机器学习是一种能够处理大规模和复杂数据的方法,它可以帮助我们解决很多传统算法难以处理的问题,如语音识别、图像分类、自然语言处理等。通过学习机器学习,我们可以利用这些技术来构建智能系统,解决实际问题。

  2. 数据驱动决策:在当今信息爆炸的时代,我们面临着大量的数据,但如何从海量数据中提取有用的信息并做出决策是一个挑战。机器学习可以帮助我们通过训练模型从数据中发现模式和规律,并利用这些模型做出更加准确的预测和决策。学习机器学习可以使我们更好地理解和利用数据,从而做出更好的决策。

  3. 创造新的技术和创新:机器学习是推动科技创新的重要驱动力之一。通过学习机器学习,我们可以了解最新的研究成果和技术进展,从而帮助我们开发出创新的解决方案和应用。机器学习在很多领域都有着广泛的应用,包括医疗保健、金融、交通、农业等,学习机器学习可以让我们更好地理解和应用这些技术,从而推动行业的发展。

  4. 提高竞争力和就业前景:随着机器学习的快速发展,对于掌握机器学习技术的需求也越来越大。学习机器学习可以提高我们在职场上的竞争力,拥有这一技能可以让我们在求职中脱颖而出。很多公司和组织都在积极招聘和培养机器学习专家和工程师,学习机器学习可以给我们带来更多的就业机会和发展空间。

4、机器学习要准备的库

        1)numpy :它是一个用于进行科学计算的Python库。它提供了一个高效的多维数组对象(ndarray),以及用于对数组进行操作的各种函数和工具。

        2)matplotlib :它是一个用于绘制数据可视化图表的Python库。它提供了一种类似于MATLAB的绘图接口,可以创建各种类型的图表,包括折线图、散点图、柱状图、饼图、等高线图、热力图等等。Matplotlib可以在Python脚本中生成高质量的图像,支持将图表保存为图片文件或直接显示在窗口中。

        3)pandas :它是一个用于数据分析和处理的Python库。它提供了灵活且高效的数据结构和数据分析工具,使用户能够轻松地进行数据清洗、转换、聚合、分组和可视化等操作。 

        4)sklearn :scikit-learn(简称sklearn)是一个用于机器学习的Python库。它建立在NumPy、SciPy和Matplotlib等库的基础上,提供了一套完整且易于使用的机器学习工具,适合用于各种机器学习任务,包括分类、回归、聚类等。

二、KNN算法

1、介绍KNN算法

        K近邻算法(K-Nearest Neighbors,简称KNN)是一种常用的监督学习算法,用于解决分类和回归问题。KNN算法是一种基于实例的学习方法,通过查找训练数据集中与目标样本最接近的K个最近邻样本,来进行分类或回归预测。

        在KNN算法中,K代表需要考虑的最近邻样本的数量。当进行分类问题时,KNN算法将被分类样本分配给K个最近邻样本中所占比例最多的类别。对于回归问题,KNN算法计算K个最近邻样本的平均值,并将其作为预测值。

        KNN算法的基本原理是基于样本在特征空间中的距离进行分类或回归。常用的距离度量方法包括欧氏距离曼哈顿距离、闵可夫斯基距离等。

实例解析1

        如下图所示,我有一套房子想卖了,但是却不知道当前行情价格多少,但是附近邻居有几个卖了房子的,他们的房子大小和我的差不太多,所以我就划定一个范围,确定我的最近距离的几个邻居房价的平均值来定我自己房价的多少,如果觉得数据少了,那就多找几个邻居来做平均值,如此即可判断自己房价的多少。

实例解析2

        如下图所示,有三组数据,将他们分别标记在坐标轴上得到如图所示状态,现在有一组数据不知道是哪一组的数据,将它标记出来后,划定周围一定范围内的其他数据点的个数,然后去数哪一类数据点最多,那么他就属于这一类数据的。

        而这三组数据全部显示在一个坐标系,将他们固定,那么这三组数据就是训练数据,而外部不知道的那一组数据就叫测试数据

2、KNN算法—距离公式

1)欧氏距离

也叫坐标系中点到点之间的距离。

距离公式如下:

2)曼哈顿距离

就相当于点到点之间x轴走的距离加y轴走的距离

距离公式如下:

3、KNN算法优缺点

KNN算法的优点:
  1. 简单易懂:KNN算法的实现非常简单,易于理解和实现。

  2. 非参数化:KNN算法是一种非参数化的算法,没有对数据分布做出假设,适用于不同类型的数据。

  3. 可扩展性:KNN算法适用于多类别问题,能够处理具有多个类别的分类任务。

KNN算法的缺点:
  1. 计算复杂度高:对于大规模数据集,KNN算法需要计算目标样本与所有训练样本的距离,计算复杂度较高,计算时间较长。

  2. 高度依赖数据结构:KNN算法对于样本的分布和密度非常敏感,对于不均匀分布的数据集可能会产生误分类。

  3. 数据不平衡问题:在KNN算法中,样本数量较多的类别会对分类结果产生更大的影响,而数量较少的类别可能被忽略。

4、scikit-learn 库(简称sklearn)

1)Sklearn是什么?

        sklearn是一个Python机器学习库,全称为scikit-learn。它提供了许多用于处理和分析数据的工具和算法,包括数据预处理、特征工程、模型选择和评估等。sklearn内置了多种常用的机器学习算法,如线性回归、逻辑回归、决策树、随机森林、支持向量机、聚类等。同时,sklearn还提供了许多可视化工具,用于帮助用户进行数据探索和结果展示。通过使用sklearn,用户可以快速构建和部署机器学习模型。

2)sklearn安装

在命令提示符中输入下列命令,注意安装版本,不同版本有部分功能不同,可以在下列代码的scikit-learn后面加==x.x.x,x.x.x为版本号

pip install scikit-learn -i https://pypi.tuna.tsinghua.edu.cn/simple/

3)使用方法

        用sklearn官网API:https://scikit-learn.org/

        knn算法的介绍  搜索k-nearest neighbors,注意版本1.0和1.2问题

三、数据可视化

        现在有很多大学里出现室友矛盾,假如室友可以选择:    大学里面 ,对于校方,把类型相同的学生放在一个寝室,在基于大二大三大四的,现已存在一个数据文件datingTestSet2.txt ,为历年大学生的调查问卷表:

        第1列:每年旅行的路程

        第2列:玩游戏所有时间百分比

        第3列:每个礼拜消耗零食的重量

        第4列:学生所属的类别,1表示爱学习,2表示一般般,3表示爱玩。

        目的为学生在大学中挑选室友的信息,其内部数据部分如下所示

首先确定流程:收集数据  -> 建立模型训练 -> 预测数据

当前已经收集好数据存放在datingTestSet2.txt 文件里,

1、可视化查看数据

直接看代码:

import matplotlib.pyplot as plt
import numpy as np

date = np.loadtxt('datingTestSet2.txt') #导入数据
# 分类 1 2 3,分别取出每个类别的学生信息
date_1 = date[date[:,-1]==1]
date_2 = date[date[:,-1]==2]
date_3 = date[date[:,-1]==3]

a = plt.figure() #创建画布
b = plt.axes(projection='3d') #设置为3d图像
# scatter为散点图,期内参数分别代表x轴y轴z轴数据,c为颜色,marker为散点图形
b.scatter(date_1[:,0],date_1[:,1],date_1[:,2],c='#696969',marker='+') 
b.scatter(date_2[:,0],date_2[:,1],date_2[:,2],c='#FF6A6A',marker='o')
b.scatter(date_3[:,0],date_3[:,1],date_3[:,2],c='#8A2BE2',marker='3')

# 展示中文
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
# 展示数据
plt.title('学生类别')
b.set(xlabel='里程数',ylabel='游戏时间百分比',zlabel='食品质量')
plt.show()

输出结果如下图,即不同颜色对应不同分类的学生:

2、使用KNN算法预测

代码如下:

import numpy as np
from sklearn.neighbors import KNeighborsClassifier # 导入包,表示使用分类算法

date = np.loadtxt('datingTestSet2.txt') #导入数据

date_x = date[:,:-1] # 取行为所有行,列为从第一列到最后一列,不包含最后一列数据
date_y = date[:,-1] # 取行为所有行,列为最后一列的数据

knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(date_x,date_y) # 使用fit,对上述数据进行训练
# 测试单条数据
print(knn.predict([[1215, 1.14656, 1.122]]))
# 测试多条数据
a = [[1221,0.12654,12.1522],[4651,1.3256,15.135],[45631,6.23,1.11111]]
print(knn.predict(a))

其运行结果为:

第一行表示输入的一组数据为2类学生,第二行表示输入的多组数据为2,2,3类数据

标签:KNN,机器,学习,算法,可视化,No.1,date,数据
From: https://blog.csdn.net/qq_64603703/article/details/141231639

相关文章

  • SSM-国外鞋服代购平台-97782(免费领源码+开发文档)可做计算机毕业设计JAVA、PHP、爬虫、
    SSM国外鞋服代购平台摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,鞋服代购平台当然也不例外。代购平台是以实际运用为开发背景,运用软件工程原理和开发方法,采用Java技术构建的一个管理系统。整个开发过......
  • 最新微信付费进群源码系统三级分销(总站-分站-子分站-分销)+定位+可视化大屏及小程序搭
    付费进群系统作为一种创新的在线服务模式,逐渐受到创业者和用户的青睐。它不仅为创业者提供了稳定的收益渠道,也为用户带来了便捷的服务体验。从代码设计的角度来看,付费进群系统源码是一个复杂而精细的系统,涵盖了多个技术层面和考量因素。本文将深入探讨付费进群系统源码的代......
  • R语言ggplot2可视化实战:将可视化图像的标题(title)放置在图像的左下角
     R语言ggplot2可视化实战:将可视化图像的标题(title)放置在图像的左下角(customizetitlepositoninbottomleftofggplot2graph)目录R语言ggplot2可视化:将可视化图像的标题(title)放置在图像的左下角(customizetitlepositoninbottomleftofggplot2graph)#仿真数据......
  • 【可视化】中国地级市PM2.5浓度分区统计
    利用GeoPandas和xarray(rioxarray)库对中国PM2.5浓度数据开展城市尺度的分区统计,得到我国所有地级市的平均PM2.5浓度水平。相关库简介rioxarray是一个用于处理地理空间数据的Python库,它扩展了xarray的功能,使得xarray可以方便地处理带有地理参考的多维数组数据......
  • ArcGIS Pro 实现人口分布栅格TIFF数据的网格提取与可视化
    这里在分享一个人口1km精度栅格数据,LandScan是由美国能源部橡树岭国家实验室(ORNL)提供的全球人口分布数据集,具有最高分辨率的全球人口分布数据,是全球人口数据发布的社会标准,是全球最为准确、可靠,基于地理位置的,具有分布模型和最佳分辨率的全球人口动态统计分析数据库。这一数据......
  • Python数据分析项目实战01_票房榜单分析和pyecharts大屏可视化
    一:最终大屏效果展示由于生成了html网页只能在本地上显示,这个大屏是动态的,只能显示其中的图片。如果要分享给他人使用,就需要将html源码转为网页。生成的html源码入口:‬​‍​‌‌​⁠​​​‌‍​​​​​‬​​​​​‬​​​​‌​​​‌‍​​​​​⁠‌‬‌​​‌Python数......
  • 非接触式免补光变焦视觉位移监测仪让结构安全可视化 微米级监测
    变焦视觉位移监测仪的特点是什么呢?变焦视觉位移监测仪的特点是什么呢?表面位移监测,非接触式该设备运用嵌入式一体化设计理念,集成主流定焦机器视觉的全方位功能,即插即用,无需繁琐的系统组装与配置。它具备自动变焦能力,可自动扫描400米范围内上千个无源靶标,实现广泛覆盖......
  • kafka可视化操作工具kafka-Eagle安装部署
    kafka-Eagle安装部署下载地址下载kafka-eagle的安装包,下载地址:https://github.com/smartloli/kafka-eagle-bin/releases环境要求部署之前,需要先装jdk8,maven,并且配置好相应环境变量部署我这边是下载的v3.0.2版本。修改配置文件下载完成后,修改配置文件信息  conf\sys......
  • Redis Desktop Manager(Redis可视化工具)安装及使用详细教程
    一、安装包下载直接从官网下载,官网下载链接地址:Downloads-Redis二、安装步骤2.1说明RedisDesktopManager是一款简单快速、跨平台的Redis桌面管理工具,也也被称作Redis可视化工具。支持命令控制台操作,以及常用,查询key、rename、delete等操作。2.2安装步骤2.2.1双击运......
  • java语言,MySQL数据库;电影推荐网站 30760(免费领源码)计算机毕业设计项目推荐万套实战教
    摘 要随着互联网时代的到来,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛。因此,建立一个B/S结构的电影推荐网站;电影推荐网站的管理工作系统化、规范化,也会提高平台形象,提高管理效率。本电影推荐网站是针对目前电影推荐网站的实际需求,从实际工作出发,对过去的电影......