IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> matplotlib画三维图以及鸢尾花数据进行降维后使用DBSCAN聚类后三维可视化实例 -> 正文阅读

[人工智能]matplotlib画三维图以及鸢尾花数据进行降维后使用DBSCAN聚类后三维可视化实例

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn import datasets
from sklearn.decomposition import PCA

iris = datasets.load_iris()
y = iris.target
X_reduced = PCA(n_components=3).fit_transform(iris.data)

fig = plt.figure(1, figsize=(8, 6))
ax = Axes3D(fig, elev=-150, azim=110)

ax.scatter(
    X_reduced[:, 0],
    X_reduced[:, 1],
    X_reduced[:, 2],  # 三维数据
    c=y,  # 数据标签
    cmap=plt.cm.Set1,
    edgecolor="k",
    s=40,
)
ax.set_title("First three PCA directions")
ax.set_xlabel("1st eigenvector")
ax.w_xaxis.set_ticklabels([])
ax.set_ylabel("2nd eigenvector")
ax.w_yaxis.set_ticklabels([])
ax.set_zlabel("3rd eigenvector")
ax.w_zaxis.set_ticklabels([])

plt.show()

运行结果
在这里插入图片描述
参考:https://scikit-learn.org/stable/auto_examples/datasets/plot_iris_dataset.html#sphx-glr-auto-examples-datasets-plot-iris-dataset-py

鸢尾花数据进行降维后使用DBSCAN聚类后三维可视化实例

import numpy as np
from sklearn.cluster import DBSCAN
from sklearn import metrics, datasets
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

iris = datasets.load_iris()
labels_true = iris.target
X = PCA(n_components=3).fit_transform(iris.data)
# 数据标准化
X = StandardScaler().fit_transform(X)


# DBSCAN聚类
# eps为邻域半径
# min_samples为确定为核心对象的最小样本数据,即当一个点在他eps半径的区域内共有10个点(包括他自己),那么这个点被确定为核心对象
db = DBSCAN(eps=0.6, min_samples=8).fit(X)
# 找出所有核心点,可视化时图片放大
core_samples_mask = np.zeros_like(db.labels_, dtype=bool)
core_samples_mask[db.core_sample_indices_] = True
labels = db.labels_
# 聚类标签数以及噪声点数
n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)
n_noise_ = list(labels).count(-1)

print("Estimated number of clusters: %d" % n_clusters_)  # 输出聚类的簇数
print("Estimated number of noise points: %d" % n_noise_)  # 输出噪声点个数

# 需要有正确的标签
print("Homogeneity: %0.3f" % metrics.homogeneity_score(labels_true, labels))  # 同质性homogeneity:每个群集只包含单个类的成员。
print("Completeness: %0.3f" % metrics.completeness_score(labels_true, labels))  # 完整性completeness:给定类的所有成员都分配给同一个群集。
print("V-measure: %0.3f" % metrics.v_measure_score(labels_true, labels))  # 两者的调和平均V-measure:
print("Adjusted Rand Index: %0.3f" % metrics.adjusted_rand_score(labels_true, labels))  # 调整兰德系数,ARI取值范围为[?1,1],值越大意味着聚类结果与真实情况越吻合。从广义的角度来讲,ARI衡量的是两个数据分布的吻合程度。
print(
    "Adjusted Mutual Information: %0.3f"
    % metrics.adjusted_mutual_info_score(labels_true, labels)
)  # 互信息(Mutual Information)也是用来衡量两个数据分布的吻合程度。利用基于互信息的方法来衡量聚类效果需要实际类别信息,MI与NMI取值范围为[0,1],AMI取值范围为[?1,1],它们都是值越大意味着聚类结果与真实情况越吻合。

# 不需要有正确的标签
print("Silhouette Coefficient: %0.3f" % metrics.silhouette_score(X, labels))  # 轮廓系数(Silhouette coefficient)适用于实际类别信息未知的情况。对于一个样本集合,它的轮廓系数是所有样本轮廓系数的平均值。
                                                                              # 轮廓系数取值范围是[?1,1],同类别样本越距离相近且不同类别样本距离越远,分数越高。


fig = plt.figure(1, figsize=(8, 6))
ax = Axes3D(fig, elev=-150, azim=110)
unique_labels = set(labels)
colors = ["r", "g", "b", "y"]

for k, c in zip(unique_labels, colors):
    if k == -1:
        # Black used for noise.
        c = "black"

    class_member_mask = labels == k

    xy = X[class_member_mask & core_samples_mask]
    ax.scatter(
        xy[:, 0],
        xy[:, 1],
        xy[:, 2],  # 三维数据
        c=c,
        cmap=plt.cm.Set1,
        edgecolor="k",
        s=100,
        label=str(c)
    )

    xy = X[class_member_mask & ~core_samples_mask]
    ax.scatter(
        xy[:, 0],
        xy[:, 1],
        xy[:, 2],  # 三维数据
        c=c,
        cmap=plt.cm.Set1,
        edgecolor="k",
        s=40,
    )
ax.legend(loc="upper left")
xlabel = ["1st eigenvector", "2nd eigenvector", "3rd eigenvector"]
ax.set_title("First three PCA directions")
ax.set_xlabel(xlabel[0])
ax.w_xaxis.set_ticklabels([])
ax.set_ylabel(xlabel[1])
ax.w_yaxis.set_ticklabels([])
ax.set_zlabel(xlabel[2])
ax.w_zaxis.set_ticklabels([])

plt.title("Estimated number of clusters: %d" % n_clusters_)
plt.show()


在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-06 13:02:47  更:2022-03-06 13:03:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 17:40:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码