机器学习---kMeans算法

1. Load dataset

from numpy import *
import matplotlib.pyplot as plt
import pandas as pd

url = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"
names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class'] # 5列
dataset = pd.read_csv(url, names=names)
dataset['class'][dataset['class']=='Iris-setosa']=0
dataset['class'][dataset['class']=='Iris-versicolor']=1
dataset['class'][dataset['class']=='Iris-virginica']=2

鸢(yuan1)尾花卉数据集,是一类多重变量分析的数据集。数据集包含150个数据集,分为3类,

每类50个数据,每个数据包含4个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属

性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。#对类别进行编

码,3个类别分别赋值0,1,2。

2. 计算距离

def distEclud(vecA, vecB):                  
    return sqrt(sum(power(vecA - vecB, 2)))

计算两个向量之间的欧氏距离。输入: 两个向量vecAvecB。

使用公式:

3. 初始化聚类中心

# def randCent(dataSet, k):
#     #获取特征维度
#     n = shape(dataSet)[1]   
#     #创建聚类中心0矩阵 k x n
#     centroids = mat(zeros((k,n)))
#     #遍历n维特征         
#     for j in range(n):     
#         #第j维特征属性值min   ,1x1矩阵                 
#         minJ = min(dataSet[:,j])        
#         #区间值max-min,float数值    
#         rangeJ = float(max(dataSet[:,j]) - minJ)   
#         #第j维,每次随机生成k个中心
#         centroids[:,j] = mat(minJ + rangeJ * random.rand(k,1))
#     return centroids

def randChosenCent(dataSet,k):
    # 样本数
    m=shape(dataSet)[0]
    # 初始化列表
    centroidsIndex=[]
    #生成类似于样本索引的列表
    dataIndex=list(range(m))
    for i in range(k):
        #生成随机数
        randIndex=random.randint(0,len(dataIndex))
        #将随机产生的样本的索引放入centroidsIndex
        centroidsIndex.append(dataIndex[randIndex])
        #删除已经被抽中的样本
        del dataIndex[randIndex]
    #根据索引获取样本
    centroids = dataSet.iloc[centroidsIndex]
    return mat(centroids)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三月七꧁ ꧂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值