栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

picture fuzzy set 运算规则python实现

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

picture fuzzy set 运算规则python实现

模糊集运算规则合集之二,picture fuzzy set 。
图模糊集合上的运算规则,包括加法,乘法,数乘,幂乘,距离,得分函数精确函数,暂时我就用到这么多,之后有新研究会随时补充。

import pandas as pd
from matplotlib.cbook import flatten
import numpy as np
import scipy as sp
from functools import reduce
'''图片模糊集合的规则代码'''
inf=9999999 #代表n
np.set_printoptions(suppress=True)
def plus(coords1, coords2):  # 和运算
    mu1=1-(1-coords1[0])*(1-coords2[0])
    eta1=coords1[1]*coords2[1]
    nu1=coords1[2]*coords2[2]
    return [mu1,eta1,nu1]
def times(coords1, coords2):  # 机运算
    mu2=coords1[0]*coords2[0]
    eta2=coords1[1]*coords2[1]
    nu2=1 - (1 - coords1[2]) * (1 - coords2[2])
    return [mu2,eta2,nu2]
def ltimes(lamda, coords2):  # 数乘运算 传出来的五个参数分别是对应位置。
    x=[ [] for x in range(3)]
    for i in range(len(lamda )):
        x[0].append(1-(1-coords2[i][0])**lamda[i])
        x[1].append(coords2[i][1]**lamda[i])
        x[2].append(coords2[i][2]**lamda[i])
    sum=pd.concat([pd.Dataframe(x[0]),pd.Dataframe(x[1]),
              pd.Dataframe(x[2])],axis=1)
    return sum
def lpower(lamda, coords2):  # 乘方运算
    x=[ [] for x in range(3)]
    for i in range(len(lamda )):
        x[0].append(coords2[i][0]**lamda[i])
        x[1].append(coords2[i][1]**lamda[i])
        x[2].append(1 - (1 - coords2[i][2]) ** lamda[i])
    sum=pd.concat([pd.Series(x[0]),pd.Series(x[1]),
              pd.Series(x[2])],axis=1)
    return sum

def distance(coords1, coords2,q=2):  # 计算距离的函数,q可以实现汉明,欧几里得,闵可夫斯基,切比雪夫距离
    r1=coords1[0]-coords2[0]
    r2=(1-coords1[1])-(1-coords2[1])
    r3=(1-coords1[2])-(1-coords2[2])
    if q==1:
        dis =(0.5)*((np.abs(r1))+(np.abs(r2))+(np.abs(r3)))
    if q>=2:
        dis =(0.5)*((r1)**q+(r2)**q+(r3)**q)**(1/q)
    return dis
def score(coords2):  # 计算得分函数
    return ((coords2[0]+2-coords2[1]-coords2[2])/3)
def accuary(coords2):  # 计算精确函数
    return ((coords2[0]-coords2[2])/2)


if __name__ == '__main__':
    '''一些简单的求证'''
    e1=[0.6,0.3,0.1]
    e2=[0.4,0.3,0.3]
    e3=[[0.6,0.3,0.1],[0.6,0.2,0.2]]
    e4=[[0.6,0.3,0.1],[0.4,0.3,0.3]]
    l=[2,2]
    print(score(e3[0]),score(e3[1]))
    print(accuary(e3[0]),accuary(e3[1]))
    print(plus(e1,e2))
    print(times(e1,e2))
    print(ltimes(l,e4))
    print(lpower(l,e4))
    print(distance(e1,e2,2))
    print(distance(e1,e2,1))



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/580769.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号