机器学习之聚类-2D数据类别划分

这篇具有很好参考价值的文章主要介绍了机器学习之聚类-2D数据类别划分。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

无监督学习(Unsupervised Learning)

机器学习的一种方法,没有给定事先标记过的训练示例,自动对输入的数据进行分类或分群。
机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能
方式一:站着或坐着
方式二:全身或半身
方式三:蓝眼球或不是蓝眼球

  • 没有对与错
  • 寻找数据的共同点

优点:

  • 算法不受监督信息(偏见)的约束,可能考虑到新的信息
  • 不需要标签数据,极大程度扩大数据样本

主要应用:聚类分析、关联规则、维度缩减
应用最广:聚类分析(clustering)

聚类分析

聚类分析又称为群分析,根据对象某些属性的相似度,将其自动化分为不同的类别

常用的聚类算法

KMeans聚类

  • 根据数据与中心点距离划分类别
  • 基于类别数据更新中心点
  • 重复过程直到收敛

特点

  • 实现简单,收敛快
  • 需要指定类别数量

均值漂移聚类(Meanshift)

  • 在中心点一定区域检索数据点
  • 更新中心
  • 重复流程到中心点稳定

特点

  • 自动发现类别数量,不需要人工选择
  • 需要选择区域半径

DBSCAN算法(基于密度的空间聚类算法)

  • 基于区域点密度筛选有效数据
  • 基于有效数据向周边扩张,直到没有新点加入

特点:

  • 过滤噪音数据
  • 不需要人为选择类别数量
  • 数据密度不同时影响结果

K均值聚类(KMeans Analysis)

以空间中k个点为中心进行聚类,对最靠近他们的对象归类,是聚类算法中最为基础但也最为重要的算法。
机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能
算法流程:

  1. 选择聚类的个数k
  2. 确定聚类中心
  3. 根据点到聚类中心聚类确定各个点所属类别
  4. 根据各个类别数据更新聚类中心
  5. 重复以上步骤直到收敛(中心点不再变化)

优点:

  1. 原理简单、实现容易、收敛速度快
  2. 参数少、方便使用

缺点:

  1. 必须设置簇的数量
  2. 随机选择初始聚类中心、结果可能缺乏一致性

原始数据分布
机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能
随机选取聚类中心
机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能
根据距离聚类
机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能
根据聚类更新中心
机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能
根据新的距离更新聚类
机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能
中心不再变化
机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能

K近邻分类模型(KNN)

给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例(也就是上面所说的K个邻居),这K个实例的多数属于某个类,就把该输入实例分类到这个类中

  • 最简单的机器学习算法之一

机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能

均值漂移聚类

一种基于密度梯度上升的聚类算法(沿着密度上升方向寻找聚类中心点)
机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能
算法流程:

  1. 随机选择未分类点作为中心点
  2. 找出离中心点距离在带宽之内的点,记做集合S
  3. 计算从中心点到集合S中每个元素的偏移向量M
  4. 中心点以向量M移动
  5. 重复步骤2-4,直到收敛
  6. 重复1-5直到所有的点都被归类
  7. 分类:根据每个类,对每个点的访问频率,取访问频率最大的那个类,作为当前点集的所属类

实战准备

KMeans实现聚类
机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能
模型训练

from sklearn.cluster import KMeans
KM = KMeans(n_clusters=3,random_state=0)
KM.fit(X)

获取模型确定的中心点

centers = KM.cluster_centers_

准确率计算

from sklearn.metrics import accuuracy_score
accuracy = accuracy_score(y,y_predict)

结果矫正

y_cal=[]
for i in y_predict:
	if i==0:
    	y_cal.append(2)
    elif i == 1:
    	y_cal.append(1)
    else:
    	y_cal.append(0)
print(y_predict,y_cal)

Meanshift实现聚类

自动计算带宽(区域半径)

