【Python机器学习】Sklearn库中Kmeans类、超参数K值确定、特征归一化的讲解(图文解释)

news/2024/11/28 21:55:22/

一、局部最优解

采用随机产生初始簇中心 的方法,可能会出现运行 结果不一致的情况。这是 因为不同的初始簇中心使 得算法可能收敛到不同的 局部极小值。

不能收敛到全局最小值,是最优化计算中常常遇到的问题。有一类称为凸优化的优化计算,不存在局部最优问题。凸优化是指损失函数为凸函数的最优化计算。在凸函数中,没有局部极小值这样的小“洼地”,因此是最理想的损失函数。如果能将优化目标转化为凸函数,就可以解决局部最优问题。

 

二、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.])

创作不易 觉得有帮助请点赞关注收藏~~~ 


http://www.ppmy.cn/news/4035.html

相关文章

03-MySQL查询数据

目录 DQL语言 单表查询 AS子句 DISTINCT关键字的使用 WHERE条件语句 逻辑操作符 比较操作符 BETWEEN范围查询 LIKE模糊查询 使用IN进行范围查询 NULL空值条件查询 连接查询(多表查询) INNER JOIN内连接 等值和非等值的连接查询 外连接 JOIN对比…

中小企业OA系统的设计与实现

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): 模块划分:通知类型模块、通知信息模块、部门模块、员工模块、考勤模块、工资模块、奖惩类型、奖惩信息、请假…

高比例风电电力系统储能运行及配置分析(Matlab实现)

目录 0 概述 1 案例及分析及分析 2 Matlab实现 3 结论 运行结果 目录 0 概述 1 案例及分析及分析 2 Matlab实现 3 结论 0 概述 高比例风电电力系统储能运行及配置分析 1 案例及分析及分析 针对附件2所示的十五天负荷功率(最大值1200MW)、风电功…

冰刃(IceSword)的使用方法(基础篇)

冰刃是一款功能强大的杀毒辅助软件,深受很多杀毒高手的青睐,这里我介绍一下冰刃这个软件的简单使用方法,供大家参考。说句实话,我不是高手,不能像高手一样把一些软件运用自如,所以这个方法可能有很多纰漏或…

2023适老用品展、CISSE北京养老展、老年产业博览会

千家展商,万款展品,CISSE北京老博会于203年5月5日在京盛装开幕: 2022中国国际养老服务业博览会 ,2023 China Ineternational Senior Services Expo,中英文简称:CISSE北京老博会,是我国创展早、…

educoder:实验13 算法-穷举法和二分法

第1关:百钱百鸡 任务描述 我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何? 相关知识 为了完成本关任务&#xff…

m基于BP神经网络的房屋价值变换趋势预测matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 住宅价格是住宅市场的核心,住宅市场的变化关系到广大消费者的切身利益,商品房价格是升是降,销售是冷是旺,是社会关注的热点问题。因此,…

RocketMQ基本概念及功能

文章目录背景架构模型NameServer 名字服务器Broker 代理服务器生产者主题队列消息消息标签消息位点消费者消费位点消费者分组订阅关系参考文章背景 RocketMQ是阿里巴巴在2012年开发的分布式消息中间件,专为万亿级超大规模的消息处理而设计,具有高吞吐量…