首页 > 其他分享 >第六章随笔

第六章随笔

时间:2023-03-05 13:57:22浏览次数:31  
标签:idx 代码 样本 聚类 第六章 随笔 data centers

代码1. 描述性统计分析

 

 代码2. 求解原始数据的Pearson相关系数矩阵

 

 代码3. 绘制相关性热力图

 

 

 

 代码4. Lasso回归选取关键属性

 

 代码5. 构建灰色预测模型并预测

 

 代码6. 构建支持向量回归预测模型

 

 

 

 

 

 代码7. 真实值与预测值重合图

 

 代码8. 读取模型的各个特征向量以及各个成分各自的方差百分比

 

 代码9. 运用PCA读取读取模型的各个特征向量以及各个成分各自的方差百分比

 

 代码10. 聚类中心

import numpy as np
import random
import matplotlib.pyplot as plt

def distance(point1, point2): # 计算距离(欧几里得距离)
return np.sqrt(np.sum((point1 - point2) ** 2))

def k_means(data, k, max_iter=10000):
centers = {} # 初始聚类中心
# 初始化,随机选k个样本作为初始聚类中心。 random.sample(): 随机不重复抽取k个值
n_data = data.shape[0] # 样本个数
for idx, i in enumerate(random.sample(range(n_data), k)):
# idx取值范围[0, k-1],代表第几个聚类中心; data[i]为随机选取的样本作为聚类中心
centers[idx] = data[i]

# 开始迭代
for i in range(max_iter): # 迭代次数
print("开始第{}次迭代".format(i+1))
clusters = {} # 聚类结果,聚类中心的索引idx -> [样本集合]
for j in range(k): # 初始化为空列表
clusters[j] = []

for sample in data: # 遍历每个样本
distances = [] # 计算该样本到每个聚类中心的距离 (只会有k个元素)
for c in centers: # 遍历每个聚类中心
# 添加该样本点到聚类中心的距离
distances.append(distance(sample, centers[c]))
idx = np.argmin(distances) # 最小距离的索引
clusters[idx].append(sample) # 将该样本添加到第idx个聚类中心

pre_centers = centers.copy() # 记录之前的聚类中心点

for c in clusters.keys():
# 重新计算中心点(计算该聚类中心的所有样本的均值)
centers[c] = np.mean(clusters[c], axis=0)

is_convergent = True
for c in centers:
if distance(pre_centers[c], centers[c]) > 1e-8: # 中心点是否变化
is_convergent = False
break
if is_convergent == True:
# 如果新旧聚类中心不变,则迭代停止
break
return centers, clusters

def predict(p_data, centers): # 预测新样本点所在的类
# 计算p_data 到每个聚类中心的距离,然后返回距离最小所在的聚类。
distances = [distance(p_data, centers[c]) for c in centers]
return np.argmin(distances)

 

 代码11. 聚类中心绘图

 

 代码12. 聚类中心绘图典例

 

 

 

标签:idx,代码,样本,聚类,第六章,随笔,data,centers
From: https://www.cnblogs.com/zqddsb/p/17180351.html

相关文章

  • 第六章--财政收入影响因素分析及预测
    1.数据分析 importmatplotlib.pyplotaspltimportnumpyasnpimportpandasaspdinputfile='./data.csv'data=pd.read_csv(inputfile)describe=data.d......
  • 《渗透测试》学习随笔 day7
     #APP应用开发架构:1、原生开发安卓一般使用java语言开发,当然现在也有kotlin语言进行开发。如何开发就涉及到具体编程了,这里就不详说了。简单描述就是使用安卓提供的......
  • MySQL随笔
    函数:一、时间类ps:可以使用now()获取当前系统时间①DATE_SUB:获取时间A前B天的时间用法:date_sub(A,INTERBALBunit)②DATE_FORMAT:时间格式化,将A转化成'%Y-%m-%d'的......
  • spingboot随笔
    idea如何创建springboot项目NewMoudle>>SpringInitializrProjectMetadata:Type>>Maven,Packaging>>jar/war加载starters选项:DeveloperTools>>Lombok,Web>>S......
  • 《渗透测试》学习随笔 day6
    1WAF原理:Web应用防火墙,保护web影响:常规Web安全测试手段会受到拦截如后台Webshell连接演示:免费D盾防护软件Windows2012+IIS+D盾分类:硬件WAF软件WAF云WAF ......
  • 随笔
    随笔2023-02-19随笔2023-02-26......
  • 每日随笔2023/3/1
    今天,上了半天课,没什么收获,没怎么听,课比较水,下午醒了之后学习了android,,看了几十分钟的速成课,了解到了跳转,提示,菜单的一些需要用的操作,然后晚上看了数据库的连接,从一个新的课......
  • 《渗透测试》学习随笔 day5
    1常规化原理:源码数据都在同服务器影响:无,常规安全测试手法 2站库分离:原理:源码数据库不在同服务器存储:其他服务器上数据库&云数据库产品影响:数据被单独存放,能连接才......
  • 赛前的随笔
    对于生在河北的悲哀,其实这种悲哀很久以前就是有的,只不过之前比较单纯,比较天真,也认不清现实,只是悲哀于\(700\)分上不了清华北大,竞争压力大的悲哀,认为自己照这样努力学习,成......
  • Java基础随笔(1)abstract和interface
    publicabstractclassDemo14{publicStringvar="123";publicabstractdoublet1();publicvoidt2(Stringq){System.out.println("1......