当前位置: 首页 > news >正文

机器学习-黑马笔记

视频链接

一、概述

1.1 关系

在这里插入图片描述

1.2能做些什么

在这里插入图片描述

  • 传统预测

用在挖掘和预测,例如销量预测、广告推荐、企业客户分类、sql语句安全检测分类等

  • 图像识别

用在图像识别,例如人脸识别、交通标签识别等

  • 自然语言处理

用在语言处理,例如文本分类、情感分析、自动聊天、文本检测等

1.3 解释

数据、模型、预测

在这里插入图片描述

1.4 数据集成

结构:特征值+目标值

在这里插入图片描述

  • 对于每行我们可以称之为样本
  • 有些数据集可以没有目标值如下
    在这里插入图片描述

1.5 机器学习算法分类

1.了解3大类型

  • 目标值:类别 = 分类
    在这里插入图片描述

  • 目标值:连续分类 = 回归问题
    在这里插入图片描述

  • 目标值:无 = 无监督学习
    在这里插入图片描述

有目标的为监督学习

在这里插入图片描述

2. 机器学习算法分类

在这里插入图片描述

1.6 机器学习开发流程

在这里插入图片描述

  1. 获取数据
  2. 数据处理
  3. 特征工程(特征值)
  4. 机器学习算法进行训练 = 模型
  5. 模型评估
  6. 应用
    在这里插入图片描述

1.7 学习框架+资料介绍

  1. 算法是核心,数据+计算是基础
  2. 找准定位
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

二、特征工程

2.1 可用数据集

在这里插入图片描述

2.2 scikit-learn数据集

中文地址
在这里插入图片描述

1.安装

pip install scikit-learn

使用自带的数据集
在这里插入图片描述

2.小数据集

在这里插入图片描述

3. 大数据集

在这里插入图片描述

4.数据集的使用

在这里插入图片描述

5. 数据划分(数据集合划分)

不能所有数据都用在训练中,得留一部分验证,所以需要划分一部分数据
在这里插入图片描述

在这里插入图片描述

2.3 特征工程介绍

在这里插入图片描述

在这里插入图片描述
特征抽取介绍

  • 概念

机器学习=统计方法=数学公式

前提(转换成算法需要的数值):
文本=》数值
类型=》数值

在这里插入图片描述

1.字典特征提取方法(存储方式)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
转为计算机可认识的:
矩阵 matrix 二维数组
向量: vector 一维数组

- 案例

矩阵和稀疏
在这里插入图片描述

在这里插入图片描述

from sklearn.feature_extraction import DictVectorizerdef dict_demo():"""字典特征提取"""data = [{'city': '北京', 'temperature': 100},{'city': '上海', 'temperature': 60},{'city': '深圳', 'temperature': 30}]# 1. 实例化一个转换器类transfer = DictVectorizer()# 2. 调用fit_transform()进行数据转换data_new = transfer.fit_transform(data)print("data_new:\n", data_new)return None
if __name__ == "__main__":# 代码2:字典特征提取dict_demo()

在这里插入图片描述
在这里插入图片描述

案例对比结果,sparse=True和false的区别就是可以看到括号里面是第二列非0的坐标和值

在这里插入图片描述

这边是竖着看,如果是上海的话就是1其他都为0,如果是北京的话就是1其他都为0

2. 文本特征抽取(次数)

在这里插入图片描述
stop_words是停用词,就是类似i不计入数字
在这里插入图片描述
在这里插入图片描述

标点符号不作为特征词,还有单个i也不作为特征词,意义不大,同字典一样的0和1

- 案例

转换成矩阵
在这里插入图片描述
停用词
在这里插入图片描述

在这里插入图片描述
统计特征词出现的个数

主语中文需要空格隔开单词,否则都是按照语句进行划分的
在这里插入图片描述
在这里插入图片描述

- 中文抽取案例

安装

pip install jieba

在这里插入图片描述
导入

import jieba

