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 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> K-MEANS聚类——Python实现 -> 正文阅读

[人工智能]K-MEANS聚类——Python实现

一、概述

1)物以类聚,人以群分,聚类分析是一种重要的多变量统计方法,但记住其实它是一种数据分析方法,不能进行统计推断的。当然,聚类分析主要应用在市场细分等领域,也经常采用聚类分析技术来实现对抽样框的分层。它和分类不同,它属于无监督问题。

(2)常用聚类方法:K-means聚类、密度聚类方法DBSCAN、

二、K-MEANS算法

基本概念:

  1. 要得到簇的个数,需要指定k值
  2. 质心:均值,即向量各维取平均即可。
  3. 距离的度量:常用欧式距离(先标准化)
  4. 优化目标:

?

三、工作流程?

?四、优缺点:

优点:操作简单,快速,适合常规数据集

缺点:

  1. k值很难确定
  2. 复杂度与样本呈线性关系
  3. 很难发现任意形状的簇

五、代码实现?

1.导包

%matplotlib inline
import numpy as np  
import matplotlib.pyplot as plt  
from sklearn.cluster import KMeans 
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import make_blobs   #生成数据函数  
from sklearn import metrics

2.生成平面数据点+标准化

n_samples = 1500  
X,y = make_blobs(n_samples=n_samples,centers=4,random_state=170)  
X = StandardScaler().fit_transform(X)  #标准化

3.调用kmeans包

Kmeans=KMeans(n_clusters=4,random_state=170) 
Kmeans.fit(X)

4.可视化效果

plt.figure(figsize=(12,6))
plt.subplot(121)
plt.scatter(X[:,0],X[:,1],c='r') 
plt.title("聚类前数据图")  
plt.subplot(122)  
plt.scatter(X[:,0],X[:,1],c=Kmeans.labels_)  
plt.title("聚类后数据图")  
plt.show()

结果如图:

六、K-MEANS算法程序,代码如下:

class KMEANS:
    def_init_(self,data,num_clustres):
        self.data=data
        self.num_clustres=num_clustres
    def train(self,max_iterations):
        #1.先随机选择k个中心点
        centroids=KMEANS.centroids_init(self.data,self.num_clustres)
        #2.开始训练
        num_exxamples=self.data.shape[0]
        closest_ centroids_ids=np.empty((num_examples,1))
        for _ in range(max_iterations):
            #3得到当前每个样本到k个中心点的距离,找最近的
            
              closest_centroids_ids=KMEANS.centroids_find_closest(self.data,centroids)     
            #进行中心点位置更新
             centroids=KMEANS.centroids_compute(self.data,closest_centroids_ids,self.num_clustres)
        return centroids,closest_ centroids_ids

接下来是三个方法:

def centroids_init(self,data,num_clustres):
        num_examples=data.shape[0]
        random_ids=np.random.permutation(num_examples)
        centroids=data[random_ids[:num__clustres],:]
        return centroids
def centroids_find_closest(self,data,centroids ) :
    num_examples = self.data.shape[0]
    num_centroids = centroids.shape[0]
    closest_centroids_ids = np.zeros((num_examples,1))
    for example_index in range( num_examples) :
        distance = np.zeros( num_centroids,1)
        for centroid_index in range(num_centroids) :
            distance_diff = data[example_index, : ] - centroids[centroid_index,distance[centroid_index]   
        = np.sum(distance_diff**2)
        closest_centroids_ids[example_index] = np.argmin(distance)
    return closest_centroids_ids
def centroids_compute(self ,data,closest_centroids_ids,num_clustres):
    num_features = data.shape[0]
    centroids = np.zeros((num_ciustres,num_features))
    for centnoid_id in range(num_clustres) :
    closest_ids = closest_centroids_ids == centroid_id
    centroids[closest_ids] = np.mean( aareturn centroids.flatten(),:],axis=0)
    return centroids
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-08-19 19:04:57  更:2022-08-19 19:05:25 
 
开发: 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年12日历 -2024/12/28 18:58:37-

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