from sklearn.cluster import MeanShift,estimate_bandwidth
#detect bandwidth
bandwidth = estimate_bandwidth(X,n_samples=500)

模型建立与训练

ms = MeanShift(bandwidth=bandwidth)
ms.fit(X)

KNN实现分类

模型训练

from sklearn.neighbors import KNeighborsClassifier
KNN = KNeighborsClassifier(n_neighbors=3)
KNN.fit(X,y)

实战:2D数据类别划分

  1. 采用Kmeans算法实现2D数据自动聚类,预测V1=80,V2=60数据类别
  2. 计算预测准确率,完成结果矫正
  3. 采用KNN、Meanshift算法,重复步骤1-2

导入类加载数据

import pandas as pd
import numpy as np
data=pd.read_csv('data.csv')
data.head()

机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能
数据初始化

X=data.drop(['labels'],axis=1)
y=data.loc[:,'labels']

查看个类别数量

pd.value_counts(y)

机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能
数据可视化

from matplotlib import pyplot as plt
fig1=plt.figure()
plt.scatter(X.loc[:,'V1'],X.loc[:,'V2'])
plt.title("un-labled data")
plt.xlabel('V1')
plt.ylabel('V2')
plt.show()

机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能

fig1=plt.figure()
label0=plt.scatter(X.loc[:,'V1'][y==0],X.loc[:,'V2'][y==0])
label1=plt.scatter(X.loc[:,'V1'][y==1],X.loc[:,'V2'][y==1])
label2=plt.scatter(X.loc[:,'V1'][y==2],X.loc[:,'V2'][y==2])
plt.title("labled data")
plt.xlabel('V1')
plt.ylabel('V2')
plt.legend((label0,label1,label2),('label0','label1','label2'))
plt.show()

机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能
模型训练

from sklearn.cluster import KMeans
KM = KMeans(n_clusters=3,random_state=0)
KM.fit(X)

查看聚类的中心点

KM.cluster_centers_

机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能
可视化中心点

centers = KM.cluster_centers_
fig3=plt.figure()
plt.scatter(centers[:,0],centers[:,1])
plt.show()

机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能

centers = KM.cluster_centers_
fig3=plt.figure()
label0=plt.scatter(X.loc[:,'V1'][y==0],X.loc[:,'V2'][y==0])
label1=plt.scatter(X.loc[:,'V1'][y==1],X.loc[:,'V2'][y==1])
label2=plt.scatter(X.loc[:,'V1'][y==2],X.loc[:,'V2'][y==2])
plt.title("labled data")
plt.xlabel('V1')
plt.ylabel('V2')
plt.scatter(centers[:,0],centers[:,1])
plt.legend((label0,label1,label2),('label0','label1','label2'))
plt.show()

机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能
模型评估

y_predict_test = KM.predict([[80,60]])
y_predict=KM.predict(X)
print(pd.value_counts(y_predict),pd.value_counts(y))
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y,y_predict)
print(accuracy)

机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能

fig4=plt.subplot(121)
label0=plt.scatter(X.loc[:,'V1'][y_predict==0],X.loc[:,'V2'][y_predict==0])
label1=plt.scatter(X.loc[:,'V1'][y_predict==1],X.loc[:,'V2'][y_predict==1])
label2=plt.scatter(X.loc[:,'V1'][y_predict==2],X.loc[:,'V2'][y_predict==2])
plt.title("predicted data")
plt.xlabel('V1')
plt.ylabel('V2')
plt.scatter(centers[:,0],centers[:,1])
plt.legend((label0,label1,label2),('label0','label1','label2'))

fig4=plt.subplot(122)
label0=plt.scatter(X.loc[:,'V1'][y==0],X.loc[:,'V2'][y==0])
label1=plt.scatter(X.loc[:,'V1'][y==1],X.loc[:,'V2'][y==1])
label2=plt.scatter(X.loc[:,'V1'][y==2],X.loc[:,'V2'][y==2])
plt.title("labled data")
plt.xlabel('V1')
plt.ylabel('V2')
plt.scatter(centers[:,0],centers[:,1])
plt.legend((label0,label1,label2),('label0','label1','label2'))
plt.show()