使用
在这里插入图片描述
在这里插入图片描述
转换成我们想要的结果(字符串)
在这里插入图片描述
然后按照单词中的进行特征提取就行了

3. Tf-idf文本特征抽取(文本归类)

在这里插入图片描述

例子理解

  • 现在有1000篇文章
  • 100篇出现了‘非常’
  • 10篇出现了‘经济’
    抽取出两篇
  • 文章a(1000字):11次经济 TF-IDF:0.022
    tf:11 / 1000 = 0.011
    idf: lg 10 1000/10 = 2
  • 文章b(1000字):12次非常 TF-IDF:0.012
    tf:12 / 1000 = 0.012
    idf: log 10 1000 / 100= 1

tf:单文章中出现次数/文章字数
idf:lg 10 (总篇数/出现篇数)
结果:tf x idf

所以经济较为重要

在这里插入图片描述

- 案例

在这里插入图片描述
在这里插入图片描述

2.4特征预处理

通过一些函数将特征数据转换成更加适合算法模型的特征数据过程

1. 归一化(数据差别大,都统一调小参数,多方面考虑然后评定)

例如路线轨迹,很多数据,其中两点之间很接近,所以就需要归一化
无量纲化:例如下面评价有相对应的计算公式,就是通过里程数+时间耗比 来计算然后得到评价
但是出现问题就是可能时间耗差数据是在0-2区间的,但是里程数是在0-7万之间的所以计算出来的结果是受到里程数干扰的并不是两列进行评估的,所以需要进行归一化去把里程数调小,来评估

在这里插入图片描述

在这里插入图片描述
示例:其中x是当前数值,mx-mi是你想把数据变为xxx区间,比如0-1区间那么mx就是1,mi为0,就是你结果集的返回值的区间
在这里插入图片描述
参数为:几行,几列(特征)
在这里插入图片描述

- 案例

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

- 问题

在这里插入图片描述

- 归一化总结

在这里插入图片描述

2. 标准化(在归一化的时候进行处理x’,避免最大最小影响数据)

标准化不会被最大值最小值为异常样本所影响,是基于平均数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

- 案例

在这里插入图片描述
在这里插入图片描述

2.5 降维

在这里插入图片描述

冗余特征,例如鸟,都有爪子,那么数据都是一样的,所以没有意义
有什么公式或者方法自动过滤到冗余特征

1. 特征降维

在这里插入图片描述

- 低方位特征过滤(单个数据值波度上涨下降都比较平缓)

在这里插入图片描述
– 案例
在这里插入图片描述
在这里插入图片描述
代码
在这里插入图片描述
在这里插入图片描述

- 相关系数(两个特征值都接近)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如果结果是正数,那么就是正相关,一个数值在增加,另外一个也在增加
如果结果是负数,那么就是负相关,一个数值在减少,另外一个也在减少

– 案例
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这个前面的负数就是相关系数

也可以通过散点图去观察
在这里插入图片描述
相关性很强如何处理???

加权求和就是,取比例占多少。
在这里插入图片描述

2 主成分分析

pca在做的事情就是以最少损失信息进行降为
在这里插入图片描述
在这里插入图片描述

- 计算案例(降维尽量减少数据的损失)

例如二维坐标中,降维成为一维的数据如何处理。
在这里插入图片描述
==错误演示:==原本五个点现在要成为了6个点所有降维不好

在这里插入图片描述
正确示例
在这里插入图片描述

这个过程如何计算?
在这里插入图片描述

- api接口

在这里插入图片描述

示例

在这里插入图片描述

2是降维2维数组
传小数还是二维特征,就是保留多少信息比如95%就是0.95
在这里插入图片描述
降低3维
在这里插入图片描述

3. 案例-instacart降维案例

- 案例

在这里插入图片描述

1分析–合并
2找到用户和类别-交叉表和透视表
3特征冗余过多-》PCA降维度

需要将用户id和商品类别放到一张表中

下图中列为类别名称,也就是商品分类名称userid为2的,购买了asian foods的商品3次,下面数据太多0了需要进行第三部

