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

《机器学习》从入门到实战(1)

目录

一、简介

1、什么是机器学习

2、为什么要学习机器学习

3、机器学习可以解决哪些问题

(1). 图像识别与计算机视觉

(2). 自然语言处理 (NLP)

(3). 推荐系统

(4). 预测与分类

(5). 医疗与生物信息

(6). 工业与制造

(7). 游戏与娱乐

(8). 其他领域

4、机器学习的步骤

5、学习机器学习的准备工作

二、KNN(K-Nearest Neighbors,K近邻算法)

1、简介

2、KNN算法的优缺点

3、样本之间的距离

(1)、欧式距离(Euclidean Distance)

(2)、曼哈顿距离(Manhattan Distance)

(3)、机器学习中其他距离公式

4、数据预处理

(1)、数据可视化

(2)、分割特征与标签

5、KNN算法处理分类问题

实战代码

6、KNN算法处理回归任务

实战代码


一、简介

1、什么是机器学习

机器学习是人工智能的一个分支,专注于通过数据训练模型,使计算机能够从经验中学习并改进性能,而无需显式编程。其核心是让机器从数据中识别模式,并利用这些模式进行预测或决策。一句话概括就是:利用数学中的公式 总结出 数据中的规律。机器学习主要分为三类:

  • 监督学习:使用带标签的数据训练模型,用于预测或分类。

  • 无监督学习:使用无标签的数据,发现数据中的结构或模式。

  • 强化学习:通过试错和奖励机制,训练模型在环境中做出最优决策。

2、为什么要学习机器学习

  • 信息爆炸时代,数据量太大,人工已经无法处理
  • 重复性的工作交给计算机来做
  • 潜在一些信息之间的关联人类不容易直接发现
  • 机器学习确实有效的解决很多问题
  • 机器学习应用领域非常广泛
  • ........

3、机器学习可以解决哪些问题

(1). 图像识别与计算机视觉
  • 人脸识别:用于安全验证、社交媒体 tagging。

  • 医学影像分析:辅助诊断疾病,如癌症检测。

  • 自动驾驶:识别道路、行人、交通标志等。

(2). 自然语言处理 (NLP)
  • 机器翻译:如 Google 翻译。

  • 情感分析:分析用户评论、社交媒体情绪。

  • 聊天机器人:提供客户支持或个性化服务。

(3). 推荐系统
  • 电商推荐:如亚马逊、淘宝的商品推荐。

  • 内容推荐:如 Netflix、YouTube 的视频推荐。

(4). 预测与分类
  • 金融风控:预测贷款违约风险。

  • 销售预测:预测产品需求或销售额。

  • 垃圾邮件过滤:自动识别并过滤垃圾邮件。

(5). 医疗与生物信息
  • 疾病预测:基于患者数据预测疾病风险。

  • 药物研发:加速新药发现和临床试验。

(6). 工业与制造
  • 质量控制:检测产品缺陷。

  • 预测性维护:预测设备故障,减少停机时间。

(7). 游戏与娱乐
  • 游戏 AI:开发智能游戏对手。

  • 内容生成:自动生成音乐、艺术或文本。

(8). 其他领域
  • 气候预测:分析气候数据,预测天气变化。

  • 能源优化:优化能源消耗,提高效率。

4、机器学习的步骤

收集处理数据 —> 建立模型 —> 预测结果

5、学习机器学习的准备工作

学习机器学习首先要配置好环境,如:安装好合适的第三方库。以下是进行机器学习需要的一些库:sklearn、numpy、pandas、scipy、matplotlib。

安装方法:

pip install 库名==版本号 -i 镜像地址

注意:安装的库版本一定要合适。后期很多报错可能都是因为第三方库版本的问题引起的。

当完成一系列的准备工作就可以开始机器学习的算法学习啦!!!

二、KNN(K-Nearest Neighbors,K近邻算法)

1、简介

KNN(K-Nearest Neighbors,K近邻算法)是一种简单且常用的监督学习算法,主要用于分类回归任务。它的核心思想是:通过计算待预测样本与训练集中所有样本的距离,找到距离最近的K个样本,然后根据这些邻居的标签来预测待预测样本的标签。

2、KNN算法的优缺点

优点:

  • 简单,易于理解,易于实现,无需训练;
  • 适合对稀有事件进行分类;
  • 对异常值不敏感。

缺点︰

  • 样本容量比较大时,计算时间很长;
  • .不均衡样本效果较差;

3、样本之间的距离

以下是KNN算法常用的两种距离公式

(1)、欧式距离(Euclidean Distance)

(2)、曼哈顿距离(Manhattan Distance)

        

(3)、机器学习中其他距离公式

闵可夫斯基距离 (Minkowski Distance)、余弦相似度 (Cosine Similarity)、切比雪夫距离 (Chebyshev Distance)、汉明距离 (Hamming Distance)、马氏距离 (Mahalanobis Distance)、杰卡德距离 (Jaccard Distance)等等

4、数据预处理

(1)、数据可视化

我们有如下文本数据,一共1000行,其中前三列为特征,最后一列为标签。