机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能
模型矫正

y_corrected=[]
for i in y_predict:
    if i==0:
        y_corrected.append(1)
    elif i==1:
        y_corrected.append(2)
    else:
        y_corrected.append(0)
print(pd.value_counts(y_corrected))
print(pd.value_counts(y))

机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能
模块评估

print(accuracy_score(y,y_corrected))

机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能
可视化

fig4=plt.subplot(121)
label0=plt.scatter(X.loc[:,'V1'][y_corrected==0],X.loc[:,'V2'][y_corrected==0])
label1=plt.scatter(X.loc[:,'V1'][y_corrected==1],X.loc[:,'V2'][y_corrected==1])
label2=plt.scatter(X.loc[:,'V1'][y_corrected==2],X.loc[:,'V2'][y_corrected==2])
plt.title("corrected data")
plt.xlabel('V1')
plt.ylabel('V2')
plt.scatter(centers[:,0],centers[:,1])
plt.legend((label0,label1,label2),('label0','label1','label2'))

fig4=plt.subplot(122)
label0=plt.scatter(X.loc[:,'V1'][y==0],X.loc[:,'V2'][y==0])
label1=plt.scatter(X.loc[:,'V1'][y==1],X.loc[:,'V2'][y==1])
label2=plt.scatter(X.loc[:,'V1'][y==2],X.loc[:,'V2'][y==2])
plt.title("labled data")
plt.xlabel('V1')
plt.ylabel('V2')
plt.scatter(centers[:,0],centers[:,1])
plt.legend((label0,label1,label2),('label0','label1','label2'))
plt.show()

机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能

KNN

模型训练

from sklearn.neighbors import KNeighborsClassifier
KNN = KNeighborsClassifier(n_neighbors=3)
KNN.fit(X,y)

显示预测结果 评估模型

y_predict_knn_test=KNN.predict([[80,60]])
y_predict_knn=KNN.predict(X)
print(y_predict_knn_test)
print('knn accuracy',accuracy_score(y,y_predict_knn))

机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能
查看模型分布

print(pd.value_counts(y_predict_knn))
print(pd.value_counts(y))

机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能
可视化

fig5=plt.subplot(121)
label0=plt.scatter(X.loc[:,'V1'][y_predict_knn==0],X.loc[:,'V2'][y_predict_knn==0])
label1=plt.scatter(X.loc[:,'V1'][y_predict_knn==1],X.loc[:,'V2'][y_predict_knn==1])
label2=plt.scatter(X.loc[:,'V1'][y_predict_knn==2],X.loc[:,'V2'][y_predict_knn==2])
plt.title("knn results")
plt.xlabel('V1')
plt.ylabel('V2')
plt.scatter(centers[:,0],centers[:,1])
plt.legend((label0,label1,label2),('label0','label1','label2'))

fig6=plt.subplot(122)
label0=plt.scatter(X.loc[:,'V1'][y==0],X.loc[:,'V2'][y==0])
label1=plt.scatter(X.loc[:,'V1'][y==1],X.loc[:,'V2'][y==1])
label2=plt.scatter(X.loc[:,'V1'][y==2],X.loc[:,'V2'][y==2])
plt.title("labled data")
plt.xlabel('V1')
plt.ylabel('V2')
plt.scatter(centers[:,0],centers[:,1])
plt.legend((label0,label1,label2),('label0','label1','label2'))
plt.show()

机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能

meanshift

from sklearn.cluster import MeanShift,estimate_bandwidth
bw = estimate_bandwidth(X,n_samples=500)

模型训练

ms=MeanShift(bandwidth=bw)
ms.fit(X)

查看预测结果

y_predict_ms = ms.predict(X)
print(pd.value_counts(y_predict_ms))
print(pd.value_counts(y))

