Sklearn实例:水果多分类

news2024/11/28 2:35:14

机器学习五步:

  1. 加载数据集
  2. 分割数据集
  3. 建立模型
  4. 训练模型
  5. 预测模型

导入库文件

import numpy as np #科学计算库
import matplotlib.pyplot as plt #绘图库可视化函数
import pandas as pd #数据处理库,数据分析库
import seaborn as sns #高级数据可视化库

from sklearn.model_selection import train_test_split #数据分割库

一:加载数据集

fruis_df = pd.read_table("/home/aistudio/data/fruit_data_with_colors.txt")
print(fruis_df.head(3))

注:
wget https://raw.githubusercontent.com/susanli2016/Machine-Learning-with-Python/master/fruit_data_with_colors.txt

获取数据集中的特征名称

fruis_name_dict = dict(zip(fruis_df["fruit_label"], fruis_df["fruit_name"]))
print("___________")
print(fruis_name_dict)

获取数据集中的特征名称

X = fruis_df[["mass", "width", "height", "color_score"]]
y = fruis_df["fruit_label"]

二:分割数据集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=1/4, random_state=0)
print("数据集总共:{}, 训练集:{}, 测试集合:{}".format(len(X), len(X_train), len(X_test)))

绘制散点图

sns.pairplot(data = fruis_df, hue="fruit_name", vars=["mass","width","height","color_score"])

运行结果

fruit_label fruit_name fruit_subtype  mass  width  height  color_score
0            1      apple  granny_smith   192    8.4     7.3         0.55
1            1      apple  granny_smith   180    8.0     6.8         0.59
2            1      apple  granny_smith   176    7.4     7.2         0.60
___________
{1: 'apple', 2: 'mandarin', 3: 'orange', 4: 'lemon'}
数据集总共:59, 训练集:44, 测试集合:15

在这里插入图片描述
在这里插入图片描述

三:建立模型

from sklearn.neighbors import KNeighborsClassifier #KNN分类器的算法库

knn = KNeighborsClassifier(n_neighbors=5)

四:训练模型

knn.fit(X_train, y_train)

五:预测模型

y_pred = knn.predict(X_test)
print(y_pred)

from sklearn.metrics import accuracy_score #准确率
accuracy_score(y_test, y_pred) # y_test:实际值,y_pred:预测值

输出

[3 1 4 4 1 1 3 3 1 4 2 1 3 1 4]
0.5333333333333333

可视化模型

k_range = range(1, 20) # k = 1~19
acc_scores = [] # 存储每个 k 值对应的准确率

for k in k_range:
knn = KNeighborsClassifier(n_neighbors=k)
knn.fit(X_train, y_train)
acc_scores.append(knn.score(X_test, y_test))

plt.figure()
plt.xlabel(“K”) # X轴标签
plt.ylabel(“Accuracy”) # Y轴标签
plt.scatter(k_range, acc_scores)
plt.xticks([0, 5, 10, 15, 20])
plt.show()

在这里插入图片描述

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

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

相关文章

AI技术修复奥运珍贵历史影像,《永不失色的她》再现百年奥运女性光彩

Greatness of HER ! AI致敬 , 了不起的「她」。 7月25日,在国际奥委会和各方力量的支持下,阿里云以AI技术修复奥运珍贵历史影像,让百年奥运女性的伟大光彩被看见,并在巴黎推出《永不失色的她》全球首映礼。 国际奥委会…

【练习】使用DevEco Studio编写鸿蒙代码,实现卡片效果,主要是练习布局