在这里插入图片描述

- 代码实现

1. 获取数据源
在这里插入图片描述

2. 合并表
在这里插入图片描述
在这里插入图片描述

3. 交叉数据

只看画横线的结果,不用看14的输出因为是上个步骤的具体数据看下面。

在这里插入图片描述

结果
在这里插入图片描述
4.降低维度

.shapt是形状,原本134个特征降为到42个特征了,还保留了95%的特征
在这里插入图片描述
可以看到大量代码都是在做数据处理工作实际降维就那么1到2行代码

三、分类算法

3.1 sklearn转换器和估计器

1. 转换器

  • 介绍
    在这里插入图片描述
    在这里插入图片描述

2. 估计器

  • 介绍
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
下面是ai的说明
在这里插入图片描述

3. K-近邻算法

在这里插入图片描述

介绍:又名KNN算法,例如:根据你的邻居推断出来你的所属区域(类别)

在这里插入图片描述

原理: k的取值,比如1的话就找周边一个最近的,2的话就找两个最近的样本进行评估

在这里插入图片描述

核心思想:

在这里插入图片描述

案例解析
在这里插入图片描述

  • 现在需要根据k去分出来未知电影的定位
    在这里插入图片描述

上图中的无量纲化,就是值电影中的爱情和打斗进行无量钢化一下进行评估。

4. api

在这里插入图片描述

上图中的的一个参数就是3中提到的k值,取多少条临近数据进行分析
第二个参数是排序,auto是自动选择排序手段,无需担心

案例

在这里插入图片描述

代码

在这里插入图片描述

输出

在这里插入图片描述
改变K值3就会影响准确率,随着数据多少进行判断

5. 优缺点+结果分析

在这里插入图片描述

3.2 模型选择和调优

在这里插入图片描述

1. 交叉验证

同一份数据的话,那么分成4份然后计算,哪个作为测试数据,这个定义可以更改比如,第一轮a是训练数据,第二轮就是可以设置为测试数据
在这里插入图片描述
为什么要做交叉验证原因
为了得到更准确

3.3 超参数搜索-网格搜索

在这里插入图片描述

1.api介绍

比如现在要对k-n算法进行加上网格搜索

第一个参数:k-预估器
第二个参数:k的取值,例如1或者3或者5
第三个参数:几次交叉验证(数据集分为训练集和验证集和测试集)
在这里插入图片描述
案例
花的案例和增加k值调优

在这里插入图片描述

基于花的案例进行处理更改

在这里插入图片描述

在这里插入图片描述
拓展
入口
在这里插入图片描述
源码中
p=1的话采用的=》曼哈顿距离
p=2的话采用的=》欧式距离

在这里插入图片描述

3.4 案例:facebook签到位置

在这里插入图片描述

上文参数介绍:
第一个:签到id(无关紧要)
第二个:签到的坐标
第三个:gps
第四个:时间
第五个:预测位置

在这里插入图片描述
在这里插入图片描述
分析

  1. 获取数据

  2. 数据处理
    目的:
    特征值
    目标值
    a.缩小数据范围
    2<x<2.5之间的数据
    1.0<y<1.5之间的数据
    b.time-》年月日时分秒
    c.过滤签到次数少的地点
    d.数据集划分

  3. 特征处理:标准化

  4. knn算法预估流程

  5. 模型选择和调优

  6. 模型评估

