python 12实验

1.导入数据。
2.清洗数据,将缺失值或“NAN”替换为“无”,并将文本数据转换为数值型数据。
3.使用聚类算法(如KMeans)对数据进行聚类,并计算样本到簇中心的平均距离以确定最佳的簇数量。
4.对数据进行PCA降维,以便在三维空间中可视化聚类结果。
5.使用Matplotlib绘制三维散点图。

pip install mlxtend

import pandas as pd
import numpy as np
from sklearn import preprocessing
from mlxtend.preprocessing import TransactionEncoder
import re
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
inputfile_1= "./生枣仁主治病症.xlsx"
df = pd.read_excel(inputfile_1)
df['方名'] = df['方名'].str.strip()
df.head()

数据清洗:将缺失值或'NAN'替换为'无

cols = ['药1', '药2', '药3', '药4']
df[cols] = df[cols].fillna('无')
df.drop_duplicates(inplace=True)
df.head()

 

from sklearn.preprocessing import LabelEncoder
from sklearn.decomposition import PCA
from sklearn.preprocessing import LabelEncoder
label_encoder = LabelEncoder()
# 文本数据转换为数值型数据
for col in ['药1', '药2', '药3', '药4']:df[col] = label_encoder.fit_transform(df[col])
from sklearn.metrics import pairwise_distances_argmin_min
distances = []
K = range(2, 10)
for k in K:kmeans = KMeans(n_clusters=k, random_state=42).fit(df.drop(columns=['方名']))labels = kmeans.labels_cluster_centers = kmeans.cluster_centers_# 计算样本到簇中心的平均距离distances_to_centers = pairwise_distances_argmin_min(df.drop(columns=['方名']), cluster_centers)[1]avg_distance = distances_to_centers.mean()distances.append(avg_distance)# 找到最佳的簇数量(基于样本到簇中心的平均距离)
optimal_k = distances.index(min(distances)) + 2  # 因为K的范围是从2开始的
print(f"Optimal number of clusters: {optimal_k}")kmeans = KMeans(n_clusters=optimal_k, random_state=42)
clusters = kmeans.fit_predict(df.drop(columns=['方名']))
df['Cluster'] = clusterspca = PCA(n_components=3)
X_pca = pca.fit_transform(df.drop(columns=['方名', '方名']))fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
for i in range(optimal_k):ax.scatter(X_pca[df['Cluster'] == i, 0], X_pca[df['Cluster'] == i, 1], X_pca[df['Cluster'] == i, 2], label=f'Cluster {i}')
ax.set_xlabel('PCA Feature 1')
ax.set_ylabel('PCA Feature 2')
ax.set_zlabel('PCA Feature 3')
ax.legend()
plt.title('3D Scatter Plot of Clusters')
plt.show()

# 绘制簇数量与平均距离的折线图
plt.figure()
plt.plot(K, distances, 'bx-')
plt.xlabel('Number of Clusters (K)')
plt.ylabel('Average Distance to Cluster Centers')
plt.title('Average Distance to Cluster Centers vs. Number of Clusters')
plt.xticks(K)
plt.show()

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

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

相关文章

Python进阶之-jinja2详解

✨前言: 🌟什么是jinja2? Jinja2 是一个强大的 Python 模版引擎,主要用于生成HTML或其他文本文件。这个库非常适合开发动态网站和Web应用的视图层,因为它支持逻辑操作如循环和条件判断,还可以继承和重用模…

linux——主从同步

1. 保证主节点开始二进制日志,从节点配置中继日志 2. 从节点的开启一个 I/O 线程读取主节点二进制日志的内容 3. 从节点读取主节点的二进制日志之后,会将去读的内容写入从节点的中继日志 4. 从节点开启 SQL 线程,读取中继日志的内容&a…

图搜索算法 - 广度优先搜索法(BFS)

相关文章: 图搜索算法 - 深度优先搜索法(DFS) 广度优先搜索法(BFS) 2.从一个顶点出发,把它所有关联的顶点依次访问,然后到下一个顶点(刚才访问的关联顶点)。然后以这个顶…

C#中接口设计相关原则

在C#中,接口(Interface)是一种引用类型,它定义了一个契约,指定了一个类必须实现的成员(属性、方法、事件、索引器)。接口不提供这些成员的实现,只指定成员必须按照特定的方式被实现。…

Advanced RAG 06:生成结果的相关性低? 快用 Query Rewriting 优化技术

编者按:在现实生活中,普通用户很难编写合适的提示词(prompt)来指示 LLM 完成期望任务。用户提出的 queries 往往存在词汇不准确、缺乏语义信息等问题,导致 LLM 难以理解并生成相关的模型响应。因此,如何优化…

前端 | iframe框架标签应用(二)| 外部页面导入

文章目录 📚实现效果📚模块实现解析🐇html🐇css🐇javascript 📚实现效果 点击右上角喇叭,弹出iframe页面框,链接bilibili白噪音视频页面;点击关闭按钮,关闭弹…

常用浏览器快捷键

常用浏览器快捷键,大部分浏览器应该都支持,主要常用 Safari、chrome、edge 功能Mac快捷键非Mac快捷键新建标签页Cmd TCtrl T关闭当前标签Cmd WCtrl W重新打开关闭的标签Cmd Shift TCtrl Shift T切换到下一个标签Ctrl TabCtrl Tab切换到上一个…

