【Python机器学习】Sklearn库中Kmeans类、超参数K值确定、特征归一化的讲解(图文解释)
一、局部最优解
采用随机产生初始簇中心 的方法,可能会出现运行 结果不一致的情况。这是 因为不同的初始簇中心使 得算法可能收敛到不同的 局部极小值。
不能收敛到全局最小值,是最优化计算中常常遇到的问题。有一类称为凸优化的优化计算,不存在局部最优问题。凸优化是指损失函数为凸函数的最优化计算。在凸函数中,没有局部极小值这样的小“洼地”,因此是最理想的损失函数。如果能将优化目标转化为凸函数,就可以解决局部最优问题。
二、Sklearn库中的Kmeans类
kmeans类中参数和方法如下
class sklearn.cluster.KMeans(n_clusters=8, init=’k-means++’, n_init=10, max_iter=300, tol=0.0001, precompute_distances=’auto’, verbose=0, random_state=None, copy_x=True, n_jobs=None, algorithm=’auto’)fit(X[, y, sample_weight]) # 分簇训练
fit_predict(X[, y, sample_weight]) # 分簇训练并给出每个样本的簇号
predict(X[, sample_weight]) # 在训练之后,对输入的样本进行预测
transform(X) # 计算样本点X与各簇中心的距离
1)init参数
KMeans类通过init参数提供了三种设置初始簇中心的方法,分别为k-means++、random和用户指定。KMeans类通过init参数提供了三种设置初始簇中心的方法,分别为k-means++、random和用户指定。
random是由算法随机产生簇中心。
用户指定是通过一个ndarray数组将用户设置好的初始簇中心传入算法。
2)n_init参数
n_init参数指定算法重复运行次数。通过多次重复运行算法,最终选择最好的结果作为输出。
3)max_iter参数和tol参数
max_iter参数和tol参数是迭代的退出条件。
max_iter参数指定一次运行中的最大迭代次数,达到最大次数时结束迭代。
tol参数指定连续两次迭代变化的阈值,如果损失函数的变化小于阈值,则结束迭代。
三、超参数K值的确定
可以对不同的k值逐次运行算法,取“最好结果”。要注意的是,这个“最好结果”并非是SSE等算法指标,而是要根据具体应用来确定。
通常用拐点法又称肘部法来确定
如下图所示 当图像出现拐点的值选取为K值比较合适,下图即为4或者5
四、特征归一化
k-means算法对样本不同特征的分布范围非常敏感。
已知小明(160,60000),小王(160,59000),小李(170,60000)。根据常识可以知道小明和小王体型相似,但是如果根据欧氏距离来判断,小明和小王的距离要远远大于小明和小李之间的距离,即小明和小李体型相似。这是因为不同特征的度量标准之间存在差异而导致判断出错。
为了使不同变化范围的特征能起到相同的影响力,可以对特征进行归一化(Standardize)的预处理,使之变化范围保持一致。常用的归一化处理方法是将取值范围内的值线性缩放到[0,1]或[-1,1]。
对第j个特征x^(j)来说,如果它的最大值和最小值分别是maxx^(j)和minx^(j),则对于某值x_i^(j)来说,其[0,1]归一化结果为:
Sklearn的prepeocessing模块提供了一些通用的对原始数据进行特征处理的工具。
from sklearn.preprocessing import MinMaxScaler
import numpy as np
#对数据进行归一化
X = np.array([[ 0., 1000.],[ 0.5, 1500.],[ 1., 2000.]])
min_max_scaler = MinMaxScaler()
X_minmax = min_max_scaler.fit_transform(X)
X_minmax
>>>array([[0. , 0. ],[0.5, 0.5],[1. , 1. ]])# 将相同的缩放应用到其它数据中
X_test = np.array([[ 0.8, 1800.]])
X_test_minmax = min_max_scaler.transform(X_test)
X_test_minmax
>>>array([[0.8, 0.8]])
# 缩放因子
min_max_scaler.scale_
>>>array([1. , 0.001])
# 最小值
min_max_scaler.min_
>>>array([ 0., -1.])
创作不易 觉得有帮助请点赞关注收藏~~~
【Python机器学习】Sklearn库中Kmeans类、超参数K值确定、特征归一化的讲解(图文解释)相关推荐
- python机器学习可视化工具Yellowbrick绘图获取最佳聚类K值实战示例
python机器学习可视化工具Yellowbrick绘图获取最佳聚类K值实战示例 目录 机器学习可视化工具Yellowbrick绘图获取最佳聚类K值实战示例
- Python初探——sklearn库中数据预处理函数fit_transform()和transform()的区别
敲<Python机器学习及实践>上的code的时候,对于数据预处理中涉及到的fit_transform()函数和transform()函数之间的区别很模糊,查阅了很多资料,这里整理一下: ...
- python:PIL库中Image类thumbnail方法和resize方法的比较
from PIL import Imageim=Image.open("C:\\Users\\kethur\\Desktop\\a.jpg") x,y=im.size print( ...
- Py之scikit-learn:机器学习sklearn库的简介、六大基本功能介绍(数据预处理/数据降维/模型选择/分类/回归/聚类)、安装、使用方法(实际问题中如何选择最合适的机器学习算法)之详细攻略
Py之scikit-learn:机器学习sklearn库的简介(组件/版本迭代).六大基本功能介绍(数据预处理/数据降维/模型选择/分类/回归/聚类).安装.使用方法(实际问题中如何选择最合适的机器学 ...
- python的自带数据集_Python的Sklearn库中的数据集
一.Sklearn介绍 scikit-learn是Python语言开发的机器学习库,一般简称为sklearn,目前算是通用机器学习算法库中实现得比较完善的库了.其完善之处不仅在于实现的算法多,还包括大 ...
- pythonsklearn乳腺癌数据集_Python的Sklearn库中的数据集
一.Sklearn介绍 scikit-learn是Python语言开发的机器学习库,一般简称为sklearn,目前算是通用机器学习算法库中实现得比较完善的库了.其完善之处不仅在于实现的算法多,还包括大 ...
- sklearn库中的标准数据集及基本功能
[sklearn库] sklearn是scikit-learn的简称,是一个基于Python的第三方模块.sklearn库集成了一些常用的机器学习方法,在进行机器学习任务是,并不需要实现算法,只需要简 ...
- ID3决策树 Python实现 + sklearn库决策树模型的应用
本文介绍机器学习中决策树算法的python实现过程 共介绍两类方法: (1)亲手实习Python ID3决策树经典算法 (2)利用sklearn库实现决策树算法 关于决策树的原理,指路:机器学习 第四 ...
- Py之scikit-learn:机器学习Sklearn库的简介、安装、使用方法(ML算法如何选择)、代码实现之详细攻略
Py之scikit-learn:机器学习Sklearn库的简介.安装.使用方法.代码实现之详细攻略 目录 scikit-learn的简介 scikit-learn的安装 scikit-learn的使用 ...
最新文章
- 深度 | 智慧•城市,基于国际视野下的思考
- 一些恶心的代码片段,你看了就知道!
- 播放生成Android4.0.3中的提示音
- 如何看懂源代码–(分析源代码方法)
- 解决:[ERROR] Error executing Maven. [ERROR] 1 problem was encountered while building the effective set
- python关系运算符和逻辑运算符的优先级_python中逻辑运算符的优先级问题
- 将来时的条件句_58
- 在同一个类中,一个方法调用另外一个有注解(比如@Async,@Transational)的方法,注解失效的原因和解决方法
- 学计算机的博士男朋友,有个计算机博士男朋友的日常?
- 规则引擎--规则引擎构成重点
- 64. magento enable error report
- 安卓学习日志 Day15 — 数据库基础
- open source Lrc歌词解析器发布
- 小米平板4twrp一键刷入工具_不要浪费小米10的双扬声器!杜比全景音刷入教程分享...
- html 静止横屏_移动端开发-禁止横屏
- 封装pc端获取经纬度 百度地图
- 转(解决抢购、秒杀、抢楼、抽奖等阻塞式高并发库存防控超量的思路方法)...
- 盘点2022年爆火的小程序游戏
- js利用点击事件更换皮肤
- Oracle RMAN 的 show,list,crosscheck,delete命令整理
热门文章
- 系统平台开发搭建订单补充源代码部署
- 基于Spring Cloud Gateway 和 注册中心实现灰度发布
- python修改图片大小为30kb_Python的Tornado框架实现图片上传及图片大小修改
- UI自动化 | 痛彻心扉的脚本维护之路
- nfc java_NFC 开发
- Redis 3.0集群搭建/配置/FAQ
- JAVA把指定文件放入压缩包
- [C++]小根堆 插入/删除/初始化
- python如何读取csv文件的某两行_Python 读取csv的某行
- 7XX元一线P35,华硕P5K-SE VS技嘉P35-DS3L谁超频能力更强?