当前位置: 首页 > news >正文

吴恩达老师机器学习作业-ex7(聚类)

导入库,读取数据,查看数据类型等进行分析,可视化数据

import matplotlib.pyplot as plt
import numpy as np
import scipy.io as sio#读取数据
path = "./ex7data2.mat"
data = sio.loadmat(path)
# print(type(data))
# print(data.keys())
X = data.get("X")
# print(X.shape)
# print(X)
# print(type(X))#可视化数据
plt.scatter(X[:,0],X[:,1])
plt.show()

簇分配

在该函数中,设置一个minis表示样本与各个聚类中心点的距离,所以最开始初始化为一个比较大的数值。第一个for循环为迭代每一个样本,第二个for循环迭代每一个聚类中心点,已便找到最近的聚类中心点。

def means_classification(X,centros):m = len(X)n = len(centros)idx = np.zeros(m)for i in range(m):minis = 100000for j in range(n):s = np.sum(np.power((X[i,:]-centros[j,:]),2))if s < minis:minis = sidx[i] = jreturn idx

计算聚类中心

使用平均值计算聚类中心

def means_center(X,K,idx):centors = []for i in range(K):indicates = np.where(idx == i)centors_i = np.mean(X[indicates],axis=0)centors.append(centors_i)return centors

初始化聚类中心

随机生成三个整数(样本范围内),然后当作下标索引,找到三个样本的点作为初始化的聚类中心。

def init_centros(X,K):m = len(X)random_int = []for i in range(K):random_int_i = np.random.randint(0, m)random_int.append(random_int_i)random_centros = []for k in random_int:random_centros.append(X[k])return np.array(random_centros)

手动定义聚类数量为3

K = 3

多次迭代,运行Kmeans算法

def run_Kmeans(X,K,times):for i in range(times):centros = init_centros(X, K)idx = means_classification(X, centros)centros = means_center(X, K, idx)return idx,centros

绘制出聚类算法后的散点图

def plot_kmeans(X,idx):cluster1 = X[np.where(idx == 0)[0], :]cluster2 = X[np.where(idx == 1)[0], :]cluster3 = X[np.where(idx == 2)[0], :]fig,ax = plt.subplots()ax.scatter(cluster1[:, 0], cluster1[:, 1], c="r", label="cluster1")ax.scatter(cluster2[:, 0], cluster2[:, 1], c="g", label="cluster2")ax.scatter(cluster3[:, 0], cluster3[:, 1], c="b", label="cluster3")plt.show()idx,centros = run_Kmeans(X,K,100)
plot_kmeans(X,idx)

注意这里有个问题,随机初始化时,最后好几次是得到了局部最优,该题目可以先手动初始化聚类中心。

centros = np.array([[3,3],[6,2],[8,5]])

相关文章:

吴恩达老师机器学习作业-ex7(聚类)

导入库&#xff0c;读取数据&#xff0c;查看数据类型等进行分析&#xff0c;可视化数据 import matplotlib.pyplot as plt import numpy as np import scipy.io as sio#读取数据 path "./ex7data2.mat" data sio.loadmat(path) # print(type(data)) # print(data…...

lombok 驼峰命名缺陷,导致后台获取参数为null的解决办法

1.问题&#xff1a; 下面是我定义一个请求类的属性&#xff0c;采用Lombok注解&#xff0c;自动构建get和set方法。 Schema(description "父组织编码", requiredMode Schema.RequiredMode.REQUIRED) private String pOrgCode; 遇到这种命名&#xff0c;你会发现在…...

【dockerpython】亲测有效!适合新手!docker创建conda镜像+容器使用(挂载、端口映射、gpu使用)+云镜像仓库教程

文章目录 docker基本概念简介配置镜像加速源创建conda镜像1. 写 Dockerfile文件2. 创建镜像3. 创建容器并测试 容器的使用1. wsl挂载2. 端口映射3. 补充-gpu 云镜像仓库使用1. 登录2. 将本地镜像上传至云镜像仓库3. 从云镜像仓库下载镜像到本地 docker基本概念简介 简单来讲&a…...

矩阵,求矩阵秩、逆矩阵

