吴恩达老师机器学习作业-ex7

news2024/11/14 13:37:19

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

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 = 100000
        for j in range(n):
            s = np.sum(np.power((X[i,:]-centros[j,:]),2))
            if s < minis:
                minis = s
                idx[i] = j
    return 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]])

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

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

相关文章

安防监控平台智能边缘分析一体机视频智能分析客流统计检测算法详细介绍

在当今数字化时代&#xff0c;数据的重要性不言而喻。特别是在零售、交通、安防等行业中&#xff0c;准确的客流统计数据对于业务决策、资源优化和安全管理至关重要。随着技术的进步&#xff0c;智能边缘分析一体机的出现为客流统计提供了一种高效、实时的解决方案。本文将详细…

【教育宝-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

windows下设置java环境变量

1.打开window的环境变量设置 右键开始菜单选择系统 选择高级系统设置&#xff1a; 点击环境变量 2.在系统变量 新增 JAVA_HOME&#xff1b;该变量的值 选择jdk所在的目录即可。 JAVA_HOME: D:\Program Files\Java\jdk1.8.0_131 3. 在系统变量新增 classpath; 该变量的值设置…

校园水电费管理小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;学生管理&#xff0c;教师管理&#xff0c;宿舍信息管理&#xff0c;学生缴费管理&#xff0c;教师缴费管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;我的 开发系统…

MSA+抑郁症模型总结(三)(论文复现)

MSA抑郁症模型总结&#xff08;三&#xff09;&#xff08;论文复现&#xff09; 本文所涉及所有资源均在传知代码平台可获取 文章目录 MSA抑郁症模型总结&#xff08;三&#xff09;&#xff08;论文复现&#xff09;热门研究领域&#xff1a;情感计算的横向发展一、概述二、论…

了解关于标准化的知识

1.标准化组织 1.1国家标准化管理委员会(Standardization Administration of the Peoples Republic of China&#xff0c;简称SAC) TC--(Technical Committee) 技术委员会. SAC/TC,就是“国家标准化管理委员会”下属的一个专项或一个行业的“技术委员会或技术小组”&a…

MySQL--查询数据

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 一、基本查询语句 MySQL从数据表中查询数据的基本语句为SELECT语句。其基本格式为&#xff1a; select {* | <字段列表>}[from <表1>,&l…

食堂窗口自助点餐小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;商家管理&#xff0c;店铺信息管理&#xff0c;菜品分类管理&#xff0c;菜品信息管理&#xff0c;订单管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#…

Oracle SQL Developer 连接第三方数据库

首先Oracle SQL Developer除了支持连接Oracle数据库外&#xff0c;还支持连接第三方数据库&#xff0c;包括&#xff1a; Amazon RedshiftHiveIBM DB2MySQLMicrosoft SQL ServerSybase Adaptive ServerPostgreSQLTeradataTimesTen 首先&#xff0c;你需要在菜单Tools > Pr…

pypinyin,一个有趣的 Python 库!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个有趣的 Python 库 - pypinyin。 Github地址&#xff1a;https://github.com/mozillazg/python-pinyin 在处理中文文本时&#xff0c;拼音转换是一项常见的需求。拼音在自然…

图片打印---print-js,解决图片过长过宽,溢出分页问题

提示&#xff1a;打印图片 文章目录 [TOC](文章目录) 前言一、调取window.print二、print-js通过图片url打印三、print-js把图片转成html后调整尺寸再打印总结 前言 一、调取window.print printImage.vue <template><div class"print_img_fixed"> <…

读零信任网络:在不可信网络中构建安全系统07设备信任

1. 设备信任 1.1. 在零信任网络中建立设备信任至关重要&#xff0c;这也是非常困难的一个环节 1.2. 建立设备信任是基石&#xff0c;直接影响零信任网络架构的成败 1.3. 大多数网络安全事件都和攻击者获得信任设备的控制权相关&#xff0c;这种情况一旦发生&#xff0c;信任…

中山网站建设概述

随着互联网的发展&#xff0c;网站建设已经成为企业和个人在网络上展示自身形象和提供服务的重要途径。中山作为中国的重要城市之一&#xff0c;也在网站建设方面取得了很大的进步。网站建设不仅可以提高企业的知名度和竞争力&#xff0c;还可以提升用户体验&#xff0c;增加客…

Java swing项目汇总

Java swing项目汇总 序号项目名称1&#xff08;无需数据库&#xff09;swing推箱子小游戏2&#xff08;无需数据库&#xff09;swing学生基本信息管理系统3&#xff08;无需数据库&#xff09;仓库管理系统&#xff08;源码详细注释详细报告&#xff09;4&#xff08;无需数据…

linux uos悬浮窗口置顶问题

问题背景 公司软件有一个功能&#xff0c;在PPT播放时&#xff0c;我们软件悬浮窗口需要在WPS幻灯片上层显示&#xff0c;方便客户操作按钮。在window 上我们设置了窗口的topmost 所以能够显示在最前面。如下图所示&#xff1a; 但是在软件适配国产操作系统Linux统信和麒麟在w…

正则表达式 贪婪与非贪婪匹配

目录 一. 回顾二. 遇到的问题三. 分析四. 解决4.1 转换为非贪婪模式匹配4.2 提高匹配的精度 一. 回顾 我们在正则表达式 分组与非捕获组这篇文章中&#xff0c;有如下分组匹配案例 <select name"fruit_console"><option value"apple" selected&…

银河麒麟V10使用vsn

环境:电脑windows11 ,系统银河麒麟V10的,通过堡垒机链接的,vsn也可以通过堡垒机链接,就相当于自己链接的时候不需要输入ip和端口号之类的, 目前银河麒麟机器上已经安装了vsn 步骤1:windows本地机器安装RealVNC https://www.realvnc.com/en/connect/download/viewer…

(三)springboot2.7.6集成activit5.23.0之流程跟踪高亮显示

1.引入diagram-viewer。 上一篇集成流程设计器时已经把diagram-viewer文件夹拷贝过来了。所以这一步就省略了。 2.引入依赖activiti-diagram-rest。 <dependency><groupId>org.activiti</groupId><artifactId>activiti-diagram-rest</artifactId…

设施农业智能化新引擎:AutoML让复杂农业算法唾手可得

&#xff08;于景鑫 北京市农林科学院智能装备技术研究中心&#xff09;近年来,人工智能技术蓬勃发展,大模型呈现出肆意生长之势,为各行各业带来新机遇。AutoML作为新一代自动化机器学习技术,承载着颠覆传统、引领变革的使命,正逐渐成为现代农业的"新宠"。本文将深入…

HCIP学习作业一 | HCIA复习

要求&#xff1a; R1-R2-R3-R4-R5 RIP 100 运行版本2 R6-R7 RIP 200 运行版本1 1.使用合理IP地址规划网络&#xff0c;各自创建环回接口 2.R1创建环回 172.16.1.1/24 172.16.2.1/24 172.16.3.1/24 3.要求R3使用R2访问R1环回 4.减少路由条目数量&#xff0c;R1-R2之间…