机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能
可视化

fig5=plt.subplot(121)
label0=plt.scatter(X.loc[:,'V1'][y_predict_ms==0],X.loc[:,'V2'][y_predict_ms==0])
label1=plt.scatter(X.loc[:,'V1'][y_predict_ms==1],X.loc[:,'V2'][y_predict_ms==1])
label2=plt.scatter(X.loc[:,'V1'][y_predict_ms==2],X.loc[:,'V2'][y_predict_ms==2])
plt.title("ms results")
plt.xlabel('V1')
plt.ylabel('V2')
plt.scatter(centers[:,0],centers[:,1])
plt.legend((label0,label1,label2),('label0','label1','label2'))

fig6=plt.subplot(122)
label0=plt.scatter(X.loc[:,'V1'][y==0],X.loc[:,'V2'][y==0])
label1=plt.scatter(X.loc[:,'V1'][y==1],X.loc[:,'V2'][y==1])
label2=plt.scatter(X.loc[:,'V1'][y==2],X.loc[:,'V2'][y==2])
plt.title("labled data")
plt.xlabel('V1')
plt.ylabel('V2')
plt.scatter(centers[:,0],centers[:,1])
plt.legend((label0,label1,label2),('label0','label1','label2'))
plt.show()

机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能
模型矫正

y_corrected_ms=[]
for i in y_predict_ms:
    if i==0:
        y_corrected_ms.append(2)
    elif i==1:
        y_corrected_ms.append(1)
    else:
        y_corrected_ms.append(0)
print(pd.value_counts(y_corrected_ms))
print(pd.value_counts(y))

机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能
可视化

y_corrected_ms = np.array(y_corrected_ms)
fig5=plt.subplot(121)
label0=plt.scatter(X.loc[:,'V1'][y_corrected_ms==0],X.loc[:,'V2'][y_corrected_ms==0])
label1=plt.scatter(X.loc[:,'V1'][y_corrected_ms==1],X.loc[:,'V2'][y_corrected_ms==1])
label2=plt.scatter(X.loc[:,'V1'][y_corrected_ms==2],X.loc[:,'V2'][y_corrected_ms==2])
plt.title("ms corrected results")
plt.xlabel('V1')
plt.ylabel('V2')
plt.scatter(centers[:,0],centers[:,1])
plt.legend((label0,label1,label2),('label0','label1','label2'))

fig6=plt.subplot(122)
label0=plt.scatter(X.loc[:,'V1'][y==0],X.loc[:,'V2'][y==0])
label1=plt.scatter(X.loc[:,'V1'][y==1],X.loc[:,'V2'][y==1])
label2=plt.scatter(X.loc[:,'V1'][y==2],X.loc[:,'V2'][y==2])
plt.title("labled data")
plt.xlabel('V1')
plt.ylabel('V2')
plt.scatter(centers[:,0],centers[:,1])
plt.legend((label0,label1,label2),('label0','label1','label2'))
plt.show()

机器学习之聚类-2D数据类别划分,人工智能,机器学习,聚类,支持向量机,人工智能文章来源地址https://www.toymoban.com/news/detail-810644.html