效果展示 实现代码 build() {Column(){Column(){Image($r("app.media.avatar")).width("100%").borderRadius({topLeft:10,topRight:10})Text("今晚吃这个 | 每日艺术分享 No.43").fontSize(14).fontWeight(600).lineHeight(22).height(60)Row(…

Xlua原理分析 四

前面已经介绍了Xlua的通信原理,这篇主要记录Xlua如何做到Hotfix的。 我们项目就用到Xlua的Hotfix特性,周更用Lua去修改代码。版本内用C#开发。这点我觉得是Xlua比toLua强大的重要特性之一。 如何使用Hotfix本篇不介绍了,看Xlua教程懂得都懂…

网页上空格

  no-break space(普通的英文半角空格但不换行) 中文全角空格 (一个中文宽度)   en空格(半个中文宽度)   em空格 (一个中文宽度) 四分之一em空格 (四分之一中文宽度) 相比平时的空格(),&nbsp拥有不间断(non-breaking)特性。即连续…

postgresql 您要的日期查询都在这

1、获取当前日期 select now();select current_timestamp;返回值均是当前年月日、时分秒,且秒保留6位小数,两种方式等价 select current_time;返回值:时分秒,秒最高精确到6位 select current_date;返回值:年月日 2…

HarmonyOS 鸿蒙DFX能力简介

DFX简介: Development and Feedback eXchange(‌DFX)‌,‌用于开发、‌测试和维护鸿蒙应用,提供一系列的工具和功能,‌帮助开发者在开发过程中进行性能分析、‌故障检测、‌异常处理。比如异常处理、性能分…

【qt小系统】传感器云平台3D散点图(附源码)

摘要:本文主要使用QT5,实现了一个传感器云平台的小示例,模拟的是各类传感器的添加,例如:热成像传感器、温度传感器、超声波传感器,模拟添加完成后,会自动将此传感器的三维坐标增加到3D散点图上&…

【每日一篇】UrbanGPT:时空大语言模型 【方便自己看】

摘要 时空预测旨在预测和洞察城市环境在时间和空间上不断变化的动态。它的目的是预测未来的模式,趋势和城市生活的各个方面的事件,包括交通,人口流动和犯罪率。虽然已经有许多努力致力于开发神经网络技术来准确预测时空数据,但重…

【C 语言】深入理解冒泡排序算法

0. 前言 冒泡排序是一种经典且基础的排序算法。它虽然在效率上并非最优,但对于初学者理解排序的基本概念和逻辑有着重要的意义。 1. 冒泡排序的基本思想 冒泡排序的基本思想是通过反复比较相邻的元素并交换它们(如果顺序错误),…

基于GEC6818开发板+Linux+Qt设计的智能养老院出入管理系统(195)

一、前言 1.1 项目介绍 【1】项目功能介绍 随着我国老龄化进程的加快,养老问题日益突出,如何有效保障老年人的生活质量与安全成为社会关注的重点。智能化、信息化技术的发展为解决这一问题提供了新的思路和手段。基于Linux系统的智能养老院出入管理系统应运而生,为了实现…

记录一次使用Docker部署skywalking的过程

临时一个测试系统需要追一下bug,所以计划单节点部署一套skywalking进行调用链分析。 网上扒拉了几篇,都有点问题,这里单独记录一个。 首先skywalking需要是用es做数据源,当然也有mysql等多个版本,这里用的es。 同时…

使用JavaFx Fxml笔记

使用JavaFx Fxml实现账号密码登录 HelloApplication.java:package com.example.dr295cmonth7;import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.geometry.Insets; import javafx.scene.Parent; import javafx.scene.Scene; i…

Pinely Round 4 (Div. 1 + Div. 2)

有不明白或者想交流一下的可以加一下扣扣:2674993642,博客一般写的时候才看 A. Maximize the Last Element 解析:题目要让一次删除两个相邻的数字,最后留下尽可能最大的数字,赛时我用笔模拟了一下,发现如…

c++11,左值引用和右值引用,右值引用的作用

目录 左右值引用概念 右值引用的作用 左右值引用概念 什么是左值?什么是左值引用? 左值是一个表示数据的表达式(如变量名或解引用的指针),我们可以获取它的地址可以对它赋 值,左值可以出现赋值符号的左边,右值不能出…

最详细最新最简单的Jenkins安装使用

首先去jenkins官网下载最新LTS war版本https://www.jenkins.io/download/ 准备sdk包 、nginx配置文件 、已配置的maven文件 查看系统架构 cat /etc/redhat-release uname -a uname -m lscpu安装常用工具 yum install jq -y yum install git -yyum install nginx -y systemc…

深入源码:解析SpotBugs (6)jvm 字节码简介

文章目录 一、JVM字节码概述一、文件结构概述二、详细解析1. 魔数和Class文件的版本2. 常量池3. 访问标志4. 类索引、父类索引与接口索引集合5. 字段表和方法表6. 属性表 字节码Spotbugs 作为一名资深的Java开发工程师,对JVM及其字节码有着深入的理解。现在&#xf…

DRAM 和 NAND 闪存收入将在 2024 年显著增长 75% 和 77%

#### 市场概况 根据 TrendForce 最新发布的市场报告,预计 2024 年 DRAM 和 NAND 闪存的收入将分别显著增长 75% 和 77%,这一增长主要是由于平均价格的上涨以及高价值产品的兴起,例如 HBM(高带宽内存)和 QLC&#xff0…

卷积神经网络(六)---实现 cifar10 分类

cifar10 数据集有60000张图片,每张图片的大小都是 32x32 的三通道的彩色图,一共是10种类别、每种类别有6000张图片,如图4.27所示。 图 4.27 cifar数据集 使用前面讲过的残差结构来处理 cifar10 数据集,可以实现比较高的准确率。 …

配置本地开发服务器代理请求以及登录模块开发(二)

项目初始化完成之后,准备开始进行项目的开发,首先配置好开发环境作为整个项目的基础 一、配置代理 1、config/proxy.ts配置代理 export default {// 如果需要自定义本地开发服务器 请取消注释按需调整dev: {// localhost:8000/api/** -> https://p…