第1章 引言

目录

  • 1. 鸢尾花分类
    • 1.1 初识数据
    • 1.2 衡量模型是否成功:训练数据与测试数据
    • 1.3 要事第一:观察数据
    • 1.4 构建第一个模型:k近邻算法(KNeighborsClassifier)
    • 1.5 做出预测(predict)
    • 1.6 评估模型

1. 鸢尾花分类

  • 在多个选项中预测其中一个(鸢尾花的品种):分类问题
  • 可能的输出(鸢尾花的不同品种):类别
  • 单个数据点(一朵鸢尾花)的预期输出:这朵花的品种
  • 对于一个数据点来说,它的品种:标签

1.1 初识数据

  • 使用鸢尾花(Iris)数据集
from sklearn.datasets import load_irisdataset = load_iris()print(dataset.keys())
# dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename', 'data_module'])
# data: 测量数据(150*4)
# target: 每朵花的品种(150)
# target_names: 花的品种(3)
# feature_names: 对特征进行说明(4)

1.2 衡量模型是否成功:训练数据与测试数据

  • 不能将用于构建模型的数据用于评估模型

    • 无法告诉我们模型的泛化能力如何(在新数据上能否正确预测)
  • 将收集好的数据分成两个部分

    • 一部分用于构建机器学习模型:训练数据训练集
    • 另一部分用于评估模型性能:测试数据测试集留出集
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_splitdataset = load_iris()
X_train, X_test, y_train, y_test = train_test_split(dataset["data"], dataset["target"], random_state=0)
# X: 数据
# y: 标签
# random_state: 随机数生成器的种子
# 训练数据占比75%
# 测试数据占比25%

1.3 要事第一:观察数据

  • 观察数据的方法:可视化
    • 绘制散点图
      • 一个特征作为 x x x
      • 一个特征作为 y y y
      • 缺点:只能绘制两个或三个特征,难以对多于三个特征的数据集作图
    • 绘制散点图矩阵
      • 两两查看所有的特征
      • 缺点:无法同时显示所有特征之间的关系
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import pandas as pd
import matplotlib.pyplot as pltdataset = load_iris()
X_train, X_test, y_train, y_test = train_test_split(dataset["data"], dataset["target"], random_state=0)
dataframe = pd.DataFrame(X_train, columns=dataset["feature_names"])
pd.plotting.scatter_matrix(frame=dataframe, c=y_train, figsize=(15, 15), marker="o", hist_kwds={"bins": 20}, s=60, alpha=0.8, cmap=plt.cm.get_cmap('Pastel1'))
# c: 颜色
# figsize: 图的尺寸
# marker: 点的样式
# hist_kwds: 柱状图的样式
# s: 点的半径
# alpha: 透明度
# cmap: 配色风格
plt.show()

Iris数据集的散点矩阵,按类别标签着色

1.4 构建第一个模型:k近邻算法(KNeighborsClassifier)

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifierdataset = load_iris()
X_train, X_test, y_train, y_test = train_test_split(dataset["data"], dataset["target"], random_state=0)
knn = KNeighborsClassifier(n_neighbors=1)
knn.fit(X_train, y_train)

1.5 做出预测(predict)

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
import numpy as npdataset = load_iris()
X_train, X_test, y_train, y_test = train_test_split(dataset["data"], dataset["target"], random_state=0)
knn = KNeighborsClassifier(n_neighbors=1)
knn.fit(X_train, y_train)
X_new = np.array([[5, 2.9, 1, 0.2]])
# 与训练集格式对应
prediction = knn.predict(X_new)
print(f"{prediction}: {dataset['target_names'][prediction]}")
# [0]: ['setosa']

1.6 评估模型

  • 计算精度来衡量模型的优劣
    • 精度:品种预测正确的所占比例
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
import numpy as npdataset = load_iris()
X_train, X_test, y_train, y_test = train_test_split(dataset["data"], dataset["target"], random_state=0)
knn = KNeighborsClassifier(n_neighbors=1)
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)
print(f"score(np.mean) : {np.mean(y_test == y_pred)}")
# score(np.mean) : 0.9736842105263158
# 参数: 布尔表达式(测试标记与预测标记是否相等)
print(f"score(knn.score) : {knn.score(X_test, y_test)}")
# score(knn.score) : 0.9736842105263158
# 参数: 测试数据,测试标记

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

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

相关文章

Anaconda定制Python编程并打包

本文主要介绍如何使用Anaconda定制一个Python编程环境并打包,方便编程环境迁移。 文章参考 谢作如 邱奕盛两位老师的《为信息科技教学定制一个Python编程环境》 * 开发不同的项目需要不同的库(甚至不同版本),把所有的库安装到一…

