In [2]:
import pandas as pd

In [3]:
def datainput(datacsv,testcsv):
    data_fram = pd.read_csv(datacsv)
    test_fram = pd.read_csv(testcsv)
    print(test_fram)
    return data_fram,test_fram

In [4]:
def distance(data_fram,test_fram):
    for a in range(len(test_fram.index)):
        data_fram[a] = ((data_fram.rWC-test_fram.rWC[a])**2+(data_fram.rCh-test_fram.rCh[a])**2)**0.5
        print(data_fram)
    return data_fram

In [ ]:


In [5]:
def accuracy (test_fram,data_fram,k):
    ac = 0
    acpercentage = 0
    data_fram_sort = pd.DataFrame()
    test_fram['pre'] = '0'
    for a in range(len(test_fram.index)):        
        for ik in reversed(range(1, k+1)):
            data_fram_sort = data_fram.sort_values([a], ascending=True).head(n=ik)
            test_fram.loc[a,'pre'] = pd.value_counts(data_fram_sort['Type']).idxmax()
            if (len(pd.value_counts(data_fram_sort['Type']))) == 1 or (pd.value_counts(data_fram_sort['Type'])[0] > pd.value_counts(data_fram_sort['Type'])[1]):
                break    
        if test_fram.loc[a,'pre'] == test_fram.loc[a,'Type']:
            ac += 1
            acpercentage = ac/len(test_fram.index)
    return test_fram,acpercentage

In [6]:
def knn(datacsv,testcsv,k):
    data,test = datainput('atomsradii.csv','testing.csv')
    data_fram = distance(data,test)
    accuracy_dic = {}
    for ii in range(1,k+1): 
        test_pred,ack = accuracy(test,data_fram,ii)
        key = {ii:ack}
        accuracy_dic.update(key)
    return test,accuracy_dic

In [7]:
knn('atomsradii.csv','testing.csv',14)


    rWC   rCh Atom Type
0  0.51  1.12   X1  Alk
1  0.37  0.77   X2   TM
2  0.62  0.35   X3   PT
3  0.62  0.62   X4   TM
4  0.62  0.93   X5  Alk
     rWC   rCh Atom Type         0
0   0.78  0.50    B   PT  0.676240
1   0.90  0.67   Si   PT  0.595483
2   0.97  0.65   Ga   PT  0.657647
3   1.04  0.76   Al   PT  0.640703
4   1.10  0.79   Ir   PT  0.676018
5   0.32  0.62   Zn   TM  0.534883
6   0.45  0.68   Cd   TM  0.444072
7   0.14  0.66   Be  Alk  0.590339
8   0.25  0.87   Mg  Alk  0.360694
9   0.19  0.99   Li  Alk  0.345398
10  0.28  1.01   Na  Alk  0.254951
11  0.54  1.23   Ca  Alk  0.114018
12  0.59  1.34    K  Alk  0.234094
13  0.69  1.36   Sr  Alk  0.300000
14  0.74  1.45   Rb  Alk  0.402244
     rWC   rCh Atom Type         0         1
0   0.78  0.50    B   PT  0.676240  0.490918
1   0.90  0.67   Si   PT  0.595483  0.539351
2   0.97  0.65   Ga   PT  0.657647  0.611882
3   1.04  0.76   Al   PT  0.640703  0.670075
4   1.10  0.79   Ir   PT  0.676018  0.730274
5   0.32  0.62   Zn   TM  0.534883  0.158114
6   0.45  0.68   Cd   TM  0.444072  0.120416
7   0.14  0.66   Be  Alk  0.590339  0.254951
8   0.25  0.87   Mg  Alk  0.360694  0.156205
9   0.19  0.99   Li  Alk  0.345398  0.284253
10  0.28  1.01   Na  Alk  0.254951  0.256320
11  0.54  1.23   Ca  Alk  0.114018  0.490408
12  0.59  1.34    K  Alk  0.234094  0.610983
13  0.69  1.36   Sr  Alk  0.300000  0.671193
14  0.74  1.45   Rb  Alk  0.402244  0.774145
     rWC   rCh Atom Type         0         1         2
