IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 人工智能-算法学习 -> 正文阅读

[人工智能]人工智能-算法学习

人工智能-算法学习

1. KNN聚类算法

a. knn定义

KNN 算法是一个基本的分类和回归的算法,它是属于监督学习中分类方法的一种。

b.knn原理

  • KNN 算法思想

    给定一个训练集合 M 和一个测试对象 m ,其中该对象是由一个属性值和未知的类别标签组成的向量。

    计算对象 m 和训练集中每个对象之间的距离(一般是欧式距离)或者相似度(一般是余弦相似度),确定最近邻的列表

    将最近邻列表中数量占据最多的类别判给测试对象 z 。

    一般来说,我们只选择训练样本中前 K 个最相似的数据,这便是 k-近邻算法中 k 的出处。

用一句俗语来总结 KNN 算法的思想:物以类聚,人以群分

  • knn算法图解

    下面通过一组图形来解释下 KNN 算法的思想。我们的目的是:判断蓝色的点属于哪个类别在该算法中K的取值一般是奇数

    ? 首先如果 K=1:会是什么的情况?

根据图形判断:蓝色图形应该是属于三角形

? K=3 的情形

从图中可以看出来:蓝色部分还是属于三角形

? K=5 的情形

此时我们观察到蓝色部分属于正方形

? K=7 的情形
在这里插入图片描述

这个时候蓝色部分又变成了三角形

当 K 取值不同的时候,判别的结果是不同的。所以该算法中K值如何选择将非常重要,因为它会影响到我们最终的结果。

c.knn应用实例(根据数据区分癌症性质)

需要用到csv以及random

通过knn算法对癌症的分类可通过以下几个步骤实现:

  1. 创建数据集合和标签

  2. 利用欧式距离,使用 算法进行分类

    a.计算欧式距离

    b.距离的排序(从大到小)

    c.统计 K 个样本中出现次数多的,归属于该类别

import csv
import random

## 读取数据
with open('Prostate_Cancer.csv', 'r') as file:
    reader=csv.DictReader(file)
    datas=[row for row in reader]
## 分组
random.shuffle(datas)
n=len(datas)//3
test_set=datas[0:n]
train_set=datas[n:]
## KNN
	# 计算距离
def distance(d1, d2):
    res=0
    for key in("radius", "texture", "perimeter", "area","smoothness"
       , "compactness", "symmetry", "fractal_dimension"):
        res+=(float(d1[key])-float(d2[key]))**2
    return res**0.5

K=3		#选定K值
	# KNN算法
def knn(data):
    res=[
        {"result": train['diagnosis_result'], "distance": distance(data, train)}
        for train in train_set
    ]
    res=sorted(res, key=lambda item:item["distance"])
    res2=res[0:K]
    result = {'B': 0, 'M': 0}
    sum = 0
    for r in res2:
        sum += r['distance']
    for r in res2:
        result[r['result']] += 1-r['distance']/sum
    if result['B'] > result['M']:
        return 'B'
    else:
        return 'M'

## 测试阶段
correct = 0
for test in test_set:
    result = test['diagnosis_result']
    result2 = knn(test)

    if(result == result2):
        correct += 1
print("准确率: {:.2f}%".format(100*correct/len(test_set)))

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

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-25 12:12:14  更:2021-08-25 12:13:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 18:40:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码