python中K-means算法基础知识点

能够学习和掌握编程,最好的学习方式,就是去掌握基本的使用技巧,再多的概念意义,总归都是为了使用服务的,K-means算法又叫K-均值算法,是非监督学习中的聚类算法。主要有三个元素,其中N是元素个数,x表示元素,c(j)表示第j簇的质心,下面就使用方式给大家简单介绍实例使用。

K-Means算法进行聚类分析

km = KMeans(n_clusters = 3)
km.fit(X)
centers = km.cluster_centers_
print(centers)

三个簇的中心点坐标为:

[[5.006 3.428 ]

[6.81276596 3.07446809]

[5.77358491 2.69245283]]

比较一下K-Means聚类结果和实际样本之间的差别:

predicted_labels = km.labels_
fig, axes = plt.subplots(1, 2, figsize=(16,8))
axes[0].scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Set1,
        edgecolor='k', s=150)
axes[1].scatter(X[:, 0], X[:, 1], c=predicted_labels, cmap=plt.cm.Set1,
        edgecolor='k', s=150)
axes[0].set_xlabel('Sepal length', fontsize=16)
axes[0].set_ylabel('Sepal width', fontsize=16)
axes[1].set_xlabel('Sepal length', fontsize=16)
axes[1].set_ylabel('Sepal width', fontsize=16)
axes[0].tick_params(direction='in', length=10, width=5, colors='k', labelsize=20)
axes[1].tick_params(direction='in', length=10, width=5, colors='k', labelsize=20)
axes[0].set_title('Actual', fontsize=18)
axes[1].set_title('Predicted', fontsize=18)

k-means算法实例扩展内容:

# -*- coding: utf-8 -*-
"""Excercise 9.4"""
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import sys
import random

data = pd.read_csv(filepath_or_buffer = '../dataset/watermelon4.0.csv', sep = ',')[["密度","含糖率"]].values

########################################## K-means #######################################
k = int(sys.argv[1])
#Randomly choose k samples from data as mean vectors
mean_vectors = random.sample(data,k)

def dist(p1,p2):
 return np.sqrt(sum((p1-p2)*(p1-p2)))
while True:
 print mean_vectors
 clusters = map ((lambda x:[x]), mean_vectors)
 for sample in data:
  distances = map((lambda m: dist(sample,m)), mean_vectors)
  min_index = distances.index(min(distances))
  clusters[min_index].append(sample)
 new_mean_vectors = []
 for c,v in zip(clusters,mean_vectors):
  new_mean_vector = sum(c)/len(c)
  #If the difference betweenthe new mean vector and the old mean vector is less than 0.0001
  #then do not updata the mean vector
  if all(np.divide((new_mean_vector-v),v) < np.array([0.0001,0.0001]) ):
   new_mean_vectors.append(v)
  else:
   new_mean_vectors.append(new_mean_vector)
 if np.array_equal(mean_vectors,new_mean_vectors):
  break
 else:
  mean_vectors = new_mean_vectors 

#Show the clustering result
total_colors = ['r','y','g','b','c','m','k']
colors = random.sample(total_colors,k)
for cluster,color in zip(clusters,colors):
 density = map(lambda arr:arr[0],cluster)
 sugar_content = map(lambda arr:arr[1],cluster)
 plt.scatter(density,sugar_content,c = color)
plt.show()