可以通过如下代码将每种标签的数据进行分类,在将其进行展示

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.pyplot import xlabel, ylabeldata = np.loadtxt('./data/datingTestSet2.txt')
data_1 = data[data[:,-1] == 1]
data_2 = data[data[:,-1] == 2]
data_3 = data[data[:,-1] == 3]# 数据可视化
fig = plt.figure()
ax = plt.axes(projection='3d')
ax.scatter(data_1[:,0],data_1[:,1],zs=data_1[:,2],c='#00FFFF',marker='^')
ax.scatter(data_2[:,0],data_2[:,1],zs=data_2[:,2],c='#FF0000',marker='o')
ax.scatter(data_3[:,0],data_3[:,1],zs=data_3[:,2],c='#006400',marker='+')
ax.set(xlabel='X', ylabel='Y', zlabel='Z')
plt.show()

(2)、分割特征与标签

将特征储存在变量x中,标签储存在变量y中

# KNN算法
data = np.loadtxt('./data/datingTestSet2.txt')
# 特征
x = data[:,:-1]
# 类别
y = data[:,-1]

5、KNN算法处理分类问题

分类任务的目标是将输入数据划分到预定义的类别(标签)中。

sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,weights='uniform',algorithm='auto',leaf_size=30, p=2, metric='minkowski', metric_params=None, n_jobs=None, **kwargs)
# n_neighbors:用于指定邻近数据的数量
# p:用于指定距离度量方式,默认为欧式距离,其中p=1是曼哈顿距离,p=2是欧式距离
实战代码
import numpy as np
from sklearn.neighbors import KNeighborsClassifier# KNN算法
data = np.loadtxt('./data/datingTestSet2.txt')
# 特征
x = data[:,:-1]
# 类别
y = data[:,-1]neigh = KNeighborsClassifier(n_neighbors=10,metric='euclidean')
'''参数metric = 参数p
p = 1是曼哈顿距离;p = 2是欧式距离;p为其他值是闵可夫斯基距离
neigh = KNeighborsClassifier(n_neighbors=10,p=2)'''# 训练
neigh.fit(x,y)
# 预测(单个数据)
print(neigh.predict([[50000,8.2,1.01]]))
# 预测(同时预测多个数据)
predict_data = [[12222,2,0.5],[23321,0.5,1],[1222,8,0.7],[45788,2.3,1.2]]
print(neigh.predict(predict_data))

6、KNN算法处理回归任务

回归任务的目标是预测一个连续值。

sklearn.neighbors.KNeighborsRegressor(n_neighbors=5, weights='uniform', algorithm='auto', leaf_size=30, p=2, metric='minkowski', metric_params=None, n_jobs=None, **kwargs
)
# n_neighbors:用于指定邻近数据的数量
# p:用于指定距离度量方式,默认为欧式距离,其中p=1是曼哈顿距离,p=2是欧式距离
实战代码
import numpy as np
from sklearn.neighbors import KNeighborsRegressor
data = np.loadtxt('./data/fangjia.txt',encoding='utf-8')
# 特征
x = data[:,:-1]
# 结果
y = data[:,-1]result = KNeighborsRegressor(n_neighbors=5)
result1 = KNeighborsRegressor(n_neighbors=7)
result.fit(x,y)
result1.fit(x,y)
print('k=5的预测结果:',result.predict([[2.82838,0.00,18.120,0,0.5320,5.7620,40.32,4.0983,24,666.0,20.21,392.93,10.42]]))
print('k=7的预测结果:',result1.predict([[2.82838,0.00,18.120,0,0.5320,5.7620,40.32,4.0983,24,666.0,20.21,392.93,10.42]]))

 

后续会更新更多机器学习算法,一起学习吧!! 


http://www.mrgr.cn/news/81595.html

相关文章:

  • Upscayl-官方开源免费图像AI增强软件
  • 二、vue智能Ai对话(高仿通义千问)流式进阶版
  • Scade 表达式 - 使用索引的迭代器
  • 使用repo下载android源码,Ubuntu安装repo
  • 部署启动nacos报错No DataSource set 及master-db not found
  • Thinkphp8 Apidoc 实际使用中遇到的问题解决
  • 《机器学习》——KNN算法
  • QT集成intel RealSense 双目摄像头
  • 新浪微博C++面试题及参考答案
  • 细说EEPROM芯片24C02的基础知识及其驱动程序设计
  • 【达梦数据库】小版本升级之bin文件替换
  • 是德 皮安表Keysight B2980 系列常用指令 附带说明书原件
  • E-commerce .net+React(一)——项目初始化
  • Java数组深入解析:定义、操作、常见问题与高频练习
  • 高性能编程,C++的无锁和有锁编程方法的性能对比
  • 2023 年 12 月青少年软编等考 C 语言四级真题解析
  • 字节跳动Java开发面试题及参考答案(数据结构算法-手撕面试题)
  • Anaconda搭建Python虚拟环境并在Pycharm中配置(小白也能懂)
  • 【物联网技术与应用】实验16:模拟霍尔传感器实验
  • YOLOv9-0.1部分代码阅读笔记-detect.py
  • 高精度问题
  • H5st5.0.0协议分析
  • 穷举vs暴搜vs深搜vs回溯vs剪枝系列一>括号生成
  • 【c语言】简单的c程序设计
  • 生成10级子目录,每个子目录下有100个不同大小的文件
  • 并发编程 - 死锁的产生、排查与解决方案