求矩阵秩的方法&#xff1a; 高斯消元法&#xff1a;通过行变换将矩阵化为行阶梯形矩阵&#xff0c;然后数非零行的数量。LU分解&#xff1a;通过分解矩阵成上下三角矩阵&#xff0c;计算非零对角元素的数量。SVD分解&#xff1a;通过奇异值分解&#xff0c;计算非零奇异值的数…...

指针和const

const int* ptr&#xff0c;int* const ptr&#xff0c;const int* const ptr 这三种指针定义有什么区别&#xff1f;用法有什么不同&#xff1f; 指向的地址是否可变指向的地址上存储的内容是否可变const属性const int* ptr可改变不可改*ptr具有const属性int* const pts不可改…...

基于C#调用文心一言大模型制作桌面软件(可改装接口)

目录 开发前的准备账号注册应用创建应用接入 开始开发创建项目设计界面使用 AK&#xff0c;SK 生成鉴权签名窗体代码 百度智能云千帆大模型平台什么是百度智能云千帆大模型平台模型更新记录 开发前的准备 账号注册 访问百度智能云平台&#xff0c;通过百度账号登录或手机号验证…...

VScode插件安装

一、常用插件 Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code vscode 中文插件 Auto Rename Tag 闭合标签 Path Intellisense 一个非常实用的工具&#xff0c;它提供了文件路径的自动补全功能&#xff0c;可以极大地提高开发效率。路径自动补全、…...

《Milvus Cloud向量数据库指南》——高可用黄金标准:深入解析与业务策略考量

高可用黄金标准:深入解析与业务策略考量 在信息技术飞速发展的今天,高可用性(High Availability, HA)已成为衡量企业IT系统性能与稳定性的关键指标之一。它不仅仅关乎技术层面的优化与配置,更是企业保障业务连续性、提升客户体验、增强市场竞争力的重要基石。尽管高可用性…...

sqli-labs注入练习1,2关

sqli-labs第一关 判断是否存在sql注入 可见&#xff0c;根据输入数字的不同&#xff0c;结果也不同 判断sql语句是否是拼接&#xff0c;且是字符型还是数字型 由上可见&#xff0c;这关指定是字符型且存在sql注入漏洞 使用联合注入 第一步&#xff1a;首先知道表格有几列&…...

B站宋红康JAVA基础视频教程个人笔记chapter04

文章目录 1.IDEA安装好后的一些设置和学习1.1关于IDEA内部jdk版本的设置1.2 一些样式以及快捷键的常用设置&#xff08;强烈推荐&#xff09; 2.工程与模块管理3.如何彻底的卸载IDEA 1.IDEA安装好后的一些设置和学习 1.1关于IDEA内部jdk版本的设置 1.File—>Project Struc…...

关于java枚举为什么可以拿来当单例实现这件事看看ikun怎么说

为什么枚举可以保证单例 枚举可以保证单例的原因主要可以归结为以下几个方面&#xff1a; 1. 枚举的实例化过程 线程安全&#xff1a;枚举的实例化过程是由JVM控制的&#xff0c;在类加载时就完成了枚举常量的初始化。由于这个初始化过程是线程安全的&#xff08;JVM在加载枚…...

Hugging Face下载模型

1、安装 huggingface-cli pip install -U huggingface_hub 2、设置环境变量&#xff08;如果你打算使用 HF_ENDPOINT 环境变量来指定下载镜像站点&#xff09;&#xff1a; export HF_ENDPOINThttps://hf-mirror.com 3、使用 huggingface-cli 下载模型: 使用下面的命令来下…...

JVM-垃圾回收

什么是JVM的垃圾回收&#xff1f; 垃圾回收&#xff08;Garbage Collection, GC&#xff09;是Java虚拟机&#xff08;JVM&#xff09;自动管理内存的一种机制&#xff0c;其目的是自动回收不再使用的对象所占用的内存空间&#xff0c;以防止内存泄漏和提升内存利用效率。 运…...

8.C基础_指针基础

