机器学习3判断机器算法的性能

news/2024/10/18 5:10:18/

文章目录

  • 一、判断机器算法的性能1基本使用
    • 1.目的
    • 2.使用pycharm函数封装
    • 3.sklearn中的train test split:
    • 4.完美调用:
  • 二、判断机器算法的性能2分类的准确度(accuracy)
    • 准确度初步计算:
    • 完善KNNpy程序如下:

一、判断机器算法的性能1基本使用

1.目的

判断机器算法的性能(train test split)目的是帮助我们找到一个更好的模型/测试时数据,训练数据;预测的准确率(越接近1越准确):
在这里插入图片描述
在这里插入图片描述

2.使用pycharm函数封装

使用pycharm函数封装的形式运行train test split算法:

import numpy as np
def train_test_split(x,y,test_ratio=0.2,seed=None):"""将数据x和y按照test_ratio分割成训练数据集和测试数据集"""assert x.shape[0]==y.shape[0],\"the size of x must be equal to the sze of y"assert 0.0<=test_ratio<=1.0,\"test_ration must be valid"if seed:np.random.seed(seed)shuffle_indexes = np.random.permutation(len(x))test_size = int(len(x) * test_ratio)test_indexes = shuffle_indexes[:test_size]  # 确定测试数据集对应的索引train_indexes = shuffle_indexes[test_size:]  # 训练数据集所对应的索引x_train = x[train_indexes]y_train = y[train_indexes]x_test = x[test_indexes]y_test = y[test_indexes]return x_train,x_test,y_train,y_test

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

3.sklearn中的train test split:

在这里插入图片描述

4.完美调用:

在这里插入图片描述

二、判断机器算法的性能2分类的准确度(accuracy)

分类的准确度(accuracy):

准确度初步计算:

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

完善KNNpy程序如下:

import numpy as np
from math import sqrt
from collections import Counter
from .metrics import accuracy_scoreclass KNNClassifier:def __init__(self, k):"""初始化kNN分类器"""assert k >= 1, "k must be valid"self.k = kself._X_train = Noneself._y_train = Nonedef fit(self, X_train, y_train):"""根据训练数据集X_train和y_train训练kNN分类器"""assert X_train.shape[0] == y_train.shape[0], \"the size of X_train must be equal to the size of y_train"assert self.k <= X_train.shape[0], \"the size of X_train must be at least k."self._X_train = X_trainself._y_train = y_trainreturn selfdef predict(self, X_predict):"""给定待预测数据集X_predict,返回表示X_predict的结果向量"""assert self._X_train is not None and self._y_train is not None, \"must fit before predict!"assert X_predict.shape[1] == self._X_train.shape[1], \"the feature number of X_predict must be equal to X_train"y_predict = [self._predict(x) for x in X_predict]return np.array(y_predict)def _predict(self, x):"""给定单个待预测数据x,返回x的预测结果值"""assert x.shape[0] == self._X_train.shape[1], \"the feature number of x must be equal to X_train"distances = [sqrt(np.sum((x_train - x) ** 2))for x_train in self._X_train]nearest = np.argsort(distances)topK_y = [self._y_train[i] for i in nearest[:self.k]]votes = Counter(topK_y)return votes.most_common(1)[0][0]def score(self, X_test, y_test):"""根据测试数据集 X_test 和 y_test 确定当前模型的准确度"""y_predict = self.predict(X_test)return accuracy_score(y_test, y_predict)def __repr__(self):return "KNN(k=%d)" % self.k

http://www.ppmy.cn/news/754.html

相关文章

【正点原子FPGA连载】第二十五章 双路高速AD实验 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第二十五章 双路…

NR DCI Format介绍

NR DCI(下行控制信息)与LTE中的DCI类似&#xff0c;均是承载上/下行数据信道的调度信息&#xff08;如PDSCH/PUSCH&#xff09;。 如下表&#xff0c;摘自38212 7.3.1节。其中0-0/0-1承载上行数据信道PUSCH的调度信息。1-0/1-1承载下行数据信道PDSCH的调度信息&#xff0c;加扰…

小程序开发音视频问题汇总及解决方案

目录 问题一&#xff1a;开发音视频&#xff0c;必用的两个小程序组件live-player和live-pusher&#xff0c;他们做什么用的&#xff0c;怎么才能使用&#xff1f; 问题二&#xff1a;一个页面只能插入一个 问题三&#xff1a;真机调试图片预览及视频全屏无反应 问题四&am…

Android编写一个视频监控App

Android编写一个视频监控App 很久没写app了&#xff0c;小项目需要写一个rtmp拉流的视频监控app&#xff0c;简单记录一下。 参考&#xff1a;Android实现rtmp推拉流摄像头&#xff08;三&#xff09;_空空7的博客-CSDN博客_android rtmp拉流 相关库 引用外部库首先添加这个…

antDesign设置树和机构的组合

<template><drag-modaltitle"流程发送":visible"visibleP"class"swy"width"60%":confirm-loading"confirmLoading"ok"handleOk"cancel"handleCancel"okText"发送"><div class…

Redis缓存问题

目录 1、缓存穿透 2、缓存击穿 3、缓存雪崩 ​​​​​​​4、Redis的并发竞争key问题 ​​​​​​​1、缓存穿透 大量请求缓存中和数据库不存在的数据。 大量用户请求缓存中和数据库中不存在的数据&#xff0c;导致所有请求都落到数据库上&#xff0c;造成数据库短时间内承…

Ambari-yarn-timeline 内置 HBase数据表清理

HDP 集群 timeline 内置的 HBase 数据表持续增大&#xff0c;我们将默认TTL30改 为7 天。 ambari界面YARN 服务中 的 timeline v2.0 timeline 内置 HBase数据HDFS路径 &#xff1a; 表在HDFS上的大小 使用如下命令进入 Hbase shell [hdfswinner-backup-hdp root]$ hbase -…

【C++】vector的认识+模拟实现

目录1️⃣vector的概念2️⃣STL中vector的使用2.1 vector的定义2.2 iterator的使用2.3 vector的空间问题2.4 vector的增删查改2.5 迭代器失效问题2.5.1 什么是迭代器&#xff1f;2.5.2 迭代器失效3️⃣vector的模拟实现3.1 迭代器3.2 构造函数&#x1f50e;memcpy的拷贝异常问题…