1. 手写⼀个简单的Kmeans算法

导入所需要的包

# 导入一些包
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.datasets import make_blobs

模拟数据

# 模拟出一些数据集出来
#r = np.random.randint(1,100)
r = 4
#print(r)
k = 3
x , y = make_blobs(n_samples = 300,cluster_std = [0.3, 0.3, 0.3],centers = [[0,0],[1,1],[-1,1]],random_state = r)
sim_data = pd.DataFrame(x, columns = ['x1', 'x2'])
sim_data['label'] = y
sim_data.head(5)datasets = sim_data.copy()plt.scatter(sim_data['x1'], sim_data['x2'])


因为聚类分析是无监督学习方式,所以在代码中不需要y值,都只有x值就好了。所以drop弹出y
取出最大值与最小值

data_content = datasets.drop('label',axis=1)
range_info =data_content.describe().loc[['min','max'],:]

随机产生3个介于最大值与最小值之间的数(这样写代码更有拓展性,实用性强)

#这样的代码实用性会更强,上面只适用于X1和X2
# 这个代码可以适用于所有数据
l = []
for i in data_content.columns:l.append(np.random.uniform(range_info[i]['min'],range_info[i]['max'],3))
l

这个作为初始的聚类中心点的位置,介于最大值与最小值之间

转成表格DataFrame

pd.DataFrame(l,index = data_content.columns).T


这3个初始值的聚类中心点就是
(1.796770 ,-0.384921)
(-0.119144, -0.497739)
(1.258498, -0.322896)
因为for循环有对大数据不采用,所以这里教一种减少循环次数的方法

# 列表解析式
[np.random.uniform(range_info[i]['min'],range_info[i]['max'],3) for i in data_content.columns]


这个是取出k个随机的介于最大值和最小值之间的数

# 从i的最大最小中随机生成k个数
np.random.uniform(range_info[i]['min'],range_info[i]['max'],k)

这个比上一个更有拓展性,可以外部设置K值(聚类点数)

# 使用列表解析式写出一个更加有拓展性的代码
k = 4
k_randoms = [np.random.uniform(range_info[i]['min'], range_info[i]['max'], k) for i in data_content.columns]
k_randoms

转成表格形式

# 将最后的k_randoms转化成dataframe的格式
centers = pd.DataFrame(k_randoms, index = data_content.columns).T
centers


封装成函数,之后就可以直接用了,datasets是数据集

# 上面的都测试好之后,我们就可以把它写出一个函数
def initial_centers(datasets, k = 3):data_content = datasets.drop('label', axis = 1)range_info = data_content.describe().loc[['min', 'max'], :]k_randoms = [np.random.uniform(range_info[i]['min'], range_info[i]['max'], k) for i in data_content.columns]centers = pd.DataFrame(k_randoms, index = data_content.columns).Treturn centers

测试一下封装好的包

centers = initial_centers(datasets = datasets, k = 3)
centers

