数据挖掘 模糊聚类

格式化之前的代码:

python 复制代码
import matplotlib.pyplot as plt#绘图
import pandas as pd#读取数据集
from sklearn.preprocessing import scale
from sklearn.cluster import DBSCAN#聚类
from sklearn import preprocessing#数据预处理的功能,包括缩放、标准化、正则化等
plt.rcParams["font.sans-serif"] = "Microsoft Yahei"#字体
df = pd.read_csv("country.txt",sep="\t")
num_data = df[["面积km^2", "人口"]]
X = preprocessing.minmax_scale(num_data,feature_range=(0,10000))#最小-最大缩放是一种常用的数据预处理方法,它将原始数据线性地缩放到给定的范围内,feature_range=(0,10000)指定了缩放后的特征值范围为0到10000。这意味着最小值将被缩放到0,最大值将被缩放到10000,而其他值将按比例缩放以保持数据的分布。
model = DBSCAN(eps=2000,min_samples=3)#DBSCAN是scikit-learn库中的一个聚类算法模型,eps=2000表示DBSCAN算法中的邻域半径,指定了两个样本被视为同一簇的最大距离。如果两个样本之间的距离小于等于eps,则这两个样本被认为是相邻的,min_samples=3表示DBSCAN算法中的核心点的最小样本数。当一个样本的邻域内包含至少min_samples个样本点时,该样本被认为是核心点。
model.fit(X)
label = model.labels_
plt.figure(figsize=(5,5))
print(label)
for i in df[label == -1].index:
    plt.scatter(df.loc[i,'面积km^2'],df.loc[i,"人口"],color = 'red')#绘图
    plt.annotate(text=df.loc[i,"国家"],xy=(df.loc[i,'面积km^2'],df.loc[i,"人口"]))#注释
for i in df[label == 0].index:
    plt.scatter(df.loc[i,'面积km^2'],df.loc[i,"人口"],color = 'blue')
    plt.annotate(text=df.loc[i,"国家"],xy=(df.loc[i,'面积km^2'],df.loc[i,"人口"]))#df.loc用于按标签进行索引,i是索引值
for i in df[label == 1].index:
    plt.scatter(df.loc[i,'面积km^2'],df.loc[i,"人口"],color = 'yellow')
    plt.annotate(text=df.loc[i,"国家"],xy=(df.loc[i,'面积km^2'],df.loc[i,"人口"]))

plt.show()

格式化之后的代码:

python 复制代码
import matplotlib.pyplot as plt  # 绘图
import pandas as pd  # 读取数据集
from sklearn.preprocessing import scale
from sklearn.cluster import DBSCAN  # 聚类
from sklearn import preprocessing  # 数据预处理的功能,包括缩放、标准化、正则化等

plt.rcParams["font.sans-serif"] = "Microsoft Yahei"  # 字体
df = pd.read_csv("country.txt", sep="\t")
num_data = df[["面积km^2", "人口"]]
X = preprocessing.minmax_scale(num_data, feature_range=(0,
                                                        10000))  # 最小-最大缩放是一种常用的数据预处理方法,它将原始数据线性地缩放到给定的范围内,feature_range=(0,10000)指定了缩放后的特征值范围为0到10000。这意味着最小值将被缩放到0,最大值将被缩放到10000,而其他值将按比例缩放以保持数据的分布。
model = DBSCAN(eps=2000,
               min_samples=3)  # DBSCAN是scikit-learn库中的一个聚类算法模型,eps=2000表示DBSCAN算法中的邻域半径,指定了两个样本被视为同一簇的最大距离。如果两个样本之间的距离小于等于eps,则这两个样本被认为是相邻的,min_samples=3表示DBSCAN算法中的核心点的最小样本数。当一个样本的邻域内包含至少min_samples个样本点时,该样本被认为是核心点。
model.fit(X)
label = model.labels_
plt.figure(figsize=(5, 5))
print(label)
for i in df[label == -1].index:
    plt.scatter(df.loc[i, '面积km^2'], df.loc[i, "人口"], color='red')  # 绘图
    plt.annotate(text=df.loc[i, "国家"], xy=(df.loc[i, '面积km^2'], df.loc[i, "人口"]))  # 注释
for i in df[label == 0].index:
    plt.scatter(df.loc[i, '面积km^2'], df.loc[i, "人口"], color='blue')
    plt.annotate(text=df.loc[i, "国家"], xy=(df.loc[i, '面积km^2'], df.loc[i, "人口"]))  # df.loc用于按标签进行索引,i是索引值
for i in df[label == 1].index:
    plt.scatter(df.loc[i, '面积km^2'], df.loc[i, "人口"], color='yellow')
    plt.annotate(text=df.loc[i, "国家"], xy=(df.loc[i, '面积km^2'], df.loc[i, "人口"]))

plt.show()
相关推荐
Francek Chen5 分钟前
【深度学习计算机视觉】14:实战Kaggle比赛:狗的品种识别(ImageNet Dogs)
人工智能·pytorch·深度学习·计算机视觉·kaggle·imagenet dogs
dxnb228 分钟前
Datawhale25年10月组队学习:math for AI+Task3线性代数(下)
人工智能·学习·线性代数
渡我白衣25 分钟前
《未来的 AI 操作系统(四)——AgentOS 的内核设计:调度、记忆与自我反思机制》
人工智能·深度学习·机器学习·语言模型·数据挖掘·人机交互·语音识别
飞哥数智坊40 分钟前
Claude Skills 实测体验:不用翻墙,GLM-4.6 也能玩转
人工智能·claude·chatglm (智谱)
FreeBuf_1 小时前
微软数字防御报告:AI成为新型威胁,自动化漏洞利用技术颠覆传统
人工智能·microsoft·自动化
IT_陈寒1 小时前
Vue3性能优化实战:这7个技巧让我的应用加载速度提升50%!
前端·人工智能·后端
GIS数据转换器1 小时前
带高度多边形,生成3D建筑模型,支持多种颜色或纹理的OBJ、GLTF、3DTiles格式
数据库·人工智能·机器学习·3d·重构·无人机
茜茜西西CeCe1 小时前
数字图像处理-图像编码与压缩
人工智能·计算机视觉·matlab·数字图像处理·图像压缩·图像编码
一人の梅雨1 小时前
大麦网关键词列表接口的产业级实现:从演出聚合到市场趋势预测的全维度技术方案
大数据·数据库·人工智能
阿_旭1 小时前
基于深度学习的甲状腺结节智能检测分割与诊断系统【python源码+Pyqt5界面+数据集+训练代码】
人工智能·python·深度学习·甲状腺结节检测