day07-means算法(上)

本文主要介绍了Means算法的基础概念,包括其工作原理、步骤及适用场景。首先,我们探讨了Means算法如何通过计算数据点与聚类中心之间的距离来划分类别。接着,详细解释了初始化聚类中心的方法和迭代过程,强调了在每次迭代中如何更新聚类中心。文章还讨论了Means算法的优点和局限性,如对初始中心敏感、处理非凸形状簇的困难等。此外,文中通过实例展示了Means算法在实际数据集上的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

day07-k_means算法自实现

01-数据转化
import pandas as pd
import numpy as np

# 将非数值型类别型数据转化为数值型
# 哑变量转化---将数据转化为哑变量矩阵
# 加载数据
data = pd.read_excel('./meal_order_detail.xlsx')
# print('data:\n',data)
# print('data的列索引:\n',data.columns)
# print('data :\n', data.loc[:, "dishes_name"])
print('data :\n', data.loc[:, "amounts"])
print('data 中amounts列的最大值:', data.loc[:, "amounts"].max())
print('data 中amounts列的最小值:', data.loc[:, "amounts"].min())
print('*' * 100)
#
# # 将detail 中的 dishes_name 进行哑变量转化
# res = pd.get_dummies(
#     data=data.loc[:, 'dishes_name'],  # 数据
#     prefix='菜品',  # 前缀
#     prefix_sep=':'  # 连接符
# )
# print('哑变量之后的结果:\n', res)

# 将连续型数据离散成类别数据 ---数据离散化
# 将连续的数据进行划分区间
# 将 detail 中 amounts单价列进行离散化
# 1、默认进行分组
# 2、自定义等宽分组
# # (1)确定分组个数
# group_num = 5
# # (2)确定极差
# # 确定最大值
# max_amounts = data.loc[:, "amounts"].max()
# # 确定最小值
# min_amounts = data.loc[:, "amounts"].min()
# # 确定极差
# ptp = max_amounts - min_amounts
# # (3)确定步长
# step = int(np.ceil(ptp / group_num))
# # (4)确定bins
# bins = np.arange(min_amounts, max_amounts + step, step)
# print('自定义等宽分组:', bins)

# 3、自定义等频分组 --利用分位数进行分组
# (1)确定分组个数
group_num = 5
# (2)确定bins
bins = data.loc[:, 'amounts'].quantile(q=np.arange(0, 1 + 1 / group_num, 1 / group_num))
# [0,0.2,0.4,0.6,0.8,1.0]
print('bins:', bins)
data.loc[:, 'amounts'] = pd.cut(
    x=data.loc
基于stm32的智能分拣小车具有颜色识别、循迹、机械臂抓取等功能.zip,个人经导师指导并认可通过的高分设计项目,评审分99分,代码完整确保可以运行,小白也可以亲自搞定,主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业,代码资料完整,下载可用。 基于stm32的智能分拣小车具有颜色识别、循迹、机械臂抓取等功能.zip基于stm32的智能分拣小车具有颜色识别、循迹、机械臂抓取等功能.zip基于stm32的智能分拣小车具有颜色识别、循迹、机械臂抓取等功能.zip基于stm32的智能分拣小车具有颜色识别、循迹、机械臂抓取等功能.zip基于stm32的智能分拣小车具有颜色识别、循迹、机械臂抓取等功能.zip基于stm32的智能分拣小车具有颜色识别、循迹、机械臂抓取等功能.zip基于stm32的智能分拣小车具有颜色识别、循迹、机械臂抓取等功能.zip基于stm32的智能分拣小车具有颜色识别、循迹、机械臂抓取等功能.zip基于stm32的智能分拣小车具有颜色识别、循迹、机械臂抓取等功能.zip基于stm32的智能分拣小车具有颜色识别、循迹、机械臂抓取等功能.zip基于stm32的智能分拣小车具有颜色识别、循迹、机械臂抓取等功能.zip基于stm32的智能分拣小车具有颜色识别、循迹、机械臂抓取等功能.zip基于stm32的智能分拣小车具有颜色识别、循迹、机械臂抓取等功能.zip基于stm32的智能分拣小车具有颜色识别、循迹、机械臂抓取等功能.zip基于stm32的智能分拣小车具有颜色识别、循迹、机械臂抓取等功能.zip基于stm32的智能分拣小车具有颜色识别、循迹、机械臂抓取等功能.zip基于stm32的智能分拣小车具有颜色识别、循迹、机械臂抓取等功能.zip基于stm32的智能分拣小车具有颜色识别、循迹、机械臂抓取等功能.z
### K-Means聚类算法用于选择典型日的实现方法 K-Means聚类可以应用于时间序列数据分析,以识别具有相似特征的日子作为典型日。通过分析历史数据中的模式并将其分组,能够有效找出代表性的日子。 #### 数据处理 为了应用K-Means进行典型日的选择,首先需要准备合适的数据集。通常情况下,这涉及收集一段时间内的每日用电量或其他相关指标,并确保这些数值被标准化以便于比较不同规模下的消费情况[^1]。 ```python import pandas as pd from sklearn.preprocessing import StandardScaler # 假设df是一个包含日期索引和每小时负荷列的DataFrame scaler = StandardScaler() scaled_data = scaler.fit_transform(df) ``` #### 应用K-Means模型 接着,在经过预处理后的数据上运行K-Means算法。这里的关键在于决定合适的簇数\( k \),即想要选出多少个典型的天数。可以通过肘部法则(elbow method)或轮廓系数(silhouette score)等技术来辅助确定最优的\( k \)[^2]。 ```python from sklearn.cluster import KMeans import matplotlib.pyplot as plt inertia_values = [] for i in range(1, 10): km = KMeans(n_clusters=i, random_state=42).fit(scaled_data) inertia_values.append(km.inertia_) plt.plot(range(1, 10), inertia_values, marker='o') plt.title('Elbow Method For Optimal k') plt.xlabel('Number of clusters') plt.ylabel('Inertia') plt.show() optimal_k = ... # 根据图形判断最佳k值 km_optimal = KMeans(n_clusters=optimal_k, random_state=42).fit(scaled_data) labels = km_optical.labels_ ``` #### 解析结果获取典型日 一旦完成了聚类操作,则可以根据分配给各个簇的日志记录进一步探索哪些特性使得某些天成为“典型”。对于每一个簇而言,可以选择该类别中最接近质心的一天作为其代表性实例;或者计算平均曲线来构建理想化的典型日形象。 ```python centroids = km_optimal.cluster_centers_ def find_nearest_day_to_centroid(cluster_index): cluster_points = scaled_data[labels == cluster_index] distances_from_center = ((cluster_points - centroids[cluster_index])**2).sum(axis=1) nearest_point_idx = distances_from_center.argmin() return df.index[nearest_point_idx] typical_days_indices = [find_nearest_day_to_centroid(i) for i in range(optimal_k)] print("Selected typical days:", typical_days_indices) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值