go中泛型约束 comparable不能使用 大于> 小于<比较符号 invalid operation UndefinedOp 异常的解决方法

在go语言中我们在使用 类型约束接口 comparable对约束的数据进行 大于>或者小于 <比较时会提示编译异常: invalid operation: args[0] > args[1] (type parameter E is not comparable with >)compiler UndefinedOp 原因&#xff1a; comparable 是一个所有可比较…

sqlmodel实现唯一性校验3,检查多列同时重复

之前的方案虽然能够解决重复性问题&#xff0c;但是没有覆盖到多列同时重复的情况。 比如&#xff0c;我们可以认为用户名是可以重复的。但是用户名和年龄不能同时重复&#xff0c;那么这种情况该怎么解决呢&#xff1f; 之前的代码如下&#xff1a; from sqlalchemy import…

数据集标签数量不均衡如何设计loss均衡数量

数据集标签数量不均衡如何设计loss均衡数量 1. 思路出发点&#xff1a; 对于哪些数量分布比值较少的标签提供更多的loss注意力比重&#xff0c;如何提高训练注意力比重&#xff0c;也就是说&#xff0c;让模型的梯度更多的倾向于有利于数据标签分布较少的数据训练&#xff0c…

【快捷部署】023_HBase(2.3.6)

&#x1f4e3;【快捷部署系列】023期信息 编号选型版本操作系统部署形式部署模式复检时间023HBase2.3.6Ubuntu 20.04tar包单机2024-05-07 注意&#xff1a;本脚本非全自动化脚本&#xff0c;有2次人工干预&#xff0c;第一次是确认内网IP&#xff0c;如正确直接回车即可&#…

Linux和Windows修改动态库的名字

一、概述 有时候我们创建windows的Dll或者Linux下的So库时候&#xff0c;在已经生成的产物里面我们又不想重新修改工程来修改我们动态库的名字&#xff0c;这个应该怎么做呢&#xff0c;windows跟linux两个平台使用的工具不一样。比如我们有一个TestA.Dll和TestA.lib或者 TestA…

git: 远程分支同步到本地

git pull origin <远程分支名> git pull可以将远程某一个分支下拉到本地并和本地的分支进行合并。如果不加origin <远程分支名>&#xff0c;那么这个同步就是将当前本地分支对应的远程分支给下拉合并进当前本地分支 git fetch --all 下载所有远程分支代码到本地…

了解TMS运输管理系统,实现物流高效运转

TMS运输管理系统&#xff08;Transportation Management System&#xff09;是一种集成物流和信息技术的解决方案&#xff0c;通过优化运输流程、实时跟踪货物信息和自动化管理操作&#xff0c;提高物流效率&#xff0c;降低运营成本&#xff0c;实现高效运输。 TMS运输管理系…

吴恩达2022机器学习专项课程C2(高级学习算法)W1(神经网络):2.4 神经网络层

目录 神经网络第一层&#xff08;隐藏层&#xff09;计算过程1.输入向量2.神经元的计算2.标识不同神经元3.层输出&#xff08;激活&#xff09;向量4.神经网络分层5.标识不同层 神经网络第二层&#xff08;输出层&#xff09;计算过程1.输入向量2.层输出&#xff08;激活&#…

Vue CLI配置代理、2.0、3.0

一、vue cli2.0 代理配置 proxy: {/api:{target: "http://localhost:8067",pathRewrite: {/api: }}, } 一、vue cli3.0 代理配置 proxy: {/api: {target: http://localhost:8067,pathRewrite: {/api: }} }

为什么有了MTU,还需要MSS?

为什么有了MTU&#xff0c;还需要MSS? MTU Maximum Transmit Unit&#xff0c;最大传输单元。由数据链路层提供给网络最大的一次传输数据的大小&#xff0c;一般MTU1500Byte. “车同轨”&#xff0c;保证底层数据包能在物理网络中顺利传输&#xff01;&#xff01;&#xff…

Redis 之 布隆过滤器 与 布谷鸟过滤器

大家都知道,在计算机中IO一直是一个瓶颈,很多框架以及技术甚至硬件都是为了降低IO操作而生,今天聊一聊过滤器,先说一个场景: 我们业务后端涉及数据库,当请求消息查询某些信息时,可能先检查缓存中是否有相关信息,有的话返回,如果没有的话可能就要去数据库里面查询,这时候有一个…

虚拟环境 conda activate

使用命令conda activate pytorch激活pytorch时出现以下报错&#xff1a; usage: conda-script.py [-h] [–no-plugins] [-V] COMMAND … conda-script.py: error: argument COMMAND: invalid choice: ‘activate’ (choose from ‘clean’, ‘compare’, ‘config’, ‘create’…

C语言struct person{...};person a;为什么编泽出错?

一、问题 在结构体中定义⼀个变量&#xff0c;可以有很多种⽅法&#xff0c;为什么这样定义编译出错呢&#xff1f; 例如&#xff1a; struct persont{...};person a; 二、解答 在解答编译出错的原因之前&#xff0c;先要了解⼏种正确的定义结构体类型变量的⽅法。 &#xf…