principal.py源代码分析

本文提供了一个简单的复利计算器程序,展示了如何使用Python计算不同年份的本息总额。通过设置初始本金和利率,程序将输出10年内每年的累计金额。

 

principal = 1000.0 # starting principal,本金

rate = .05 # interest rate,利率

print "Year %21s" % "Amount on deposit"#打印的头

for year in range( 1, 11 ):

amount = principal * ( 1.0 + rate ) ** year

#计算每年的本息和

print "%4d%21.2f" % ( year, amount )

#打印每年的本息和

import numpy as np from matplotlib import pyplot as plt import scapy.all as scapy from collections import defaultdict from sklearn.preprocessing import StandardScaler from sklearn.cluster import KMeans from sklearn.metrics import silhouette_score import pandas as pd # ====================== # 1. PCAP文件解析与流重组 # ====================== print("正在解析PCAP文件...") packets = scapy.rdpcap('test.pcap') # 按五元组重组网络流 flows = defaultdict(list) for pkt in packets: if 'IP' in pkt: # 获取协议类型 (TCP=6, UDP=17, ICMP=1) proto = pkt['IP'].proto src_port = pkt[proto].sport if proto in pkt else 0 dst_port = pkt[proto].dport if proto in pkt else 0 # 创建流标识键 (源IP, 目的IP, 源端口, 目的端口, 协议) flow_key = (pkt['IP'].src, pkt['IP'].dst, src_port, dst_port, proto) flows[flow_key].append(pkt) print(f"共识别出 {len(flows)} 个网络流") # ====================== # 2. 特征工程 # ====================== print("正在提取流量特征...") features = [] valid_flows = [] for flow_key, packets in flows.items(): # 跳过包含少于5个包的流 if len(packets) < 5: continue # 基础统计特征 packet_count = len(packets) total_bytes = sum(len(p) for p in packets) # 时序特征 timestamps = [float(p.time) for p in packets] # 关键修改:转换为float iat = np.diff(timestamps) # 包间隔时间 mean_iat = np.mean(iat) if len(iat) > 0 else 0 std_iat = np.std(iat) if len(iat) > 1 else 0 # 包长特征 pkt_lengths = [len(p) for p in packets] mean_pkt_len = np.mean(pkt_lengths) std_pkt_len = np.std(pkt_lengths) min_pkt_len = min(pkt_lengths) max_pkt_len = max(pkt_lengths) # 方向特征 (0=客户端到服务器, 1=服务器到客户端) directions = [1 if p['IP'].src == flow_key[0] else 0 for p in packets] up_ratio = sum(directions) / len(directions) features.append([ packet_count, total_bytes, mean_iat, std_iat, mean_pkt_len, std_pkt_len, min_pkt_len, max_pkt_len, up_ratio ]) valid_flows.append(flow_key) # 转换为特征矩阵 feature_matrix = np.array(features) feature_names = [ '包数量', '总字节数', '平均包间隔', '包间隔标准差', '平均包长', '包长标准差', '最小包长', '最大包长', '上行比例' ] print(f"提取了 {len(features)} 个有效流的 {len(feature_names)} 维特征") # ====================== # 3. 数据标准化 # ====================== print("正在进行数据标准化...") scaler = StandardScaler() scaled_features = scaler.fit_transform(feature_matrix) # ====================== # 4. 肘部法则确定最佳K值 # ====================== print("使用肘部法则确定最佳聚类数...") n_samples = scaled_features.shape[0] # 获取实际样本数 # 根据样本数量动态调整K范围 if n_samples < 5: print(f"警告:样本数量较少({n_samples}),将使用简化聚类策略") k_range = range(1, min(11, n_samples + 1)) # K值上限不超过样本数 else: k_range = range(1, 11) # 测试1-10个聚类 sse = [] kmeans_models = {} # 存储每个K的模型 for k in k_range: # 确保K值不超过样本数 if k > n_samples: print(f"跳过K={k}(超过样本数{n_samples})") continue kmeans = KMeans(n_clusters=k, n_init=10, random_state=42) kmeans.fit(scaled_features) sse.append(kmeans.inertia_) # 获取SSE kmeans_models[k] = kmeans # 存储模型 # 如果没有足够的点绘制肘部图,直接选择K值 if len(sse) < 2: optimal_k = min(2, n_samples) # 至少2类,但不超过样本数 print(f"样本过少,直接设置K={optimal_k}") else: # 绘制肘部法则图 plt.figure(figsize=(10, 6)) plt.plot(list(k_range)[:len(sse)], sse, 'bo-') plt.xlabel('聚类数量 $ K$') plt.ylabel('SSE (误差平方和)') plt.title('肘部法则确定最佳聚类数') plt.grid(True) plt.savefig('elbow_method.png', dpi=300) plt.close() print("肘部法则图已保存为 elbow_method.png") # 自动检测拐点 (肘点) if len(sse) >= 3: # 至少有3个点才能计算二阶差分 knee_point = np.argmin(np.diff(sse, 2)) + 2 optimal_k = max(2, min(10, knee_point)) # 确保在2-10之间 else: # 样本较少时使用简单策略 optimal_k = max(2, min(3, n_samples)) # 选择2或3 print(f"自动检测的最佳聚类数: K = {optimal_k}") # ====================== # 5. K-means聚类 # ====================== print(f"正在进行K-means聚类 (K={optimal_k})...") # 如果样本数小于K,调整K值 if optimal_k > n_samples: optimal_k = max(1, n_samples) # 确保K不超过样本数 print(f"调整聚类数为样本数: K = {optimal_k}") # 使用之前存储的模型或创建新模型 if optimal_k in kmeans_models: kmeans = kmeans_models[optimal_k] cluster_labels = kmeans.labels_ else: kmeans = KMeans(n_clusters=optimal_k, n_init=10, random_state=42) cluster_labels = kmeans.fit_predict(scaled_features) # 计算轮廓系数(仅当K>1时) if optimal_k > 1: silhouette_avg = silhouette_score(scaled_features, cluster_labels) print(f"轮廓系数: {silhouette_avg:.4f} (接近1表示聚类效果良好)") else: print("聚类数为1,无需计算轮廓系数") # ====================== # 6. 结果分析与可视化 # ====================== # 创建结果DataFrame result_df = pd.DataFrame({ '源IP': [flow[0] for flow in valid_flows], '目的IP': [flow[1] for flow in valid_flows], '协议': [f"TCP(6)" if flow[4] == 6 else f"UDP(17)" for flow in valid_flows], '聚类标签': cluster_labels }) # 添加特征值到结果表 for i, name in enumerate(feature_names): result_df[name] = feature_matrix[:, i] # 保存聚类结果 result_df.to_csv('cluster_results.csv', index=False) print("聚类结果已保存为 cluster_results.csv") # 各簇统计信息 cluster_stats = result_df.groupby('聚类标签').agg({ '包数量': 'mean', '总字节数': 'mean', '平均包间隔': 'mean', '上行比例': 'mean' }).rename(columns={ '包数量': '平均包数量', '总字节数': '平均总字节数', '平均包间隔': '平均包间隔(s)', '上行比例': '平均上行比例' }) print("\n各用户簇流量特征统计:") print(cluster_stats.round(2)) # 可视化聚类结果 (使用前两个主成分) from sklearn.decomposition import PCA pca = PCA(n_components=2) principal_components = pca.fit_transform(scaled_features) plt.figure(figsize=(12, 8)) scatter = plt.scatter( principal_components[:, 0], principal_components[:, 1], c=cluster_labels, cmap='viridis', alpha=0.6 ) # 添加簇中心 centers = pca.transform(kmeans.cluster_centers_) plt.scatter( centers[:, 0], centers[:, 1], c='red', s=200, alpha=0.9, marker='X', edgecolor='black' ) plt.colorbar(scatter, label='用户簇') plt.xlabel('主成分 1') plt.ylabel('主成分 2') plt.title(f'校园网用户流量聚类 (K={optimal_k})') plt.grid(alpha=0.3) plt.savefig('cluster_visualization.png', dpi=300) plt.close() print("聚类可视化图已保存为 cluster_visualization.png") print("\n聚类完成! 结果文件已保存:") print("- elbow_method.png: 肘部法则图") print("- cluster_results.csv: 详细聚类结果") print("- cluster_visualization.png: 聚类可视化") 编译结果如下,解释一下编译结果 E:\用户画像\聚类分离用户数据\.venv\Scripts\python.exe E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py 正在解析PCAP文件... 共识别出 3 个网络流 正在提取流量特征... 提取了 3 个有效流的 9 维特征 正在进行数据标准化... 使用肘部法则确定最佳聚类数... 警告:样本数量较少(3),将使用简化聚类策略 E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:132: UserWarning: Glyph 35823 (\N{CJK UNIFIED IDEOGRAPH-8BEF}) missing from font(s) DejaVu Sans. plt.savefig('elbow_method.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:132: UserWarning: Glyph 24046 (\N{CJK UNIFIED IDEOGRAPH-5DEE}) missing from font(s) DejaVu Sans. plt.savefig('elbow_method.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:132: UserWarning: Glyph 24179 (\N{CJK UNIFIED IDEOGRAPH-5E73}) missing from font(s) DejaVu Sans. plt.savefig('elbow_method.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:132: UserWarning: Glyph 26041 (\N{CJK UNIFIED IDEOGRAPH-65B9}) missing from font(s) DejaVu Sans. plt.savefig('elbow_method.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:132: UserWarning: Glyph 21644 (\N{CJK UNIFIED IDEOGRAPH-548C}) missing from font(s) DejaVu Sans. plt.savefig('elbow_method.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:132: UserWarning: Glyph 32920 (\N{CJK UNIFIED IDEOGRAPH-8098}) missing from font(s) DejaVu Sans. plt.savefig('elbow_method.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:132: UserWarning: Glyph 37096 (\N{CJK UNIFIED IDEOGRAPH-90E8}) missing from font(s) DejaVu Sans. plt.savefig('elbow_method.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:132: UserWarning: Glyph 27861 (\N{CJK UNIFIED IDEOGRAPH-6CD5}) missing from font(s) DejaVu Sans. plt.savefig('elbow_method.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:132: UserWarning: Glyph 21017 (\N{CJK UNIFIED IDEOGRAPH-5219}) missing from font(s) DejaVu Sans. plt.savefig('elbow_method.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:132: UserWarning: Glyph 30830 (\N{CJK UNIFIED IDEOGRAPH-786E}) missing from font(s) DejaVu Sans. plt.savefig('elbow_method.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:132: UserWarning: Glyph 23450 (\N{CJK UNIFIED IDEOGRAPH-5B9A}) missing from font(s) DejaVu Sans. plt.savefig('elbow_method.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:132: UserWarning: Glyph 26368 (\N{CJK UNIFIED IDEOGRAPH-6700}) missing from font(s) DejaVu Sans. plt.savefig('elbow_method.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:132: UserWarning: Glyph 20339 (\N{CJK UNIFIED IDEOGRAPH-4F73}) missing from font(s) DejaVu Sans. plt.savefig('elbow_method.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:132: UserWarning: Glyph 32858 (\N{CJK UNIFIED IDEOGRAPH-805A}) missing from font(s) DejaVu Sans. plt.savefig('elbow_method.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:132: UserWarning: Glyph 31867 (\N{CJK UNIFIED IDEOGRAPH-7C7B}) missing from font(s) DejaVu Sans. plt.savefig('elbow_method.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:132: UserWarning: Glyph 25968 (\N{CJK UNIFIED IDEOGRAPH-6570}) missing from font(s) DejaVu Sans. plt.savefig('elbow_method.png', dpi=300) Font 'default' does not have a glyph for '\u805a' [U+805a], substituting with a dummy symbol. Font 'default' does not have a glyph for '\u7c7b' [U+7c7b], substituting with a dummy symbol. Font 'default' does not have a glyph for '\u6570' [U+6570], substituting with a dummy symbol. Font 'default' does not have a glyph for '\u91cf' [U+91cf], substituting with a dummy symbol. C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 35823 (\N{CJK UNIFIED IDEOGRAPH-8BEF}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 24046 (\N{CJK UNIFIED IDEOGRAPH-5DEE}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 24179 (\N{CJK UNIFIED IDEOGRAPH-5E73}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 26041 (\N{CJK UNIFIED IDEOGRAPH-65B9}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 21644 (\N{CJK UNIFIED IDEOGRAPH-548C}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 32920 (\N{CJK UNIFIED IDEOGRAPH-8098}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 37096 (\N{CJK UNIFIED IDEOGRAPH-90E8}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 27861 (\N{CJK UNIFIED IDEOGRAPH-6CD5}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 21017 (\N{CJK UNIFIED IDEOGRAPH-5219}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 30830 (\N{CJK UNIFIED IDEOGRAPH-786E}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 23450 (\N{CJK UNIFIED IDEOGRAPH-5B9A}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 26368 (\N{CJK UNIFIED IDEOGRAPH-6700}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 20339 (\N{CJK UNIFIED IDEOGRAPH-4F73}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 32858 (\N{CJK UNIFIED IDEOGRAPH-805A}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 31867 (\N{CJK UNIFIED IDEOGRAPH-7C7B}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 25968 (\N{CJK UNIFIED IDEOGRAPH-6570}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) Font 'default' does not have a glyph for '\u805a' [U+805a], substituting with a dummy symbol. Font 'default' does not have a glyph for '\u7c7b' [U+7c7b], substituting with a dummy symbol. Font 'default' does not have a glyph for '\u6570' [U+6570], substituting with a dummy symbol. Font 'default' does not have a glyph for '\u91cf' [U+91cf], substituting with a dummy symbol. 肘部法则图已保存为 elbow_method.png 自动检测的最佳聚类数: K = 2 正在进行K-means聚类 (K=2)... 轮廓系数: 0.1744 (接近1表示聚类效果良好) 聚类结果已保存为 cluster_results.csv 各用户簇流量特征统计: 平均包数量 平均总字节数 平均包间隔(s) 平均上行比例 聚类标签 0 10.5 3721.0 0.04 1.0 1 6.0 1023.0 0.16 1.0 E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:234: UserWarning: Glyph 20027 (\N{CJK UNIFIED IDEOGRAPH-4E3B}) missing from font(s) DejaVu Sans. plt.savefig('cluster_visualization.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:234: UserWarning: Glyph 25104 (\N{CJK UNIFIED IDEOGRAPH-6210}) missing from font(s) DejaVu Sans. plt.savefig('cluster_visualization.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:234: UserWarning: Glyph 20998 (\N{CJK UNIFIED IDEOGRAPH-5206}) missing from font(s) DejaVu Sans. plt.savefig('cluster_visualization.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:234: UserWarning: Glyph 26657 (\N{CJK UNIFIED IDEOGRAPH-6821}) missing from font(s) DejaVu Sans. plt.savefig('cluster_visualization.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:234: UserWarning: Glyph 22253 (\N{CJK UNIFIED IDEOGRAPH-56ED}) missing from font(s) DejaVu Sans. plt.savefig('cluster_visualization.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:234: UserWarning: Glyph 32593 (\N{CJK UNIFIED IDEOGRAPH-7F51}) missing from font(s) DejaVu Sans. plt.savefig('cluster_visualization.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:234: UserWarning: Glyph 29992 (\N{CJK UNIFIED IDEOGRAPH-7528}) missing from font(s) DejaVu Sans. plt.savefig('cluster_visualization.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:234: UserWarning: Glyph 25143 (\N{CJK UNIFIED IDEOGRAPH-6237}) missing from font(s) DejaVu Sans. plt.savefig('cluster_visualization.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:234: UserWarning: Glyph 27969 (\N{CJK UNIFIED IDEOGRAPH-6D41}) missing from font(s) DejaVu Sans. plt.savefig('cluster_visualization.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:234: UserWarning: Glyph 37327 (\N{CJK UNIFIED IDEOGRAPH-91CF}) missing from font(s) DejaVu Sans. plt.savefig('cluster_visualization.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:234: UserWarning: Glyph 32858 (\N{CJK UNIFIED IDEOGRAPH-805A}) missing from font(s) DejaVu Sans. plt.savefig('cluster_visualization.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:234: UserWarning: Glyph 31867 (\N{CJK UNIFIED IDEOGRAPH-7C7B}) missing from font(s) DejaVu Sans. plt.savefig('cluster_visualization.png', dpi=300) E:\用户画像\聚类分离用户数据\聚类分离校园网数据.py:234: UserWarning: Glyph 31751 (\N{CJK UNIFIED IDEOGRAPH-7C07}) missing from font(s) DejaVu Sans. plt.savefig('cluster_visualization.png', dpi=300) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 20027 (\N{CJK UNIFIED IDEOGRAPH-4E3B}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 25104 (\N{CJK UNIFIED IDEOGRAPH-6210}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 20998 (\N{CJK UNIFIED IDEOGRAPH-5206}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 26657 (\N{CJK UNIFIED IDEOGRAPH-6821}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 22253 (\N{CJK UNIFIED IDEOGRAPH-56ED}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 32593 (\N{CJK UNIFIED IDEOGRAPH-7F51}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 29992 (\N{CJK UNIFIED IDEOGRAPH-7528}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 25143 (\N{CJK UNIFIED IDEOGRAPH-6237}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 27969 (\N{CJK UNIFIED IDEOGRAPH-6D41}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 37327 (\N{CJK UNIFIED IDEOGRAPH-91CF}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 32858 (\N{CJK UNIFIED IDEOGRAPH-805A}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 31867 (\N{CJK UNIFIED IDEOGRAPH-7C7B}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.1.2\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 31751 (\N{CJK UNIFIED IDEOGRAPH-7C07}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) 聚类可视化图已保存为 cluster_visualization.png 聚类完成! 结果文件已保存: - elbow_method.png: 肘部法则图 - cluster_results.csv: 详细聚类结果 - cluster_visualization.png: 聚类可视化 进程已结束,退出代码为 0
07-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值