Spaces:
Build error
Build error
File size: 2,331 Bytes
22738ca |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @File : run_mcda.py
# @Author: nixin
# @Date : 2021/11/26
import pandas as pd
import pandas as pd
import seaborn as sns
from sklearn.preprocessing import minmax_scale
# %matplotlib inline
import matplotlib
import matplotlib.pyplot as plt
from skcriteria import Data, MAX, MIN
from skcriteria.madm import simple, closeness
# import plotly.graph_objects as go
import numpy as np
solutions = pd.read_csv('/Users/nixin/PycharmProjects/PatentSolver_demonstrator/MCDA/data/results (18).csv')
print(len(solutions))
print('==========')
# clean null soltuions
solutions = solutions[solutions['latent_inventive_solutions']!= '[]']
print(len(solutions))
count = pd.read_csv('/Users/nixin/PycharmProjects/PatentSolver_demonstrator/MCDA/data/cleaned_count_patents.csv')
print(solutions.columns)
print(count.columns)
count = count[['patent_number', 'count_inventor_name', 'count_forward_cite_no_family',
'count_forward_cite_yes_family', 'count_backward_cite_no_family',
'count_backward_cite_yes_family']]
count = pd.merge(count,solutions[['patent_number', 'similarity_value']], on='patent_number')
count.to_csv('/Users/nixin/PycharmProjects/PatentSolver_demonstrator/MCDA/data/mcda.csv', index = False)
print('=======')
print(count.columns)
## project the goodness for each column
criteria_data = Data(count.iloc[:, 1:7], [MAX, MAX, MAX, MAX,MAX,MAX],
anames= count['patent_number'],
cnames= count.columns[1:7],
weights= [0.1, 0.3, 0.1, 0.1, 0.1, 0.3]) ##assign weights to attributes
print(criteria_data)
print('++++++++')
print('==========')
dm = closeness.TOPSIS(mnorm="sum") # change the normalization criteria of the alternative matric to sum (divide every value by the sum opf their criteria)
dec = dm.decide(criteria_data)
print(dec)
print("Ideal:", dec.e_.ideal)
print("Anti-Ideal:", dec.e_.anti_ideal)
print("Closeness:", dec.e_.closeness) ##print each rank's value
count['rank_topsis'] = dec.e_.closeness
count = count.sort_values(by='rank_topsis', ascending=False)
print(count.columns)
print(count)
print(len(count))
rank = []
for i in range(len(count)):
i = i+1
rank.append(i)
print(rank)
count['rank'] = rank
print(count)
print(count.columns)
|