2021

您所在的位置:网站首页 issubset函数 2021

2021

2023-01-14 15:06| 来源: 网络整理| 查看: 265

基于邻域粗糙集python代码实现

邻域粗糙集代码实现

# _*_coding:utf-8 _*_ #@Author :Lucar.xie #@FileName: Rough_Sets.py import pandas as pd import numpy as np import math import matplotlib.pyplot as plt def basic_set(df): basic = {} for i in df.drop_duplicates().values.tolist(): basic[str(i)] = [] for j, k in enumerate(df.values.tolist()): if k == i: basic[str(i)].append(j) return basic def Euclidean(x_data): n = x_data.shape[1]#代表列数 m = x_data.shape[0]#代表行数 num = [0] * n num2 = np.zeros((m,m)) #转为list arr = np.array(x_data) counti,countj,countk,countz = 0,0,0,0 #遍历每一行的元素 for j in arr: countk = 0 for k in arr: if countj != countk: countz = 0 # 遍历每一行的每一个元素 for z in k: temp = np.square(z - j[countz]) if countz == 0: num[countz] = temp else: #把每一行中每个元素的差值平方相加 num[countz] = num[countz-1] + temp countz = countz + 1 else: num[countz-1] = 0 num2[countj][countk] = round(math.sqrt(num[countz-1]),1) countk = countk + 1 countj = countj + 1 return num2 def key_basic(num,k): # k = 4 # 设δ=k # k = [4.0,4.1,4.2,4.3,4.4,4.5,4.6,4.7,4.8,4.9,5.0] num1 = {} counti, countj = 0, 0 for i in num: num1[counti] = [] countj = 0 for j in i: if j


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3