Python机器学习---2.聚类分析代码部分相关推荐

  1. 《Python机器学习》基础代码

    1,要学习Python机器学习,第一步就是读入数据,这里我们以读入excel的数据为例,利用jupyter notebook来编码,具体教程看这个视频 本书所有文件均来自下面的二维码 下载后解压,再将 ...

  2. python简单的聚类分析代码_python kmeans聚类简单介绍和实现代码

    一.k均值聚类的简单介绍 假设样本分为c类,每个类均存在一个中心点,通过随机生成c个中心点进行迭代,计算每个样本点到类中心的距离(可以自定义.常用的是欧式距离) 将该样本点归入到最短距离所在的类,重新 ...

  3. python机器学习手册——学习代码(导入、处理、时间、图像、降维、sklearn模型、神经网络)

    一.向量.矩阵.数组 # 1.1 创建向量 array #一维数组 import numpy as np vector_row = np.array([1,2,3]) # 创建行向量 vector_c ...

  4. 用Python进行机器学习(附代码、学习资源)

    作者:Tirthajyoti Sarkar 翻译:张逸 校对:冯羽 本文约3090字,建议阅读6分钟. 本文从非线性数据进行建模,带你用简便并且稳健的方法来快速实现使用Python进行机器学习. 使用 ...

  5. 82 个代码案例实践,带你学好 Python 机器学习

    全世界有3.14 % 的人已经关注了 数据与算法之美 如果村里通了网,那你一定知道[AI]人工智能. 如果你会网上冲浪,那你一定看到过[ML]机器学习. 小编在网上看到一个段子:ML派坐落美利坚合众山 ...

  6. python常用代码入门-入门十大Python机器学习算法(附代码)

    入门十大Python机器学习算法(附代码) 今天,给大家推荐最常用的10种机器学习算法,它们几乎可以用在所有的数据问题上: 1.线性回归 线性回归通常用于根据连续变量估计实际数值(房价.呼叫次数.总销 ...

  7. python 算法教程 pdf 英文_上手实践《Python机器学习第2版》PDF中文+PDF英文+代码+Sebastian...

    学习机器学习,推荐学习<Python机器学习(第二版)>. <Python机器学习(第2版)>,图文并茂,代码详实,原理清晰,覆盖面适度,侧重算法实现和应用,作为入门级学习还是 ...

  8. python机器学习开源代码_Python简化代码机器学习库PyCaret 2.0发布

    字幕组双语原文:Python简化代码机器学习库PyCaret 2.0发布 英语原文:Announcing PyCaret 2.0 翻译:雷锋字幕组(Shangru) 我们激动的宣布,PyCaret第二 ...

  9. Python机器学习实验二:1.编写代码,实现对iris数据集的KNN算法分类及预测

    Python机器学习实验二:编写代码,实现对iris数据集的KNN算法分类及预测 1.编写代码,实现对iris数据集的KNN算法分类及预测,要求: (1)数据集划分为测试集占20%: (2)n_nei ...

最新文章

  1. [恢]hdu 1259
  2. JavaScript中闭包实现的私有属性的getter()和setter()方法
  3. Django:django-user2安装相关问题
  4. 最大数输出(信息学奥赛一本通-T1053)
  5. Hadoop2 自己动手编译Hadoop的eclipse插件
  6. Java语法基础----课后实践作业
  7. 云原生分布式数据库和数据仓库崛起背后的原因
  8. skywalking-安装部署
  9. POJ 3233 Matrix Power Series(java)
  10. 科学计数法(PAT)
  11. 转DICOM学习笔记
  12. 计算机高级筛选在哪找,excel表格数据高级筛选在哪里-EXCEL高级筛选
  13. 使用shp裁剪县区遥感影像
  14. java matlab 遗传算法_简单遗传算法MATLAB实现
  15. 77.【JavaWeb文件上传和邮件发送04】
  16. 青少年CTF - Web - Flag在哪里 Wp WriteUp
  17. DataCom OLT HGU ONU(bridge+other)组播配置指导
  18. 用vue写购物车常用的数量增加和减少吧!
  19. html css动画自动旋转,基于animation.css实现动画旋转特效
  20. m3u8, flv, mp4格式视频demo源码分享

热门文章

  1. 2、AD工程创建步骤
  2. html下拉菜单jq怎么设置,jquery+css实现下拉列表功能
  3. 幅度和幅值有区别吗_克拉克 (Clark) 变换中等幅值 (2/3) 和等功率 (sqrt(2/3)) 变换的公式推导...
  4. 仿微博国际版首页点击显示分组列表(popupwindow悬浮阴影效果)
  5. linux mysql设置数据库utf_设置mysql数据库 utf8
  6. 夏普出了款机器人手机 可以和你“坐着聊聊天”
  7. 存储器芯片巨头动态观察:三星、美光、SK海力士都在做什么?
  8. mysql字符串用法
  9. IconFont的制作使用
  10. 偶对称离散余弦变换 EDCT