Skip to content

Commit 7650fe9

Browse files
authored
Added a few more implementations of algorithms
Data is yet to be added
1 parent eac3a89 commit 7650fe9

8 files changed

+2209
-0
lines changed

BayesianClassifier.ipynb

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "code",
5+
"execution_count": 3,
6+
"metadata": {},
7+
"outputs": [
8+
{
9+
"name": "stdout",
10+
"output_type": "stream",
11+
"text": [
12+
"COLUMN\tVALUE\tOUTPUT\tPROBABILITY\n",
13+
"Temp--->Hot--->Rainy--->0.4\n",
14+
"Temp--->Mild--->Rainy--->0.4\n",
15+
"Temp--->Cool--->Rainy--->0.2\n",
16+
"Humidity--->High--->Rainy--->0.6\n",
17+
"Humidity--->Normal--->Rainy--->0.4\n",
18+
"Windy--->Low--->Rainy--->0.6\n",
19+
"Windy--->High--->Rainy--->0.4\n",
20+
"Cloudy--->Yes--->Rainy--->0.6\n",
21+
"Cloudy--->No--->Rainy--->0.4\n",
22+
"Temp--->Hot--->Overcast--->0.5\n",
23+
"Temp--->Mild--->Overcast--->0.25\n",
24+
"Temp--->Cool--->Overcast--->0.25\n",
25+
"Humidity--->High--->Overcast--->0.5\n",
26+
"Humidity--->Normal--->Overcast--->0.5\n",
27+
"Windy--->Low--->Overcast--->0.5\n",
28+
"Windy--->High--->Overcast--->0.5\n",
29+
"Cloudy--->Yes--->Overcast--->0.5\n",
30+
"Cloudy--->No--->Overcast--->0.5\n",
31+
"Temp--->Hot--->Sunny--->0.0\n",
32+
"Temp--->Mild--->Sunny--->0.6\n",
33+
"Temp--->Cool--->Sunny--->0.4\n",
34+
"Humidity--->High--->Sunny--->0.4\n",
35+
"Humidity--->Normal--->Sunny--->0.6\n",
36+
"Windy--->Low--->Sunny--->0.6\n",
37+
"Windy--->High--->Sunny--->0.4\n",
38+
"Cloudy--->Yes--->Sunny--->0.2\n",
39+
"Cloudy--->No--->Sunny--->0.8\n",
40+
"{'Rainy': 5, 'Overcast': 4, 'Sunny': 5}\n",
41+
"{'Rainy': 0.6162624821683309, 'Overcast': 0.17831669044222537, 'Sunny': 0.20542082738944364}\n"
42+
]
43+
}
44+
],
45+
"source": [
46+
"import pandas as pd\n",
47+
"\n",
48+
"class BayesianClassifier:\n",
49+
"\n",
50+
" def __init__(self, path, col):\n",
51+
" self.cols = {}\n",
52+
" self.op_cols = {}\n",
53+
" self.col = col\n",
54+
" self.data = pd.read_csv(path)\n",
55+
" self.dataM = self.data\n",
56+
" self.op = self.data[col]\n",
57+
" self.data = self.data.drop(col, axis=1)\n",
58+
" self.total = len(self.dataM)\n",
59+
" \n",
60+
" def get_probability_table(self):\n",
61+
" for i in self.op.unique():\n",
62+
" self.cols[i] = {}\n",
63+
" for j in self.data.columns:\n",
64+
" self.cols[i][j] = {}\n",
65+
" for k in self.data[j]:\n",
66+
" if k not in self.cols[i][j]:\n",
67+
" self.cols[i][j][k] = \"\"\n",
68+
" dfs = []\n",
69+
" for i in self.op.unique():\n",
70+
" for j in self.data.columns:\n",
71+
" for k in self.data[j].unique():\n",
72+
" dfs.append(self.dataM[self.dataM[self.col] == i])\n",
73+
"\n",
74+
" \n",
75+
" print(\"COLUMN\\tVALUE\\tOUTPUT\\tPROBABILITY\")\n",
76+
" for x in self.cols:\n",
77+
" for y in self.cols[x]:\n",
78+
" for z in self.cols[x][y]:\n",
79+
" self.op_cols[x] = len(self.dataM[self.dataM[self.col] == x])\n",
80+
" total = len(self.dataM[(self.dataM[self.col] == x) & (self.dataM[y])])\n",
81+
" p = len(self.dataM[(self.dataM[y] == z) & (self.dataM[self.col] == x)]) / total\n",
82+
" self.cols[x][y][z] = p\n",
83+
" print(\"{}--->{}--->{}--->{}\".format(y,z,x,p))\n",
84+
" print(self.op_cols)\n",
85+
" \n",
86+
" def classify(self, values):\n",
87+
" p = {}\n",
88+
" tot = 0\n",
89+
" for i in self.op.unique():\n",
90+
" a = 1\n",
91+
" for key, value in values.items():\n",
92+
" a *= self.cols[i][key][value]\n",
93+
" p[i] = a*self.op_cols[i]/self.total\n",
94+
" tot += a*self.op_cols[i]/self.total\n",
95+
" \n",
96+
" for i in p:\n",
97+
" p[i] = p[i] / tot\n",
98+
" \n",
99+
" return p\n",
100+
" \n",
101+
"b = BayesianClassifier(\"new.csv\", \"Weather\")\n",
102+
"\n",
103+
"b.get_probability_table()\n",
104+
"print(b.classify({\"Temp\": 'Mild', \"Windy\": \"Low\", \"Humidity\": \"High\", \"Cloudy\": \"Yes\"}))"
105+
]
106+
},
107+
{
108+
"cell_type": "code",
109+
"execution_count": null,
110+
"metadata": {},
111+
"outputs": [],
112+
"source": []
113+
}
114+
],
115+
"metadata": {
116+
"kernelspec": {
117+
"display_name": "Python 3",
118+
"language": "python",
119+
"name": "python3"
120+
},
121+
"language_info": {
122+
"codemirror_mode": {
123+
"name": "ipython",
124+
"version": 3
125+
},
126+
"file_extension": ".py",
127+
"mimetype": "text/x-python",
128+
"name": "python",
129+
"nbconvert_exporter": "python",
130+
"pygments_lexer": "ipython3",
131+
"version": "3.7.3"
132+
}
133+
},
134+
"nbformat": 4,
135+
"nbformat_minor": 2
136+
}

0 commit comments

Comments
 (0)