0   0.78  0.50    B   PT  0.676240  0.490918  0.219317
1   0.90  0.67   Si   PT  0.595483  0.539351  0.425206
2   0.97  0.65   Ga   PT  0.657647  0.611882  0.460977
3   1.04  0.76   Al   PT  0.640703  0.670075  0.586941
4   1.10  0.79   Ir   PT  0.676018  0.730274  0.651153
5   0.32  0.62   Zn   TM  0.534883  0.158114  0.403609
6   0.45  0.68   Cd   TM  0.444072  0.120416  0.371214
7   0.14  0.66   Be  Alk  0.590339  0.254951  0.571402
8   0.25  0.87   Mg  Alk  0.360694  0.156205  0.638201
9   0.19  0.99   Li  Alk  0.345398  0.284253  0.771038
10  0.28  1.01   Na  Alk  0.254951  0.256320  0.742428
11  0.54  1.23   Ca  Alk  0.114018  0.490408  0.883629
12  0.59  1.34    K  Alk  0.234094  0.610983  0.990454
13  0.69  1.36   Sr  Alk  0.300000  0.671193  1.012423
14  0.74  1.45   Rb  Alk  0.402244  0.774145  1.106526
     rWC   rCh Atom Type         0         1         2         3
0   0.78  0.50    B   PT  0.676240  0.490918  0.219317  0.200000
1   0.90  0.67   Si   PT  0.595483  0.539351  0.425206  0.284429
2   0.97  0.65   Ga   PT  0.657647  0.611882  0.460977  0.351283
3   1.04  0.76   Al   PT  0.640703  0.670075  0.586941  0.442719
4   1.10  0.79   Ir   PT  0.676018  0.730274  0.651153  0.509215
5   0.32  0.62   Zn   TM  0.534883  0.158114  0.403609  0.300000
6   0.45  0.68   Cd   TM  0.444072  0.120416  0.371214  0.180278
7   0.14  0.66   Be  Alk  0.590339  0.254951  0.571402  0.481664
8   0.25  0.87   Mg  Alk  0.360694  0.156205  0.638201  0.446542
9   0.19  0.99   Li  Alk  0.345398  0.284253  0.771038  0.567274
10  0.28  1.01   Na  Alk  0.254951  0.256320  0.742428  0.517397
11  0.54  1.23   Ca  Alk  0.114018  0.490408  0.883629  0.615224
12  0.59  1.34    K  Alk  0.234094  0.610983  0.990454  0.720625
13  0.69  1.36   Sr  Alk  0.300000  0.671193  1.012423  0.743303
14  0.74  1.45   Rb  Alk  0.402244  0.774145  1.106526  0.838630
     rWC   rCh Atom Type         0         1         2         3         4
0   0.78  0.50    B   PT  0.676240  0.490918  0.219317  0.200000  0.458803
1   0.90  0.67   Si   PT  0.595483  0.539351  0.425206  0.284429  0.382099
2   0.97  0.65   Ga   PT  0.657647  0.611882  0.460977  0.351283  0.448219
3   1.04  0.76   Al   PT  0.640703  0.670075  0.586941  0.442719  0.453100
4   1.10  0.79   Ir   PT  0.676018  0.730274  0.651153  0.509215  0.500000
5   0.32  0.62   Zn   TM  0.534883  0.158114  0.403609  0.300000  0.431393
6   0.45  0.68   Cd   TM  0.444072  0.120416  0.371214  0.180278  0.302324
7   0.14  0.66   Be  Alk  0.590339  0.254951  0.571402  0.481664  0.550727
8   0.25  0.87   Mg  Alk  0.360694  0.156205  0.638201  0.446542  0.374833
9   0.19  0.99   Li  Alk  0.345398  0.284253  0.771038  0.567274  0.434166
10  0.28  1.01   Na  Alk  0.254951  0.256320  0.742428  0.517397  0.349285
11  0.54  1.23   Ca  Alk  0.114018  0.490408  0.883629  0.615224  0.310483
12  0.59  1.34    K  Alk  0.234094  0.610983  0.990454  0.720625  0.411096
13  0.69  1.36   Sr  Alk  0.300000  0.671193  1.012423  0.743303  0.435660
14  0.74  1.45   Rb  Alk  0.402244  0.774145  1.106526  0.838630  0.533667
Out[7]:
(    rWC   rCh Atom Type  pre
 0  0.51  1.12   X1  Alk  Alk
 1  0.37  0.77   X2   TM  Alk
 2  0.62  0.35   X3   PT  Alk
 3  0.62  0.62   X4   TM  Alk
 4  0.62  0.93   X5  Alk  Alk,
 {1: 0.8,
  2: 0.8,
  3: 0.6,
  4: 0.6,
  5: 0.6,
  6: 0.6,
  7: 0.6,
  8: 0.6,
  9: 0.6,
  10: 0.6,
  11: 0.6,
  12: 0.6,
  13: 0.4,
  14: 0.4})

In [ ]:


In [ ]:


In [ ]: