Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4230996
  • 博文数量: 473
  • 博客积分: 12019
  • 博客等级: 上将
  • 技术积分: 6515
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-01 16:46
文章分类

全部博文(473)

文章存档

2020年(30)

2019年(4)

2018年(10)

2017年(5)

2016年(2)

2015年(4)

2014年(4)

2013年(16)

2012年(47)

2011年(65)

2010年(46)

2009年(34)

2008年(52)

2007年(52)

2006年(80)

2005年(22)

分类: Python/Ruby

2020-02-11 16:01:21

转自https://blog.csdn.net/fontthrone/article/details/80607794 Font Tian同学

点击(此处)折叠或打开

  1. #coding:utf-8
  2. import sys
  3. import pandas as pd
  4. import numpy as np
  5. from numpy import *
  6. import matplotlib.pyplot as plt



  7. def GRA_ONE(gray, m=0):
  8.     # 读取为df格式
  9.     gray = (gray - gray.min()) / (gray.max() - gray.min())
  10.     # 标准化
  11.     std = gray.iloc[:, m] # 为标准要素
  12.     ce = gray.iloc[:, 0:] # 为比较要素
  13.     n, m = ce.shape[0], ce.shape[1] # 计算行列
  14.     # 与标准要素比较,相减
  15.     a = zeros([m, n])
  16.     for i in range(m):
  17.         for j in range(n):
  18.             a[i, j] = abs(ce.iloc[j, i] - std[j])
  19.     # 取出矩阵中最大值与最小值
  20.     c, d = amax(a), amin(a)
  21.     # 计算值
  22.     result = zeros([m, n])
  23.     for i in range(m):
  24.         for j in range(n):
  25.             ss = a[i, j] + 0.5 * c
  26.             if ss ==0:
  27.                 result[i, j] =1
  28.             else:
  29.                 result[i, j] = (d + 0.5 * c) / (a[i, j] + 0.5 * c)

  30.     # 求均值,得到灰色关联值,并返回
  31.     return pd.DataFrame([mean(result[i, :]) for i in range(m)])


  32. def GRA(DataFrame):
  33.     list_columns = [
  34.         str(s) for s in range(len(DataFrame.columns)) if s not in [None]
  35.     ]
  36.     df_local = pd.DataFrame(columns=list_columns)
  37.     for i in range(len(DataFrame.columns)):
  38.         df_local.iloc[:, i] = GRA_ONE(DataFrame, m=i)[0]
  39.     return df_local

  40. wine = pd.read_csv("h2.csv")
  41. wine.head()
  42. print "----------------------------"
  43. data_wine_gra = GRA(wine)

  44. print data_wine_gra
附件
h.csv

点击(此处)折叠或打开

  1. a,b,c ,d
  2. 1,2,1,1
  3. 2,2,2,1
  4. 3,3,3,2
  5. 4,2,4,2
  6. 5,4,5,3
  7. 6,1,6,3



h2.csv

点击(此处)折叠或打开

  1. a,b
  2. 1,100
  3. 2,200
  4. 3,300
  5. 4,400
  6. 5,500
  7. 6,491
该输出为矩阵 [i,j] 表示第i列和第j列关联度

阅读(150368) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~