【Python】使用tkinter设计开发Windows桌面程序记事本(1)

下一篇: 记事本介绍 电脑记事本是一种简单的文本编辑器,用于在电脑上创建、编辑和存储文本文件。它通常被用作轻量级的文本编辑工具,适用于简单的文本编辑任务,如写日记、做笔记、编写代码等。以下是对电脑记事本的详细介绍&…

mysql生成到当前时间的时间序列,报表按时间补0

生成本月每日的时间序列 SELECT DATE_FORMAT(date_add( CONCAT(YEAR(Date(curdate())),‘-0’,MONTH(Date(curdate())),‘-’,‘01’), INTERVAL ( cast( help_topic_id AS signed) ) DAY ) ,‘%Y-%m-%d’ ) FROM mysql.help_topic WHERE help_topic_id < DAY ( curdate( ) …

理解接雨水算法

一、IDEA注释显示图片 在做题时&#xff0c;需要对照这图片&#xff0c;才能更好的梳理思路。 首先&#xff0c;注释里添加<img/>标签 之后&#xff0c;将鼠标光标放置在需要以阅读模式预览注释的地方&#xff0c;然后按快捷键CtrlAltQ即可 二、接雨水算法 先看接雨水…

Zustand 状态管理

Zustand 状态管理 安装创建 Store给 Store 添加TS类型约束在页面使用 Store返回 Store 中所有状态在 Store 中使用 async 异步方法使用 Immer Middleware (中间件) 更新深层嵌套的 State使用 get 方法&#xff0c;在 set 方法外访问 State 中的数据使用 selector什么是 selecto…

Python猜数游戏

文章目录 1 Game Rule2 Code3 Result 1 Game Rule 猜数字游戏目的是猜测出程序想出的数字&#xff0c;基本逻辑&#xff1a; 程序随机选择1到100之间的一个数字或任何其他数字组合&#xff1b; 然后它会要求玩家输入它的建议&#xff1b; 然后它会检查这个数字是否与计算机随…

全网独家:基于openEuler-20.03-LTS-SP4底包构建opengaussV5.0.1LTS的单机极简版数据库容器

本文尝试基于openEuler-20.03-LTS-SP4底包构建opengaussV5.0.1LTS的单机版极简版数据库容器。 一、软件包源 1、openEuler-20.03-LTS容器底包 openEuler-20.03-LTS-SP4 下载链接 sha256:24d8f51c1f3a79eb975c4e498cadd9055bfd708d66c15935ec46664d0f975a7b openEuler-dock…

计算机网络—— 概述

概述 1.1 因特网概述 网络、互联网和因特网 网络由若干结点和连接这些结点的链路组成多个网络还可以通过路由器互联起来&#xff0c;这样就构成了一个覆盖范围更大的网络&#xff0c;即互联网&#xff08;或互连网&#xff09;。因特网&#xff08;Internet&#xff09;是世…

oracle基本用户管理和权限分配

1.用户与模式的关系&#xff0c;一一对应的关系 2.创建与管理用户 2.1创建用户语法 CREATE user wdf IDENTIFIED by tiger--创建用户wdf,密码tiger DEFAULT tablespace users--用户的默认表空间 quota 10M on users;--在表空间的占用最大空间 注意&#xff1a;用户创建以后…

3d模型为什么只显示线是什么原因怎么解决---模大狮模型网

在3D建模中&#xff0c;有时我们会遇到模型只显示线框&#xff0c;而没有填充色或纹理的情况。这种问题可能会导致场景的不协调和视觉效果的不理想&#xff0c;影响到我们的设计效率和效果。本文将探讨一些可能导致该问题的原因&#xff0c;并提供解决方法&#xff0c;以帮助您…

WPS Office找回丢失的工作文件

WPS office恢复办公文件方法有两种. 1.通过备份中心可以查看近期编辑 office 历史版本进行恢复. 2.缓存备份目录可以查看编辑过的 office 文件的历史版本&#xff0c;新版本 WPS 可以在配置工具-备份清理找到&#xff0c;2019 年旧版本 WPS 可以在新建任意 office 文件-文件-选…

城堡世界源码

随着数字技术的飞速发展和人们对于娱乐需求的不断提升&#xff0c;城堡世界源码开发逐渐成为了新的热门话题。城堡世界是一个集潮流、艺术、科技于一体的数字娱乐新领域&#xff0c;通过将虚拟现实、增强现实等技术融入传统玩具设计中&#xff0c;为玩家们带来了全新的互动体验…