代码实现

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import GridSearchCVif __name__ == '__main__':# 1获取数据data = pd.read_csv(r"C:\Users\20350\Desktop\xxx.csv")# 2基本数据处理# 1)缩小数据范围data = data.query("x < 2.5 & x > 2 & y < 1.5 & y > 1.0")# 2)处理时间特征time_value = pd.to_datetime(data["time"], unit="s")date = pd.DatetimeIndex(time_value)data["day"] = date.daydata["weekday"] = date.weekdaydata["hour"] = date.hour# 3)过滤签到时间比较少的place_count = data.groupby("place_id").count()["row_id"]row_ids = place_count[place_count > 3]data_final = data[data["place_id"].isin(row_ids.index.values)]x = data_final[["x","y","accuracy","weekday","hour"]] # 我们需要的值y = data_final["place_id"] # 结果输出的值# 数据集划分x_train, x_test, y_train, y_test = train_test_split(x,y)# 特征工程化transfer = StandardScaler()x_train = transfer.fit_transform(x_train)x_test = transfer.transform(x_test)# KNN算法预估器estimator = KNeighborsClassifier()# 加入网格搜索和交叉校验# 参数准备param_dict = {'n_neighbors':[3,5,6,7,9]}estimator = GridSearchCV(estimator, param_grid = param_dict, cv=3)estimator.fit(x_train, y_train)# 模型评估# 方法1: 直接比对真实值和预测值y_predict = estimator.predict(x_test)print("y_predict 预测的结果", y_predict)print("比对预测值", y_test == y_predict)# 方法2: 计算准确率score = estimator.score(x_test, y_test)# 最佳参数print("最佳参数", estimator.best_params_)# 最佳结果print("最佳结果", estimator.best_score_)# 最佳估计算器print("最佳估计器", estimator.best_estimator_)# 交叉验证结果print("交叉验证结果", estimator.cv_results_)

3.5 朴素贝叶斯算法

通过算法计算概率

1. 案例

在这里插入图片描述

条件概率和联合概率,出现两个条件就是联合概率

联合概率、条件概率与相互独立

在这里插入图片描述

不相互匀称

在这里插入图片描述
上图计算:12/49!=1/7

2. 公式

在这里插入图片描述

计算案例
在这里插入图片描述
在这里插入图片描述

3. 概述朴素贝叶斯

朴素:
假设:特征与特征之间时相互独立
朴素贝叶斯:
就是朴素+(贝叶斯)公式

主要应用到文本分类,单词作为特征

4. 文章分类计算

在这里插入图片描述
如果测试集那五个词,属于哪个类别

在这里插入图片描述

在这里插入图片描述

5. api

在这里插入图片描述

5. 案例20类新闻分类

在这里插入图片描述

  • 案例分析
  1. 获取数据
  2. 划分数据集
  3. 特征工程
    文本特征抽取
  4. 朴素贝叶斯预估器流程
  5. 模型评估

可以调整平滑系数的值

from sklearn.datasets import fetch_20newsgroups
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNBif __name__ == '__main__':# 获取数据news = fetch_20newsgroups(subset="all") # 参数data_home是下载哪个目录下默认home目录# 划分数据集x_train,x_test,y_train,y_test = train_test_split(news.data, news.target)# 特征工程:文本特征抽取-tfidftransfer = TfidfVectorizer()x_train = transfer.fit_transform(x_train)x_test = transfer.transform(x_test)# 朴素贝叶斯算法预估器流程estimator = MultinomialNB()estimator.fit(x_train, y_train)# 模型评估# 方法1 直接比对真实值和预测值y_predict = estimator.predict(x_test)print("y_predict结果", y_predict)print("直接比对真实值和预测值:", y_test == y_predict)# 方法2:计算准确率score = estimator.score(x_test, y_test)print("准确率",score)

在这里插入图片描述

6. 总结

在这里插入图片描述

一篇文章丢失几个单词也没关系不影响分类

缺点:比如当出现了我爱北京天安门那么你把北京天安门分开又不一样了

3.6 决策树

1. 认识决策树

在这里插入图片描述

  • 如何高效的进行决策? -------》特征的先后顺序

2. 决策树原理详解

  • 例子:
    在这里插入图片描述

问题:对客户进行划分预测,判断是否贷款给这个人

在这里插入图片描述

在这里插入图片描述

原理
  • 信息熵、信息增益等

3. 信息熵的定义

在这里插入图片描述

例子:
香农:消除随机不定性的东西
小明 年龄 “我今年18岁”-信息
小花 “小明明年19岁” -不是信息

