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

目录

一、简介

1、什么是机器学习

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

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

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

[(2). 自然语言处理 (NLP)](#(2). 自然语言处理 (NLP))

[(3). 推荐系统](#(3). 推荐系统)

[(4). 预测与分类](#(4). 预测与分类)

[(5). 医疗与生物信息](#(5). 医疗与生物信息)

[(6). 工业与制造](#(6). 工业与制造)

[(7). 游戏与娱乐](#(7). 游戏与娱乐)

[(8). 其他领域](#(8). 其他领域)

4、机器学习的步骤

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

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

1、简介

2、KNN算法的优缺点

3、样本之间的距离

[(1)、欧式距离(Euclidean Distance)](#(1)、欧式距离(Euclidean Distance))

[(2)、曼哈顿距离(Manhattan 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行,其中前三列为特征,最后一列为标签。

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

python 复制代码
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.pyplot import xlabel, ylabel

data = 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中

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

5、KNN算法处理分类问题

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

python 复制代码
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是欧式距离
实战代码
python 复制代码
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算法处理回归任务

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

python 复制代码
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是欧式距离
实战代码
python 复制代码
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]]))

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

相关推荐
喵叔哟18 分钟前
AI落地:走入生活--引言
人工智能·生活
GIS数据转换器30 分钟前
空间遥感智能处理技术发展现状与趋势
大数据·人工智能·gis·智慧城市
六边形战士DONK39 分钟前
03_NLP常用的文本数据分析处理方法
人工智能·自然语言处理·数据分析
梦丶晓羽43 分钟前
自然语言处理:主题模型
人工智能·python·自然语言处理·lda·主题模型
_zwy1 小时前
通义万相2.1 图生视频:为AI绘梦插上翅膀,开启ALGC算力领域新纪元
人工智能·深度学习·计算机视觉·ai作画
数字供应链安全产品选型1 小时前
新一代开源数字供应链安全审查与治理平台:悬镜源鉴SCA
网络·人工智能·安全·开源·开源软件
虾球xz1 小时前
游戏引擎学习第149天
人工智能·学习·游戏引擎
jinan8861 小时前
图纸的安全怎么管理?
大数据·图像处理·人工智能·安全
没学上了1 小时前
yolov8自定义实例分割
人工智能·深度学习·opencv·yolo·逻辑回归
weixin_525936331 小时前
Python数据分析之机器学习基础
python·机器学习·数据分析