-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathIB2.py
27 lines (22 loc) · 1.27 KB
/
IB2.py
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
from DataProcessing import calculateDistances, findKNearestNeighbors
import pandas as pd
def IB2(normCsvFile):
inputData = pd.read_csv(normCsvFile)
trainingSet = pd.DataFrame(inputData)
condensingSet = pd.DataFrame(columns=['sepall', 'sepalw', 'petall', 'petalw', 'class'])
condensingSetIdx = 0
# Pick an item of TS and move it to CS
tempDf = pd.DataFrame([trainingSet.iloc[0]])
condensingSet = pd.concat([condensingSet, tempDf], axis=0, ignore_index=True)
trainingSet.drop([0], inplace=True)
for i in range(1, len(trainingSet)):
tempDf = pd.DataFrame([trainingSet.iloc[i]])
tempCondensingSet = pd.concat([condensingSet, tempDf], axis=0, ignore_index=True)
distances = calculateDistances(tempCondensingSet)
nearestNeighbor = findKNearestNeighbors(distances[condensingSetIdx],
1) # Find the nearest neighbor of item (i) in CS (K=1)
if trainingSet.loc[i, 'class'] != tempCondensingSet.loc[nearestNeighbor[0], 'class']:
condensingSet = tempCondensingSet # CS <- CS U (i)
condensingSetIdx += 1
trainingSet.drop([i], inplace=False) # TS <- TS - (i)
condensingSet.to_csv("reduced_IB2.csv", index=False) # Write the result in a csv file