根据例子理解公式,还是拿2买房为例子

在这里插入图片描述

4. 决策树划分之一--------信息增益

  • 定义与公式
    在这里插入图片描述
    在这里插入图片描述

举个例子理解

在这里插入图片描述

例如上面买房例子,年龄,现在更改为青年,不确定性减少

在这里插入图片描述

在这里插入图片描述

5. 决策树api

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6. 决策树的可视化

在这里插入图片描述

上面是文件并不是图案,可以借助网站

在这里插入图片描述
在这里插入图片描述

7. 总结

在这里插入图片描述

8 案例:泰坦尼克号乘客生存预测

在这里插入图片描述
1. 获取数据
在这里插入图片描述

2. 筛选特征值和目标值(例如:年龄、头等舱、性别等 是否影响生存)

在这里插入图片描述
3.数据缺失填补数据(补充年龄为平局值)
在这里插入图片描述
4. 转换为字典
在这里插入图片描述
5. 划分数据集
在这里插入图片描述
6. 字典特征抽取
在这里插入图片描述
7. 获取结果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8. 调整树的高度
在这里插入图片描述

3.7 集成学习方法之随机森林

1. 什么是集成学习方法

在这里插入图片描述

谚语来比喻就是三个臭皮匠顶一个诸葛亮

2 什么是随机森林

在这里插入图片描述

例如,你训练了五个树,其中有4个树的结果是True,1个为False,那么最终投票结果就是True

3 随机森林原理过程

在这里插入图片描述

在这里插入图片描述

4 api接口

在这里插入图片描述

接泰坦尼克号来接着写,到第6步的代码后面开始加

1. 导入api实例化
在这里插入图片描述

2. 获取结果
没有复制全的找之前代码,之前代码里面有
在这里插入图片描述

5. 总结

在这里插入图片描述

3.8 三的大总结

在这里插入图片描述
在这里插入图片描述

四、回归与聚类算法

1. 线性回归

1.1 线性回归应用场景

在这里插入图片描述

1.2 什么是线性回归

下面例子中,x属于特征值,h(w)属于目标值,w属于权重、也叫回归系数,b叫做偏执

在这里插入图片描述

2 线性回归的特征与目标的关系分析

线性回归当中线性模型有两种,一种是线性关系,另外一种是非线性关系。这里我们只能画一个平面更好的去理解,所以都用单个特征举例子

  • 线性关系
    在这里插入图片描述
    在这里插入图片描述
  • 非线性关系

在这里插入图片描述

拓展

在这里插入图片描述

线性关系&线性模型
线性关系不一定是线性模型
线性模型不一定是线性关系

1.3 线性回归的损失和优化原理(理解记忆)

在这里插入图片描述
既然存在这个误差,那我们就将这个误差给衡量出来

1.3.1损失函数

y是真实值,hw(x)预测值,平方的缘故是:我们预测的值可能大于或者小于(有误差)

在这里插入图片描述

1.3.2 优化算法
  • 正规方程
    在这里插入图片描述
    》正规方程适合数据比较小的

  • 梯度下降
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

通过不断的进行寻找,找出最适合的权重值 不断学习找出来最合适的

在这里插入图片描述

1.4 线性回归api

在这里插入图片描述

1.4.1 案例:波士顿房价预测

在这里插入图片描述
在这里插入图片描述
案例执行流程
在这里插入图片描述

正规方程
在这里插入图片描述
梯度下降

修改1中的代码,导入预估器,然后改变预估器

在这里插入图片描述
在这里插入图片描述

运行结果
在这里插入图片描述

注意看13,权重系数数量也为13,跟特征数量一样
在这里插入图片描述

1.4.2 回归性能评估

在这里插入图片描述

代码
在这里插入图片描述

在这里插入图片描述

误差返回结果越小越好

梯度下降调优
在这里插入图片描述
改代码
在这里插入图片描述

1.4.3 正规方程和梯度下降对比

》小于10万条不用梯度下降。
在这里插入图片描述