到了这里,关于机器学习之聚类-2D数据类别划分的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习之K-means聚类算法

    目录 K-means聚类算法 算法流程 优点 缺点 随机点聚类 人脸聚类 旋转物体聚类 K-means聚类算法是一种无监督的学习方法,通过对样本数据进行分组来发现数据内在的结构。K-means的基本思想是将n个实例分成k个簇,使得同一簇内数据相似度高而不同簇之间数据相似度低。 K-means的

    2024年02月11日
    浏览(45)
  • 【大数据&AI人工智能】机器意识能走多远:未来的人工智能哲学

    机器意识能走多远:未来的人工智能哲学     【摘要】 意识是人类最为神奇的心理能力,也是宇宙中最为神秘的复杂现象。 正因为如此,对于人工智能终极目标的实现而言,开展机器意识也就成为其绕不开的一个前沿性难题。机器意识研究不但对深化人工智能的研究有着重

    2024年02月03日
    浏览(66)
  • 关于图像分类任务中划分数据集,并且生成分类类别的josn字典文件

    在做图像分类任务的时候, 数据格式是文件夹格式,相同文件夹下存放同一类型的类别 不少网上的数据,没有划分数据集,虽然代码简单,每次重新编写还是颇为麻烦,这里记录一下 如下,有的数据集这样摆放: 可以看出这是个三分类任务,不过没有划分测试集、验证集

    2024年02月02日
    浏览(42)
  • 《人工智能-机器学习》数据预处理和机器学习算法(以企鹅penguins数据集为例)

    本项目使用到的数据集链接: https://tianchi-media.oss-cn-beijing.aliyuncs.com/DSW/6tree/penguins_raw.csv 加载给定或者自行选定的数据集,对数据进行查看和理解,例如样本数量,各特征数据类型、分布、特征和标签所表达的含义等,然后对其进行数据预处理工作,包括但不限于对敏感数据

    2024年02月10日
    浏览(61)
  • 大数据、人工智能、机器学习、深度学习关系联系前言

    1.大数据和人工智能关系 2.机器学习、深度学习、人工智能关系 3.监督学习、无监督学习、半监督学习、强化学习、迁移学习关系 4.机器学习具体内容 1.数据驱动的人工智能 :人工智能系统需要大量的数据来进行训练和学习。大数据提供了海量的信息,可以用于训练机器学习

    2024年02月12日
    浏览(62)
  • 层次聚类算法在人工智能医疗中的应用

    作者:禅与计算机程序设计艺术 引言 1.1. 背景介绍 随着人工智能技术的快速发展,医疗领域也逐渐迎来了信息化的春天。医疗数据的丰富性和复杂性为人工智能提供了大量的应用场景。层次聚类算法作为数据挖掘领域的一种经典算法,在医疗领域有着广泛的应用前景。本文

    2024年02月08日
    浏览(49)
  • 人工智能算法|K均值聚类算法Python实现

    K 均值聚类算法是一种简单的迭代型聚类算法,采用距离作为相似性指标,从而发现给定数据集中的 K 个类,且每个类有一个聚类中心,即质心,每个类的质心是根据类中所有值的均值得到。对于给定的一个包含n个d维数据点的数据集X以及要分得的类别 K ,选取欧式距离作为

    2024年02月05日
    浏览(61)
  • 【Python】sklearn机器学习之层次聚类算法AgglomerativeClustering

    和Birch聚类相似,层次聚类也是一种依赖树结构实现的聚类方法,其核心概念是相似度。根据相似度,可以将所有样本组织起来,从而构建一棵层次聚类树。 其中Birch算法的核心,叫做聚类特征树(Clustering Feature Tree),简称CF树。CF树由CF构成,每个CF都是三元组,表示为(N, LS,

    2024年02月03日
    浏览(39)
  • 智能数据应用在人工智能与机器学习中的应用

    人工智能(Artificial Intelligence,AI)和机器学习(Machine Learning,ML)是当今最热门的技术领域之一。它们的核心是智能数据应用,即利用大量数据和高效算法来模拟、自动化和优化复杂任务。智能数据应用在各个领域都有广泛的应用,如自然语言处理、计算机视觉、推荐系统、

    2024年01月22日
    浏览(50)
  • 数据分析的未来:机器学习和人工智能的革命

    数据分析是现代科学和工业的核心技术,它涉及到大量的数据收集、存储、处理和分析。随着数据的增长和复杂性,传统的数据分析方法已经不能满足需求。机器学习和人工智能技术正在革命化数据分析领域,为我们提供了更高效、准确和智能的解决方案。 在本文中,我们将

    2024年02月20日
    浏览(147)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包