欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

人工智能 chapter 05 K均值

程序员文章站 2022-07-14 21:00:17
...

一。无监督学习:

人工智能 chapter 05 K均值

无监督学习与监督学习的区别:

人工智能 chapter 05 K均值

簇:(先随机找K个簇,然后计算每一个x与k个簇的差值 然后找到最小的就行)

人工智能 chapter 05 K均值
通过npmean(x,axis=0)来计算列的平均值 若axis=1则计算行的平均值
人工智能 chapter 05 K均值

三.代码

计算差值

#encoding=utf8
import math
import numpy as np
def distance(x, y, p=2):
    '''
    input:x(list):第一个样本的坐标
          y(list):第二个样本的坐标
          p(int):等于1时为曼哈顿距离,等于2时为欧氏距离
    output:distance(float):x到y的距离      
    '''
    #********* Begin *********#
    sum = 0
    for i in range(len(x)):
        sum += math.pow(abs(x[i] - y[i]), p)
    distance = math.pow(sum, 1/p)
    return distance
    #********* End *********#

2.计算质心 以及把差值就行排序

#encoding=utf8
import math
import numpy as np

#计算样本间距离
def distance(x, y, p=2):
    '''
    input:x(list):第一个样本的坐标
          y(list):第二个样本的坐标
          p(int):等于1时为曼哈顿距离,等于2时为欧氏距离
    output:distance(float):x到y的距离      
    '''
    sum = 0
    for i in range(len(x)):
        sum += math.pow(abs(x[i] - y[i]), p)
    distance = math.pow(sum, 1/p)
    return distance

#计算质心
def cal_Cmass(data):
    '''
    input:data(ndarray):数据样本
    output:mass(ndarray):数据样本质心
    '''
    #********* Begin *********#
    Cmass = np.mean(data,axis=0)
    #********* End *********#
    return Cmass

#计算每个样本到质心的距离,并按照从小到大的顺序排列
def sorted_list(data,Cmass):
    '''
    input:data(ndarray):数据样本
          Cmass(ndarray):数据样本质心
    output:dis_list(list):排好序的样本到质心距离
    '''
    #********* Begin *********#
    dis_list=[]
    for i in range(len(data)):
        dis_list.append(distance(data[i],Cmass))
    dis_list.sort()
    #********* End *********# 
    return dis_list
 

3.sklearn的k-means

#encoding=utf8
from sklearn.cluster import KMeans

def kmeans_cluster(data):
    '''
    input:data(ndarray):样本数据
    output:result(ndarray):聚类结果
    '''
    #********* Begin *********#
    km=KMeans(n_clusters=3,init='random',max_iter=100)
    result=km.fit_predict(data)
    #********* End *********# 
    return result



调参数:https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html

相关标签: python