首页 > 编程语言 >k均值聚类算法_异常数据检测

k均值聚类算法_异常数据检测

时间:2023-06-15 23:44:17浏览次数:49  
标签:__ distances plt normal 均值 算法 聚类 np 10

k均值聚类_异常检测

  1. 先来张图,快速理解
    img
  2. 正常数据应该分布在两个簇中
  3. 异常数据,距离两个簇都很远
from sklearn.cluster import KMeans
from scipy.spatial.distance import cdist
import numpy as np
import matplotlib.pyplot as plt

if __name__ == '__main__':
    # 正常数据分为两个簇
    normal_data1 = np.random.normal(0, 1, (20, 2))
    normal_data2 = np.random.normal(10, 1, (20, 2))
    # 异常数据两个点
    anomalies = np.array([[1, 10],[10,0] ])

    data = np.vstack([normal_data1,normal_data2, anomalies])

    # 使用K均值聚类算法将数据分为K个簇(K=2)
    kmeans = KMeans(n_clusters=2,n_init=10)
    kmeans.fit(data)

    # 计算每个数据点到其所属簇中心的距离
    distances = cdist(data, kmeans.cluster_centers_, 'euclidean')
    min_distances = np.min(distances, axis=1)

    # 设置阈值并检测异常值
    threshold = 5 
    outliers = data[min_distances > threshold]

    # 输出结果
    print("Outliers:")
    print(outliers)

    # 绘制数据的散点图
    plt.scatter(normal_data1[:, 0], normal_data1[:, 1])
    plt.scatter(normal_data2[:, 0], normal_data2[:, 1])
    plt.scatter(anomalies[:, 0], anomalies[:, 1])
    plt.show()

标签:__,distances,plt,normal,均值,算法,聚类,np,10
From: https://www.cnblogs.com/zhuoss/p/17484500.html

相关文章

  • 代码随想录算法训练营第八天| 28. 实现 strStr() 459.重复的子字符串
    28.实现strStr()  难点:1,制作KMP算法2,next数组要求的是,找到的下标:0/s[i]==s[j]才可以跳出来代码:1vector<int>getNextList(stringneedle)2{3vector<int>next(needle.size());4intj=0;5next[0]=0;67for(inti=1;i......
  • 学不会的高精度算法
    前言在洛谷水题的时候发现本蒟蒻是连高精度都不会的蒟蒻中的蒟蒻,所以想要浅浅学习一下什么是高精度算法高精度算法(HighAccuracyAlgorithm)是处理大数字的数学计算方法。在一般的科学计算中,会经常算到小数点后几百位或者更多,当然也可能是几千亿几百亿的大数字。一般这类数字我......
  • 算法——树(二)
    1、路径总和给你二叉树的根节点 root和一个表示目标和的整数 targetSum。判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和 targetSum。如果存在,返回true;否则,返回false。1classSolution{2booleanhaspath=false;3p......
  • 【学习笔记】Primal-Dual 原始对偶算法
    Johnson全源最短路算法Floyd可以\(O(n^3)\)处理全源最短路,Bellman-Ford单源最短路的复杂度是\(O(nm)\)的,Dijkstra可以做到\(O(m\logm)\)但不能处理负边权,所以Johnson全源最短路算法通过处理使得可以用\(n\)次Dijkstra解决有负权图的全源最短路。先建超级源点,向......
  • 算法练习-day8
    字符串28.找出字符串中第一个匹配项的下标题意:给你两个字符串haystack和needle,请你在haystack字符串中找出needle字符串的第一个匹配项的下标(下标从0开始)。如果needle不是haystack的一部分,则返回-1。示例:    思路:本题有两种思路:1.暴力求解法,只需要一次遍历,以i为haystack字......
  • 算法——树(一)
    1、中序遍历递归classSolution{List<Integer>ans=newArrayList<>();publicList<Integer>inorderTraversal(TreeNoderoot){inorder(root);returnans;}publicvoidinorder(TreeNoderoot){if(root!=nul......
  • 数据结构(python版)—— 2、前期知识与算法分析
    从C转到python(一)C:helloWorld!#include<stdio.h>​intmain(){//sayhelloprintf("HelloWorld!\n")}1-Compile编译到机器码2-Link与各种库链接3-Execute执行目标程序Python:HelloWorld!defmain():#sayhelloprint("HelloWorld!"......
  • 力扣上任务调度相关的算法
    目录应用应用1:Leetcode1834.单线程CPU题目分析代码实现应用2:Leetcode621.任务调度器题目分析代码实现应用应用1:Leetcode1834.单线程CPU题目1834.单线程CPU给你一个二维数组tasks,用于表示n项从0到n-1编号的任务。其中\(tasks[i]=[enqueueTime_i,proc......
  • 93 从4个女朋友中找到 小于平均值的女朋友的信息
    对象packagecom.fqs.demo002;publicclassGril{//属性privateStringname;privateintage;privatecharsex;privateStringlove;publicGril(){}publicGril(Stringname,intage,charsex,Stringlove){this......
  • 优化算法——人工蜂群算法(ABC)
    一、人工蜂群算法的介绍  人工蜂群算法(ArtificialBeeColony,ABC)是由Karaboga于2005年提出的一种新颖的基于群智能的全局优化算法,其直观背景来源于蜂群的采蜜行为,蜜蜂根据各自的分工进行不同的活动,并实现蜂群信息的共享和交流,从而找到问题的最优解。人工蜂群算法属于群......