指针概述 1、定义与初始化 形式&#xff1a;<数据类型>* <变量名> <地址>; int a 10; int *p &a; 指针的类型不同&#xff0c;p时的偏移地址量不同&#xff0c;偏移地址 sizeof(类型)Byte 注意点&#xff1a; 指针的类型要与数据的类型保持一…...

安泰功率放大器使用注意事项有哪些内容和要求

功率放大器是一种广泛应用于音频系统、通信系统和实验室等领域的设备&#xff0c;其作用是将输入信号放大到足够大的功率输出。为了安全使用功率放大器并保证其性能和寿命&#xff0c;以下是一些使用功率放大器时需要注意的事项和要求。 一、选择适当的功率放大器&#xff1a; …...

windows下,使用vs code远程连接云服务器【以CentOS7为例】

windows下&#xff0c;使用vs code远程连接云服务器 1. 下载VS code并准备相关插件2. 使用Remote - SSH远程控制Linux 1. 下载VS code并准备相关插件 1. VS code官网&#xff1a; 下载地址&#xff1a;https://code.visualstudio.com/Download下载合适版本的vs code。 2. 推荐…...

x264 中像素扩边算法源码分析

介绍 在视频编码中,特别是在使用x264这样的H.264/MPEG-4 AVC编码器时,像素扩边(或称为边缘扩展)是一项重要的预处理步骤。像素扩边的目的是在帧的边缘添加额外的像素,这样在编码过程中可以应用滤波器,如去块滤波器(deblocking filter)和水平/垂直滤波器,而不会受到帧…...

数据结构——双链表详解(超详细)

前言&#xff1a; 小编在之前已经写过单链表的创建了&#xff0c;接下来要开始双链表的讲解了&#xff0c;双链表比单链表要复杂一些&#xff0c;不过确实要比单链表更好进行实现&#xff01;下面紧跟小编的步伐&#xff0c;开启今天的双链表之旅&#xff01; 目录 1.概念和结构…...

银行项目利润问题(贪心思想)

import java.util.Comparator; import java.util.PriorityQueue;public class test32 {//输入正数数组costs、正数数组profits、正数K、正数M//costs[i]表示i号项目花费&#xff0c;profits[i]表示i号项目在扣除花费后还挣的钱//K表示有多少项目//M表示初始资金//每做完一个项目…...

SQLite

SQLite Insert 插入 语句 方式1&#xff1a; INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)] VALUES (value1, value2, value3,...valueN); 方式2&#xff1a; INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN); &#xff08;如果要…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关

在水泥厂的生产流程中&#xff0c;工业自动化网关起着至关重要的作用&#xff0c;尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关&#xff0c;为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多&#xff0c;其中不少设备采用Devicenet协议。Devicen…...

文件上传漏洞防御全攻略

要全面防范文件上传漏洞&#xff0c;需构建多层防御体系&#xff0c;结合技术验证、存储隔离与权限控制&#xff1a; &#x1f512; 一、基础防护层 前端校验&#xff08;仅辅助&#xff09; 通过JavaScript限制文件后缀名&#xff08;白名单&#xff09;和大小&#xff0c;提…...

Git 命令全流程总结

以下是从初始化到版本控制、查看记录、撤回操作的 Git 命令全流程总结&#xff0c;按操作场景分类整理&#xff1a; 一、初始化与基础操作 操作命令初始化仓库git init添加所有文件到暂存区git add .提交到本地仓库git commit -m "提交描述"首次提交需配置身份git c…...

HTML版英语学习系统

HTML版英语学习系统 这是一个完全免费、无需安装、功能完整的英语学习工具&#xff0c;使用HTML CSS JavaScript实现。 功能 文本朗读练习 - 输入英文文章&#xff0c;系统朗读帮助练习听力和发音&#xff0c;适合跟读练习&#xff0c;模仿学习&#xff1b;实时词典查询 - 双…...

在ubuntu等linux系统上申请https证书

使用 Certbot 自动申请 安装 Certbot Certbot 是 Let’s Encrypt 官方推荐的自动化工具&#xff0c;支持多种操作系统和服务器环境。 在 Ubuntu/Debian 上&#xff1a; sudo apt update sudo apt install certbot申请证书 纯手动方式&#xff08;不自动配置&#xff09;&…...