人工智能项目论文复现


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

论文复现跳转链接如下

点击跳转 🚀 ⭐️

在这里插入图片描述


(一)技术学习任务

Ⅰ、机器学习之聚类

1、基本介绍概念

  • 监督学习是利用标记数据进行训练,可以用于分类、回归等任务。
  • 无监督学习则是利用未标记数据进行训练,可以用于聚类、异常检测等任务(没有对与错,寻找数据的共同特点)。
  • 半监督学习则是介于监督学习和无监督学习之间的一种学习方式,利用一小部分已标记数据和大量未标记数据进行训练。
  • 强化学习则是利用智能体与环境的交互进行学习,可以用于处理与环境交互的问题。
  • 无监督学习 是机器学习的一种重要类型,它专注于从未标记或未分类的数据中发现隐藏的模式和结构。与监督学习不同,无监督学习的数据没有显式的标签或已知的结果变量,其核心目的是探索数据的内在结构和关系。

  • 机器学习的二种方法,没有给定事先标记过的训练示例,自动对输入的数据进行分类或分群,
    优点:

    • ①算法不受监督信息(偏见)的约束,可能考虑到新的信息
    • ②不需要标签数据,极大程度扩大数据样本

主要应用:聚类分析、关联规则、维度缩减、聚类分析

无监督学习主要包括以下几种任务:

  1. 聚类:将数据划分为多个群组或簇,使得同一簇内的数据点彼此相似,而不同簇的数据点相异。常见的聚类算法包括K-均值(K-means)、层次聚类(Hierarchical clustering)等。
  2. 降维:减少数据中的变量数量,提取重要特征,同时保留数据的大部分重要信息。降维有助于提高计算效率、降噪和改进数据可视化。常见的降维算法包括主成分分析(PCA)、t-SNE等。
  3. 关联规则学习:在大型数据集中发现变量之间的有意义的关系。这有助于市场篮子分析、交叉销售等应用。
  4. 异常检测:识别数据集中的异常、奇异或不符合预期的数据点。这在欺诈检测、网络安全等领域有重要应用。
  5. 生成模型:学习数据的分布,以生成新的、与训练数据类似的数据。这有助于数据增强、艺术创作等。

2、聚类分析基本介绍


KMeans聚类

①根据数据与中心点距离划分类别
②基于类别数据更新中心点
③重复过程直到收敛

特点:
1、实现简单,收敛快
2、需要指定类别数量
在这里插入图片描述

均值漂移聚类(Meanshift):

①在中心点一定区域裣索薮据点
②更新中心
③重夏流程到中心点稳定

特点:
1、自动发现类别数量,不需要人工选择
2、需要选择区域半径


DBSCAN算法(基于密度的空间聚类算法)

①基于区域点密度筛选有效数据
②基于有效数据向周边扩张,直到没有新点加入

特点:
1、过滤噪音数据
2、不需要人为选择类别数量
3、数据密度不同时影响结果


3、K均值聚类

  • K-均值算法:以空间K个点为中心进行聚类,对最靠近他们的对象归类,是聚类算法中最为基础但也最为重要的算法。

在这里插入图片描述
算法流程
1、选择聚类的个数k
2、确定聚类中心
3、根据点到聚类中心聚类确定各个点所属类别
4、根据各个类别数据更新聚类中心
5、重复以上步骤直到收敛(中心点不再变化)

优点:
1、原理简单,实现容易,收敛速度快
2、参数少,方便使用
缺点:
1、必须设置簇的数量
2、随机选择初始聚类中心,结果可能缺乏一致性

在这里插入图片描述

4、K近邻分类模型(KNN)

  • 给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例,这K个实例的多数属于某个类,就把该输入实例分类到这个类中。

在这里插入图片描述

5、均值漂移聚类

  • 均值漂移算法:一种基于密度梯度上升的聚类算法(沿着密度上升方向寻找聚类中心点)

在这里插入图片描述
算法流程
1、随机选择未分类点作为中心点
2、找出离中心点距离在带宽之丙的点,记做集合S
3、计算从中心点到集合S中每个元素的偏移向量M
4、中心点以向量M移动
5、重复步骤2-4,直到收敛
6、重复1-5直到所有的点都被归类
7、分类:根据每个类,对每个点的访问频率,取访问频率最大的那个类,作为当前点集的所属类

6、代码实现

  • KMeans算法实现聚类
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# KMeans算法实现聚类
from sklearn.cluster import KMeans
from sklearn.metrics import accuracy_score

data = pd.read_csv('data.csv')

x = data.drop(['labels'], axis=1)
y = data.loc[:, 'labels']

# print(pd.value_counts(y))  # 查看各个类别的个数

# 数据可视化
plt.figure(figsize=(10, 10))
label0 = plt.scatter(x.loc[:, 'V1'][y == 0], x.loc[:, 'V2'][y == 0])
label1 = plt.scatter(x.loc[:, 'V1'][y == 1], x.loc[:, 'V2'][y == 1])
label2 = plt.scatter(x.loc[:, 'V1'][y == 2], x.loc[:, 'V2'][y == 2])
plt.title('title')
plt.xlabel('v1')
plt.ylabel('v2')
plt.legend((label0, label1, label2), ('label0', 'label1', 'label2'))
# plt.show()

km_model = KMeans(n_clusters=3, random_state=0)
km_model.fit(x)
center = km_model.cluster_centers_
# print("中心点", center)
# print(center[:,0],center[:,1])
plt.scatter(center[:, 0], center[:, 1], color='black')
plt.show()

# 计算准确率
y_predict = km_model.predict(x)
print(accuracy_score(y, y_predict))


# 可视化结果索引
plt.figure(figsize=(10, 10))
label0 = plt.scatter(x.loc[:, 'V1'][y_predict == 0], x.loc[:, 'V2'][y_predict == 0])
label1 = plt.scatter(x.loc[:, 'V1'][y_predict == 1], x.loc[:, 'V2'][y_predict == 1])
label2 = plt.scatter(x.loc[:, 'V1'][y_predict == 2], x.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值