1.4.4 拓展-关于优化GD、SGD、SAG

在这里插入图片描述
在这里插入图片描述

上面案例线性回归使用的是SGD

2. 欠拟合和过拟合

2.1 什么是欠拟合和过拟合

  • 欠拟合
    在这里插入图片描述
  • 过拟合
    在这里插入图片描述

在这里插入图片描述

定义

在这里插入图片描述
在这里插入图片描述

2.2 原因和解决方案

在这里插入图片描述

如何解决

在这里插入图片描述

2.3 正则化类别

2.3.1 L2正则化(常用)

其中Ridge是岭回归
在这里插入图片描述
其中下面是损失函数
在这里插入图片描述
其中下面是lambda(λ)惩罚项(λ系数超参数可调),加入惩罚项会让w系数变小,
在这里插入图片描述

2.3.2 L1正则化

在这里插入图片描述

2.3.3 总结

二者公式不同的是
L1是W的绝对值
L2是W的2(平方)
在这里插入图片描述

3 带有L2正则化的线性回归-岭回归

在这里插入图片描述

3.1 api

alpha也叫这个符号叫做阿尔法
在这里插入图片描述
在这里插入图片描述

3.2 观察正则化程度的变化,对结果的影响

在这里插入图片描述

3.3 案例

在这里插入图片描述

在这里插入图片描述

调整参数
在这里插入图片描述

4. 分类算法-逻辑回归与二分类

在这里插入图片描述

4.1 逻辑回归的应用场景

在这里插入图片描述

4.2 逻辑回归的原理

4.2.1 输入

线性回归的输出 就是 逻辑回归 的 输入

在这里插入图片描述

4.2.2 激活函数
  • sigmoid函数
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

4.3 损失以及优化

4.3.1 损失

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.3.2 优化

在这里插入图片描述

4.4 逻辑回归api

在这里插入图片描述

4.5 案例:癌症分类预测-良 / 恶性乳腺癌肿瘤预测

在这里插入图片描述

处理流程

  1. 获取数据
    读取数据的时候加上names
  2. 数据处理
    处理缺失值
  3. 数据集划分
  4. 特征工程
    无量纲化-标准化
  5. 逻辑回归预估器
  6. 模型评估
4.5.1 获取数据

在这里插入图片描述

其中?是缺失值

4.5.2 缺失值处理

在这里插入图片描述

4.5.3 数据集划分

在这里插入图片描述

其中x是特征(因素),y是结果

在这里插入图片描述
在这里插入图片描述

4.5.4 特征工程

标准化了,也无量纲化了(数据大小都在0-1之间,防止公里数和时间,因为公里数大而导致时间大)
在这里插入图片描述

4.5.5 逻辑回归预估器

在这里插入图片描述

4.5.6 模型评估

在这里插入图片描述
2良性 4恶性

4.6 精确率、召回率、F1-score

4.6.1 混淆矩阵

在这里插入图片描述

4.6.2 精确率、召回率

在这里插入图片描述
在这里插入图片描述

4.6.3 分类评估报告api

在这里插入图片描述
接癌症案例后比较

在这里插入图片描述
在这里插入图片描述
完整
在这里插入图片描述

  1. precision:精确率
  2. recall(重要):召回率
  3. f1-score:稳健性
  4. support:样本量

在这里插入图片描述

问题:如何引入4.7
在这里插入图片描述

4.7 ROC曲线和AUC指标(样本不均衡的时候进行使用)

4.7.1 TPR和FPR

在这里插入图片描述
在这里插入图片描述

4.7.2 ROC曲线

红色虚线是指标,x和y轴也是指标,包括面积也是指标
蓝线是roc曲线

其中蓝色曲线是ROC曲线
x是FPR
y是TPR
FPR=TPR就是直线
TPR>FPR就是向上倾斜
TPR<FPR就是向下倾斜
所以曲线是根据上面的值变化的
在这里插入图片描述

4.7.3 AUC指标

在这里插入图片描述

4.7.4 AUC计算API

