吴恩达老师机器学习作业-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]])

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

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

相关文章

Java | Leetcode Java题解之第316题去除重复字母

题目&#xff1a; 题解&#xff1a; class Solution {public String removeDuplicateLetters(String s) {boolean[] vis new boolean[26];int[] num new int[26];for (int i 0; i < s.length(); i) {num[s.charAt(i) - a];}StringBuffer sb new StringBuffer();for (in…

nginx续1:

八、虚拟主机配置 基于域名的虚拟主机 [rootserver2 ~]# ps -au|grep nginx //查看进程 修改Nginx服务配置&#xff0c;添加相关虚拟主机配置如下 1. [rootproxy ~]# vim /usr/local/nginx/conf/nginx.conf 2. .. .. 3. server { 4. listen …

第15课 Scratch少儿编程 入门篇:师生问候

师生问候 故事背景&#xff1a; 魔法学院的期末考核刚刚考完&#xff0c;魔法老师在教室里碰到小明&#xff0c;老师问小明考的怎么样&#xff1f; 程序原理&#xff1a; 找一个教室的背景&#xff0c;小精灵角色和魔法师的角色&#xff0c;将魔法师的角色造型左右反转&…

MyBatis 源码学习 | Day 1 | 了解 MyBatis

什么是 MyBatis 在对一项技术进行深入学习前&#xff0c;我们应该先对它有个初步的认识。MyBatis 是一个 Java 持久层框架&#xff0c;用于简化数据库的操作。它通过 XML 或注解的方式配置和映射原始类型、接口和 Java POJO&#xff08;Plain Old Java Objects&#xff0c;普通…

如何理解复信号z的傅里叶变换在频率v<0的时候恒为0,是解析信号

考虑例子2.12.1的说法。 首先我尝试解释第二个说法。需要注意一个事实是 实函数f的傅里叶变换F的实部是偶函数&#xff0c;虚部是奇函数。如图所示&#xff1a; 注意的是这个图中虽然是离散傅里叶变换的性质&#xff0c;但是对于一般的傅里叶变换的性质是适用的。 推导过程如下…

5款免费写作生成软件,自动生成原创文章很简单

在人工智能时代的今天&#xff0c;创作者面对写作不再是一件令人望而生畏的事情。随着AI技术的不断发展&#xff0c;涌现出了许多优秀的免费写作生成软件&#xff0c;让自动生成原创文章变得轻松简单。以下为大家详细介绍5款备受赞誉的免费写作生成软件&#xff0c;下面跟随小编…

深度学习DeepLearning Inference 学习笔记

神经网络预测 术语 隐藏层神经元多层感知器 神经网络概述 应当选择正确的隐藏层数和每层隐藏神经元的数量&#xff0c;以达到这一层的输出是下一层的输入&#xff0c;逐层变得清晰&#xff0c;最终输出数据的目的。 在人脸识别的应用中&#xff0c;我们将图片视作连续的像…

pytest测试框架之http协议接口测试

1 接口测试 日常测试中接口测试是一项重要的工作&#xff0c;尤其是http协议的接口测试更加普遍,比如一些常用的测试框架或者工具&#xff08;robotframework框架&#xff0c;testng框架&#xff0c;postman等&#xff09;都支持http接口的测试&#xff0c;而这节内容主要介绍…

【PythonCode】力扣Leetcode36~40题Python版

【PythonCode】力扣Leetcode36~40题Python版 前言 力扣Leetcode是一个集学习、刷题、竞赛等功能于一体的编程学习平台&#xff0c;很多计算机相关专业的学生、编程自学者、IT从业者在上面学习和刷题。 在Leetcode上刷题&#xff0c;可以选择各种主流的编程语言&#xff0c;如C…

使用 Python 确保结构在被释放后被垃圾回收

在 Python 中&#xff0c;确保对象在不再使用时被垃圾回收是很重要的。Python 的垃圾回收机制基于引用计数&#xff0c;并配有一个循环垃圾回收器&#xff0c;以处理引用循环。 以下就是一些确保对象被正确垃圾回收的技巧和方法&#xff1a; 1、问题背景 在 Python 中&#x…