到此这篇关于python中K-means算法基础知识点的文章就介绍到这了,更多相关python中K-means算法是什么内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解K-means算法在Python中的实现

    K-means算法简介 K-means是机器学习中一个比较常用的算法,属于无监督学习算法,其常被用于数据的聚类,只需为它指定簇的数量即可自动将数据聚合到多类中,相同簇中的数据相似度较高,不同簇中数据相似度较低. K-MEANS算法是输入聚类个数k,以及包含 n个数据对象的数据库,输出满足方差最小标准k个聚类的一种算法.k-means 算法接受输入量 k :然后将n个数据对象划分为 k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高:而不同聚类中的对象相似度较小. 核心思想 通过迭代寻找

  • python中K-means算法基础知识点

    能够学习和掌握编程,最好的学习方式,就是去掌握基本的使用技巧,再多的概念意义,总归都是为了使用服务的,K-means算法又叫K-均值算法,是非监督学习中的聚类算法.主要有三个元素,其中N是元素个数,x表示元素,c(j)表示第j簇的质心,下面就使用方式给大家简单介绍实例使用. K-Means算法进行聚类分析 km = KMeans(n_clusters = 3) km.fit(X) centers = km.cluster_centers_ print(centers) 三个簇的中心点坐标为: [

  • Python爬虫入门有哪些基础知识点

    1.什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来.想抓取什么?这个由你来控制它咯. 比如它在抓取一个网页,在这个网中他发现了一条道路,其实就是指向网页的超链接,那么它就可以爬到另一张网上来获取数据.这样,整个连在一起的大网对这之蜘蛛来说触手可及,分分钟爬下来不是事儿. 2.浏览网页的过程 在用户浏览网页的过程中,我们可能会看到许多好看的图片,比如 http://image.bai

  • python关于变量名的基础知识点

    变量名 1.组成:数字.字母.下划线 2.变量名要有意义 3.多个单词则用下划线,如user_id 4.python的变量名不要驼峰显示 字符串: 1.引号内的都称为 字符串 2.常用引号:' '," ",'' '',"" "",''' ''', """ """ 3.支持运算:+,* 数值: 1.支持运算:+,-,*,/,**(指数),%(取余数),//(取商) 如:3**4=81 5%

  • java中Class类的基础知识点及实例

    1.说明 Class本身也是一个类. Class对象只能由系统确定. JVM中只有一个Class实例可以加载一个类. Class对应于JVM中加载的.class文件. 每一类的实例都会记住它是由哪个Class例子产生的. 通过Class,可以完全获得一个类中所有加载的结构. Class是Reflection的根源.对于任何你想动态加载和运行的类,只有先获得相应的Class对象. 2.实例 package com.volcano.reflection; import java.lang.annot

  • python中subprocess实例用法及知识点详解

    1.subprocess这个模块来产生子进程,并且可以连接到子进程的标准输入.输出.错误中,还可以获得子进程的返回值. 2.subprocess提供了2种方法调用子程序. 实例 # coding:utf-8 import os # popen返回文件对象,同open操作一样 f = os.popen(r"ls", "r") l = f.read() print(l) f.close() Python subprocess知识点扩充 使用subprocess模块的目的

  • python 中的pycrypto 算法加密

    目录 一.安装 二.AES 加密解密 三.SHA加密 四.RSA算法生成密钥对 五.使用密钥对加密解密 六.加签和验签 一.安装 pycryto能实现大致3种类型的数据加密(单向加密.对称加密 和非对称加密),产生随机数,生成密钥对,数字签名 单向加密:Crypto.Hash,其中中包含MD5.SHA1.SHA256等 对称加密:Crypto.Cipher,如常见的DES等 非对称加密:Crypto.Cipher,如常见的AES加密等 随机数操作:Crypto.Random,也可以使用Pytho

  • python中mpi4py的所有基础使用案例详解

    python中mpi4py的基础使用 大多数 MPI 程序都可以使用命令 mpiexec 运行.在实践中,运行 Python 程序如下所示: $ mpiexec -n 4 python script.py 案例1:测试comm.send 和comm.recv函数,代码如下 from mpi4py import MPI comm = MPI.COMM_WORLD rank = comm.Get_rank() if rank == 0:     data = {'a': 7, 'b': 3.14}

  • python实现K最近邻算法

    KNN核心算法函数,具体内容如下 #! /usr/bin/env python3 # -*- coding: utf-8 -*- # fileName : KNNdistance.py # author : zoujiameng@aliyun.com.cn import math def getMaxLocate(target): # 查找target中最大值的locate maxValue = float("-inFinIty") for i in range(len(target)

  • Python语言的12个基础知识点小结

    python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进制转换,Python调用系统命令或者脚本,Python 读写文件. 1.正则表达式替换 目标: 将字符串line中的 overview.gif 替换成其他字符串 复制代码 代码如下: >>> line = '<IMG ALIGN="middle" SRC=\'#\'

  • 用python实现k近邻算法的示例代码

    K近邻算法(或简称kNN)是易于理解和实现的算法,而且是你解决问题的强大工具. 什么是kNN kNN算法的模型就是整个训练数据集.当需要对一个未知数据实例进行预测时,kNN算法会在训练数据集中搜寻k个最相似实例.对k个最相似实例的属性进行归纳,将其作为对未知实例的预测. 相似性度量依赖于数据类型.对于实数,可以使用欧式距离来计算.其他类型的数据,如分类数据或二进制数据,可以用汉明距离. 对于回归问题,会返回k个最相似实例属性的平均值.对于分类问题,会返回k个最相似实例属性出现最多的属性. kNN

随机推荐