在这里插入图片描述
回到癌症案例
恶性为正例
2(良性)是0
4(恶性)为1

转换

在这里插入图片描述

评估:0.95在样本不均衡的情况下,结果还行

在这里插入图片描述

4.7.5 总结

在这里插入图片描述
在这里插入图片描述
0.5不好
(1x1)/2=0.5

FPR中
1是反例、只有一个非癌症(反例),预测结果是1(是正例,也就是错误的预判)所以1/1

先进行正常精确率和召回率(重要)预判,再看数据不均衡的二分类的roc曲线

5 模型的保存和加载

5.1保存和加载api

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6 无监督学习-K-means算法原理

6.1 什么是无监督学习

在这里插入图片描述

6.2 无监督学习 包含算法

在这里插入图片描述

6.3 k-means原理

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

k就是想分成几个特征就选几个参数

  1. 选k=3,那么就随机选择三个点,染上不同颜色例如图一的右边
  2. 随便找个点,计算到k中3点中的距离,最近的标记跟最近的同一个颜色,以此类推,变成了图二中的右图
  3. 然后找出来所有同颜色的再求一个中心点-聚类中心,就是颜色最中间的点,就是图三中的右图
  4. 如果计算的出来的中心点和原来中心点一致,那么就结束,否则就以新的3个点位去进行2的操作以此类推
  • 如果相近的话,那么也可以停止聚类操作
  • 如何算到3的中心点的
    在这里插入图片描述

6.4 api

在这里插入图片描述

6.5 案例:k-means对instacat Market用户聚类

instacat这家公司想对自己的用户进行分类

6.5.1分析

在这里插入图片描述

6.5.1 代码

在这里插入图片描述

6.6 Kmeans性能评估指标

6.6.1 轮廓系数

在这里插入图片描述

6.6.2 轮廓系数值分析

在这里插入图片描述
在这里插入图片描述

越接近1的越好

6.6.3 结论

在这里插入图片描述

6.6.4 轮廓系数 API

在这里插入图片描述
在这里插入图片描述

data_new就是训练入参 y_predict是评估后的值

6.6.5 K-means总结

在这里插入图片描述

缺点:局部最优-就是三个点位挤到一起了,解决办法就是多次聚类
在这里插入图片描述

相关文章:

  • STM32 开发 - 中断案例(中断概述、STM32 的中断、NVIC 嵌套向量中断控制器、外部中断配置寄存器组、EXTI 外部中断控制器、实例实操)
  • Python中的函数和方法概要
  • 【AS32系列MCU调试教程】硬件调试:JLink 驱动配置与调试技巧
  • MCU、MPU、GPU、Soc、DSP、FPGA、CPLD……它们到底是什么?
  • C# 结构(构造函数和析构函数)
  • BEV和OCC学习-8:mmdet3d 3D分割demo测试
  • stm32f103 标准库移植rt-thread nano
  • Django(自用)
  • 无人机遥控器低延迟高刷新技术解析
  • 38道Linux命令高频题整理(附答案背诵版)
  • [python] 使用python设计滤波器
  • Python实战应用-Python实现Web请求与响应
  • Verilog基础:标识符的定义位置
  • Vue 中 this.$emit(‘mount‘) 的妙用
  • [C++][设计模式] : 单例模式(饿汉和懒汉)
  • 2.监控领域中行业黑话知识学习指南
  • 使用Ollama+open-webui搭建本地AI模型
  • 写实交互数字人:赋能消防知识科普,点亮智能交互讲解新未来
  • word表格批量转excel,提取表格数据到excel
  • SpringBoot+Junit在IDEA中实现查询数据库的单元测试
  • 有哪些好的ps素材网站/热门关键词查询
  • 企业网站制作一/长沙有实力seo优化
  • 怎么开一个无货源网店/代哥seo
  • 潍坊制作网站/深圳网站建设系统
  • 网站logo位置/国内新闻摘抄
  • 像做网站平台取什么名字好/百度大搜推广开户