“八股文”:程序员的福音还是梦魇?

——一场关于面试题的“代码战争” 在程序员的世界里&#xff0c;“八股文”这个词儿可谓是“如雷贯耳”。不&#xff0c;咱们可不是说古代科举考试中的那种八股文&#xff0c;而是指程序员面试中的那些固定套路的题目。如今&#xff0c;各大中小企业在招聘程序员时&#xff0…

59在Linux中加docker中加mysql,tomcat,redis

一、引言 1.1 环境不一致 我本地运行没问题啊&#xff1a;由于环境不一致&#xff0c;导致相同的程序&#xff0c;运行结果却不一致。 1.2 隔离性 哪个哥们又写死循环了&#xff0c;怎么这么卡&#xff1a;在多用户的操作系统下&#xff0c;会因为其他用户的操作失误影响到你自…

Logistic回归

Logistic回归模型&#xff1a; 适用于二分类或多分类问题&#xff0c;样本特征是数值型&#xff08;否则需要转换为数值型&#xff09; 策略&#xff1a;极大似然估计 算法&#xff1a;随机梯度 或 BFGS算法&#xff08;改进的拟牛顿法&#xff09; 线性回归表达式&#xf…

队列的基本运算(顺序,环形,链式)

以下分别介绍了顺序队列&#xff0c;环形队列&#xff0c;链式队列的基本运算。主要有五种基本运算&#xff1a;1.初始化队列&#xff0c;2.销毁队列&#xff0c;3.判断队列是否为空&#xff0c;4.进队列&#xff0c;5.出队。 目录 顺序队列 环形队列 链式队列 顺序队列与环…

upload-labs靶场练习

文件上传函数的常见函数&#xff1a; 在PHP中&#xff0c;‌文件上传涉及的主要函数包括move_uploaded_file(), is_uploaded_file(), get_file_extension(), 和 mkdir()。‌这些函数共同协作&#xff0c;‌使得用户可以通过HTTP POST方法上传文件&#xff0c;‌并在服务器上保存…

pycharm安装与配置Pyqt5

pycharm安装与配置Pyqt5 1、创建项目、虚拟环境 打开pycharm&#xff0c;File->New Project 2、安装pyqt5库 在pycharm下方Terminal终端窗口输入&#xff1a; pip install PyQt5 -i https://pypi.douban.com/simple pip install PyQt5-tools -i https://pypi.douban.c…

模拟实现strcmp,判断二个字符串是否相等

1.判断二个字符串是否相等&#xff0c;可以模仿strcmp.当二个字符串相等的时候ruturn 0.,当二个字符串小于时返回为小于0&#xff0c;当二个字符串大于时返回为大于0。const为不可以更改。 //方法一 int my_strcmp(const char* arr1, const char* arr2) {assert(arr1 &&…

CFA FRM原創講義和視頻等備考全部資料內容,順便征求建議

大家好&#xff0c;我是小伯&#xff0c; 曾經我也很喜歡上這個壇子查資料&#xff0c;好多年過去&#xff0c;現在論壇蠻雕零的很感慨。我和幾個朋友原創作了一些CFA一級二級三級和FRM一級二級雙語中英文的課件、視頻、資料&#xff0c; 是我們從2024年起一起合作的一個以自學…

C语言 | Leetcode C语言题解之第316题去除重复字母

题目&#xff1a; 题解&#xff1a; char* removeDuplicateLetters(char* s) {int vis[26], num[26];memset(vis, 0, sizeof(vis));memset(num, 0, sizeof(num));int n strlen(s);for (int i 0; i < n; i) {num[s[i] - a];}char* stk malloc(sizeof(char) * 27);int stk…

算法学习day27

一、寻找重复数(链表中找环) 给定一个包含 n 1 个整数的数组 nums &#xff0c;其数字都在 [1, n] 范围内&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。 假设 nums 只有 一个重复的整数 &#xff0c;返回 这个重复的数 。 题意&#xff1a…