├── .github
└── FUNDING.yml
├── .gitignore
├── Exoplanet stars classifier
└── Exoplanet_classifier_DNN.ipynb
├── Pulsar Classification (Notebook version)
├── Pulsar_Classifier.ipynb
├── pulsar_model.pickle
└── pulsar_stars.csv
├── README.md
└── Star Classifier
├── 4 Class Classification of stars
├── 4_Class_Star_Classifier.ipynb
├── README.md
├── Star Dataset.csv
└── model.pickle
├── 5 Class Classification of stars
├── 5 Class Classifier .ipynb
├── 5 class classification document file.docx
├── 5 class.csv
├── README.md
└── model.pickle
└── 6 Class Classification of stars
├── 6 Class Classifier for Star Classification.ipynb
├── 6 class csv.csv
├── Loading_6_class_model.ipynb
├── README.md
├── Star Classifier final version Documentation.docx
├── Star_classifier.model
└── test_model_dataset.csv
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: [deepraj1729]
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | *.egg-info/
24 | .installed.cfg
25 | *.egg
26 | MANIFEST
27 |
28 | # PyInstaller
29 | # Usually these files are written by a python script from a template
30 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
31 | *.manifest
32 | *.spec
33 |
34 | # Installer logs
35 | pip-log.txt
36 | pip-delete-this-directory.txt
37 |
38 | # Unit test / coverage reports
39 | htmlcov/
40 | .tox/
41 | .coverage
42 | .coverage.*
43 | .cache
44 | nosetests.xml
45 | coverage.xml
46 | *.cover
47 | .hypothesis/
48 | .pytest_cache/
49 |
50 | # Translations
51 | *.mo
52 | *.pot
53 |
54 | # Django stuff:
55 | *.log
56 | local_settings.py
57 | db.sqlite3
58 |
59 | # Flask stuff:
60 | instance/
61 | .webassets-cache
62 |
63 | # Scrapy stuff:
64 | .scrapy
65 |
66 | # Sphinx documentation
67 | docs/_build/
68 |
69 | # PyBuilder
70 | target/
71 |
72 | # Jupyter Notebook
73 | .ipynb_checkpoints
74 |
75 | # pyenv
76 | .python-version
77 |
78 | # celery beat schedule file
79 | celerybeat-schedule
80 |
81 | # SageMath parsed files
82 | *.sage.py
83 |
84 | # Environments
85 | .env
86 | .venv
87 | env/
88 | venv/
89 | ENV/
90 | env.bak/
91 | venv.bak/
92 |
93 | # Spyder project settings
94 | .spyderproject
95 | .spyproject
96 |
97 | # Rope project settings
98 | .ropeproject
99 |
100 | # mkdocs documentation
101 | /site
102 |
103 | # mypy
104 | .mypy_cache/
105 |
--------------------------------------------------------------------------------
/Pulsar Classification (Notebook version)/Pulsar_Classifier.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "# Pulsar Classification using Deep Neural Networks"
8 | ]
9 | },
10 | {
11 | "cell_type": "markdown",
12 | "metadata": {},
13 | "source": [
14 | "## -- Neccessary Modules"
15 | ]
16 | },
17 | {
18 | "cell_type": "code",
19 | "execution_count": 1,
20 | "metadata": {},
21 | "outputs": [],
22 | "source": [
23 | "import tensorflow as tf \n",
24 | "from tensorflow import keras\n",
25 | "from sklearn import preprocessing, model_selection\n",
26 | "import numpy as np \n",
27 | "import pandas as pd"
28 | ]
29 | },
30 | {
31 | "cell_type": "markdown",
32 | "metadata": {},
33 | "source": [
34 | "## -- Loading data of stars from CSV"
35 | ]
36 | },
37 | {
38 | "cell_type": "code",
39 | "execution_count": 2,
40 | "metadata": {},
41 | "outputs": [],
42 | "source": [
43 | "df = pd.read_csv('C:\\\\Users\\\\User1\\\\Desktop\\\\Pulsar Classification\\\\Pulsar Classification (Notebook version)\\\\pulsar_stars.csv')"
44 | ]
45 | },
46 | {
47 | "cell_type": "code",
48 | "execution_count": 3,
49 | "metadata": {},
50 | "outputs": [
51 | {
52 | "data": {
53 | "text/html": [
54 | "
\n",
55 | "\n",
68 | "
\n",
69 | " \n",
70 | " \n",
71 | " | \n",
72 | " Mean of the integrated profile | \n",
73 | " Standard deviation of the integrated profile | \n",
74 | " Excess kurtosis of the integrated profile | \n",
75 | " Skewness of the integrated profile | \n",
76 | " Mean of the DM-SNR curve | \n",
77 | " Standard deviation of the DM-SNR curve | \n",
78 | " Excess kurtosis of the DM-SNR curve | \n",
79 | " Skewness of the DM-SNR curve | \n",
80 | " target_class | \n",
81 | "
\n",
82 | " \n",
83 | " \n",
84 | " \n",
85 | " 0 | \n",
86 | " 140.562500 | \n",
87 | " 55.683782 | \n",
88 | " -0.234571 | \n",
89 | " -0.699648 | \n",
90 | " 3.199833 | \n",
91 | " 19.110426 | \n",
92 | " 7.975532 | \n",
93 | " 74.242225 | \n",
94 | " 0 | \n",
95 | "
\n",
96 | " \n",
97 | " 1 | \n",
98 | " 102.507812 | \n",
99 | " 58.882430 | \n",
100 | " 0.465318 | \n",
101 | " -0.515088 | \n",
102 | " 1.677258 | \n",
103 | " 14.860146 | \n",
104 | " 10.576487 | \n",
105 | " 127.393580 | \n",
106 | " 0 | \n",
107 | "
\n",
108 | " \n",
109 | " 2 | \n",
110 | " 103.015625 | \n",
111 | " 39.341649 | \n",
112 | " 0.323328 | \n",
113 | " 1.051164 | \n",
114 | " 3.121237 | \n",
115 | " 21.744669 | \n",
116 | " 7.735822 | \n",
117 | " 63.171909 | \n",
118 | " 0 | \n",
119 | "
\n",
120 | " \n",
121 | " 3 | \n",
122 | " 136.750000 | \n",
123 | " 57.178449 | \n",
124 | " -0.068415 | \n",
125 | " -0.636238 | \n",
126 | " 3.642977 | \n",
127 | " 20.959280 | \n",
128 | " 6.896499 | \n",
129 | " 53.593661 | \n",
130 | " 0 | \n",
131 | "
\n",
132 | " \n",
133 | " 4 | \n",
134 | " 88.726562 | \n",
135 | " 40.672225 | \n",
136 | " 0.600866 | \n",
137 | " 1.123492 | \n",
138 | " 1.178930 | \n",
139 | " 11.468720 | \n",
140 | " 14.269573 | \n",
141 | " 252.567306 | \n",
142 | " 0 | \n",
143 | "
\n",
144 | " \n",
145 | "
\n",
146 | "
"
147 | ],
148 | "text/plain": [
149 | " Mean of the integrated profile \\\n",
150 | "0 140.562500 \n",
151 | "1 102.507812 \n",
152 | "2 103.015625 \n",
153 | "3 136.750000 \n",
154 | "4 88.726562 \n",
155 | "\n",
156 | " Standard deviation of the integrated profile \\\n",
157 | "0 55.683782 \n",
158 | "1 58.882430 \n",
159 | "2 39.341649 \n",
160 | "3 57.178449 \n",
161 | "4 40.672225 \n",
162 | "\n",
163 | " Excess kurtosis of the integrated profile \\\n",
164 | "0 -0.234571 \n",
165 | "1 0.465318 \n",
166 | "2 0.323328 \n",
167 | "3 -0.068415 \n",
168 | "4 0.600866 \n",
169 | "\n",
170 | " Skewness of the integrated profile Mean of the DM-SNR curve \\\n",
171 | "0 -0.699648 3.199833 \n",
172 | "1 -0.515088 1.677258 \n",
173 | "2 1.051164 3.121237 \n",
174 | "3 -0.636238 3.642977 \n",
175 | "4 1.123492 1.178930 \n",
176 | "\n",
177 | " Standard deviation of the DM-SNR curve \\\n",
178 | "0 19.110426 \n",
179 | "1 14.860146 \n",
180 | "2 21.744669 \n",
181 | "3 20.959280 \n",
182 | "4 11.468720 \n",
183 | "\n",
184 | " Excess kurtosis of the DM-SNR curve Skewness of the DM-SNR curve \\\n",
185 | "0 7.975532 74.242225 \n",
186 | "1 10.576487 127.393580 \n",
187 | "2 7.735822 63.171909 \n",
188 | "3 6.896499 53.593661 \n",
189 | "4 14.269573 252.567306 \n",
190 | "\n",
191 | " target_class \n",
192 | "0 0 \n",
193 | "1 0 \n",
194 | "2 0 \n",
195 | "3 0 \n",
196 | "4 0 "
197 | ]
198 | },
199 | "execution_count": 3,
200 | "metadata": {},
201 | "output_type": "execute_result"
202 | }
203 | ],
204 | "source": [
205 | "df.head()"
206 | ]
207 | },
208 | {
209 | "cell_type": "markdown",
210 | "metadata": {},
211 | "source": [
212 | "## -- Converting Data into Numpy Arrays ( For Sake of Convenience)"
213 | ]
214 | },
215 | {
216 | "cell_type": "code",
217 | "execution_count": 4,
218 | "metadata": {},
219 | "outputs": [],
220 | "source": [
221 | "x = np.array(df.drop(['target_class'],1),dtype = 'float') # Dropping Target Class\n",
222 | "y = np.array(df['target_class']) \n",
223 | "y.shape = (len(x),1) # makes it a column vector"
224 | ]
225 | },
226 | {
227 | "cell_type": "markdown",
228 | "metadata": {},
229 | "source": [
230 | "## Splitting the data into test set and train set "
231 | ]
232 | },
233 | {
234 | "cell_type": "code",
235 | "execution_count": 5,
236 | "metadata": {},
237 | "outputs": [],
238 | "source": [
239 | "x_train ,x_test , y_train, y_test = model_selection.train_test_split(x,y, test_size = 0.3)"
240 | ]
241 | },
242 | {
243 | "cell_type": "markdown",
244 | "metadata": {},
245 | "source": [
246 | "## -- Scaling Data for Better Modelling (Only x values)"
247 | ]
248 | },
249 | {
250 | "cell_type": "code",
251 | "execution_count": 6,
252 | "metadata": {},
253 | "outputs": [],
254 | "source": [
255 | "x_f_train = preprocessing.scale(x_train)\n",
256 | "x_f_test = preprocessing.scale(x_test)\n",
257 | "y_f_train = y_train\n",
258 | "y_f_test = y_test"
259 | ]
260 | },
261 | {
262 | "cell_type": "markdown",
263 | "metadata": {},
264 | "source": [
265 | "## -- Using DNN Model for Training Data "
266 | ]
267 | },
268 | {
269 | "cell_type": "code",
270 | "execution_count": 7,
271 | "metadata": {
272 | "scrolled": false
273 | },
274 | "outputs": [
275 | {
276 | "name": "stdout",
277 | "output_type": "stream",
278 | "text": [
279 | "WARNING:tensorflow:From C:\\Users\\User1\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\ops\\init_ops.py:1251: calling VarianceScaling.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
280 | "Instructions for updating:\n",
281 | "Call initializer instance with the dtype argument instead of passing it to the constructor\n"
282 | ]
283 | }
284 | ],
285 | "source": [
286 | "model = tf.keras.models.Sequential()\n",
287 | "model.add(tf.keras.layers.Flatten())\n",
288 | "model.add(tf.keras.layers.Dense(200,activation = tf.nn.relu))\n",
289 | "model.add(tf.keras.layers.Dense(300,activation = tf.nn.relu))\n",
290 | "model.add(tf.keras.layers.Dense(2,activation = tf.nn.softmax))\n",
291 | "\n",
292 | "\n",
293 | "model.compile(optimizer = tf.train.AdamOptimizer(),\n",
294 | " loss = 'sparse_categorical_crossentropy',\n",
295 | " metrics=['accuracy'])"
296 | ]
297 | },
298 | {
299 | "cell_type": "markdown",
300 | "metadata": {},
301 | "source": [
302 | "## Training Data using the model"
303 | ]
304 | },
305 | {
306 | "cell_type": "code",
307 | "execution_count": 8,
308 | "metadata": {},
309 | "outputs": [
310 | {
311 | "name": "stdout",
312 | "output_type": "stream",
313 | "text": [
314 | "Epoch 1/30\n",
315 | "12528/12528 [==============================] - 1s 61us/sample - loss: 0.0896 - acc: 0.9740\n",
316 | "Epoch 2/30\n",
317 | "12528/12528 [==============================] - 1s 52us/sample - loss: 0.0706 - acc: 0.97880s - loss: 0.0723 - \n",
318 | "Epoch 3/30\n",
319 | "12528/12528 [==============================] - 1s 50us/sample - loss: 0.0690 - acc: 0.9800\n",
320 | "Epoch 4/30\n",
321 | "12528/12528 [==============================] - 1s 49us/sample - loss: 0.0682 - acc: 0.9799\n",
322 | "Epoch 5/30\n",
323 | "12528/12528 [==============================] - 1s 51us/sample - loss: 0.0669 - acc: 0.9802\n",
324 | "Epoch 6/30\n",
325 | "12528/12528 [==============================] - 1s 50us/sample - loss: 0.0662 - acc: 0.9805\n",
326 | "Epoch 7/30\n",
327 | "12528/12528 [==============================] - 1s 52us/sample - loss: 0.0666 - acc: 0.9805\n",
328 | "Epoch 8/30\n",
329 | "12528/12528 [==============================] - 1s 50us/sample - loss: 0.0666 - acc: 0.9800\n",
330 | "Epoch 9/30\n",
331 | "12528/12528 [==============================] - 1s 57us/sample - loss: 0.0655 - acc: 0.9812\n",
332 | "Epoch 10/30\n",
333 | "12528/12528 [==============================] - 1s 60us/sample - loss: 0.0649 - acc: 0.9805\n",
334 | "Epoch 11/30\n",
335 | "12528/12528 [==============================] - 1s 51us/sample - loss: 0.0647 - acc: 0.9806\n",
336 | "Epoch 12/30\n",
337 | "12528/12528 [==============================] - 1s 52us/sample - loss: 0.0653 - acc: 0.98050s - loss: 0.0670 - acc:\n",
338 | "Epoch 13/30\n",
339 | "12528/12528 [==============================] - 1s 52us/sample - loss: 0.0640 - acc: 0.98080s - loss: 0.0782 - a\n",
340 | "Epoch 14/30\n",
341 | "12528/12528 [==============================] - 1s 51us/sample - loss: 0.0636 - acc: 0.9814\n",
342 | "Epoch 15/30\n",
343 | "12528/12528 [==============================] - 1s 59us/sample - loss: 0.0637 - acc: 0.98040s - loss: 0.0676 - acc\n",
344 | "Epoch 16/30\n",
345 | "12528/12528 [==============================] - 1s 108us/sample - loss: 0.0632 - acc: 0.9810\n",
346 | "Epoch 17/30\n",
347 | "12528/12528 [==============================] - 1s 97us/sample - loss: 0.0629 - acc: 0.9813\n",
348 | "Epoch 18/30\n",
349 | "12528/12528 [==============================] - 1s 91us/sample - loss: 0.0629 - acc: 0.9814\n",
350 | "Epoch 19/30\n",
351 | "12528/12528 [==============================] - 1s 62us/sample - loss: 0.0626 - acc: 0.9809\n",
352 | "Epoch 20/30\n",
353 | "12528/12528 [==============================] - 1s 54us/sample - loss: 0.0624 - acc: 0.9813\n",
354 | "Epoch 21/30\n",
355 | "12528/12528 [==============================] - 1s 51us/sample - loss: 0.0619 - acc: 0.98220s - loss: 0.0631 - acc: 0.9\n",
356 | "Epoch 22/30\n",
357 | "12528/12528 [==============================] - 1s 69us/sample - loss: 0.0620 - acc: 0.9812\n",
358 | "Epoch 23/30\n",
359 | "12528/12528 [==============================] - 1s 103us/sample - loss: 0.0620 - acc: 0.9817\n",
360 | "Epoch 24/30\n",
361 | "12528/12528 [==============================] - 1s 102us/sample - loss: 0.0612 - acc: 0.9816\n",
362 | "Epoch 25/30\n",
363 | "12528/12528 [==============================] - 1s 81us/sample - loss: 0.0611 - acc: 0.9816\n",
364 | "Epoch 26/30\n",
365 | "12528/12528 [==============================] - 1s 50us/sample - loss: 0.0612 - acc: 0.9818\n",
366 | "Epoch 27/30\n",
367 | "12528/12528 [==============================] - 1s 53us/sample - loss: 0.0604 - acc: 0.9821\n",
368 | "Epoch 28/30\n",
369 | "12528/12528 [==============================] - 1s 54us/sample - loss: 0.0604 - acc: 0.9820\n",
370 | "Epoch 29/30\n",
371 | "12528/12528 [==============================] - 1s 82us/sample - loss: 0.0599 - acc: 0.98180s - loss: 0.0\n",
372 | "Epoch 30/30\n",
373 | "12528/12528 [==============================] - 1s 102us/sample - loss: 0.0596 - acc: 0.9819\n"
374 | ]
375 | },
376 | {
377 | "data": {
378 | "text/plain": [
379 | ""
380 | ]
381 | },
382 | "execution_count": 8,
383 | "metadata": {},
384 | "output_type": "execute_result"
385 | }
386 | ],
387 | "source": [
388 | "model.fit(x_f_train,y_f_train, epochs = 30)"
389 | ]
390 | },
391 | {
392 | "cell_type": "markdown",
393 | "metadata": {},
394 | "source": [
395 | "## -- Checking Trained Data For Overfitting and Underfitting over tested data"
396 | ]
397 | },
398 | {
399 | "cell_type": "code",
400 | "execution_count": 9,
401 | "metadata": {},
402 | "outputs": [
403 | {
404 | "name": "stdout",
405 | "output_type": "stream",
406 | "text": [
407 | "5370/5370 [==============================] - 0s 34us/sample - loss: 0.0672 - acc: 0.9804\n",
408 | "Loss % = 6.720539210104076 , Accuracy % = 98.04469347000122 \n"
409 | ]
410 | }
411 | ],
412 | "source": [
413 | "val_loss,val_acc = model.evaluate(x_f_test,y_f_test)\n",
414 | "print(\"Loss % = {} , Accuracy % = {} \".format(val_loss*100,val_acc*100))"
415 | ]
416 | },
417 | {
418 | "cell_type": "markdown",
419 | "metadata": {},
420 | "source": [
421 | "## -- Predicting Star Type of Test Data from Trained Data (Pulsar or Non-Pulsar)"
422 | ]
423 | },
424 | {
425 | "cell_type": "code",
426 | "execution_count": 10,
427 | "metadata": {},
428 | "outputs": [],
429 | "source": [
430 | "# [1,0] = Normal Star\n",
431 | "# [0,1] = Pulsar\n",
432 | "\n",
433 | "arr = np.array([[1,0],[0,1]])"
434 | ]
435 | },
436 | {
437 | "cell_type": "code",
438 | "execution_count": 11,
439 | "metadata": {},
440 | "outputs": [
441 | {
442 | "name": "stdout",
443 | "output_type": "stream",
444 | "text": [
445 | "_____________________________________________________\n",
446 | "_____________________________________________________\n",
447 | "Predicted No of Normal stars = 4919\n",
448 | "Predicted NO. of Pulsars = 451\n",
449 | "Not A Star: 0\n",
450 | "Total tested stars = 5370\n",
451 | "_____________________________________________________\n",
452 | "Original No of Normal stars = 4872\n",
453 | "Original No. of Pulsars = 498\n",
454 | "Total tested stars = 5370\n",
455 | "_____________________________________________________\n",
456 | "Accuracy = 98.04469347000122 %\n"
457 | ]
458 | }
459 | ],
460 | "source": [
461 | "z = np.round(model.predict(x_f_test))\n",
462 | "\n",
463 | "print('_____________________________________________________')\n",
464 | "\n",
465 | "count1=count2=count3=count4=c5=0\n",
466 | "\n",
467 | "for i in range(0,len(z)):\n",
468 | " if np.array_equal(z[i],arr[0]):\n",
469 | " #print(\"{} : Normal star\".format(z[i]))\n",
470 | " count1+=1\n",
471 | " elif np.array_equal(z[i],arr[1]):\n",
472 | " #print(\"{} : Pulsar\".format(z[i]))\n",
473 | " count2+=1 \n",
474 | " else:\n",
475 | " print(\"NOT A STAR\")\n",
476 | " c5+=1\n",
477 | "\n",
478 | "print('_____________________________________________________')\n",
479 | "print(\"Predicted No of Normal stars = {}\".format(count1))\n",
480 | "print(\"Predicted NO. of Pulsars = {}\".format(count2))\n",
481 | "print(\"Not A Star: {}\".format(c5))\n",
482 | "print(\"Total tested stars = {}\".format(len(z)))\n",
483 | "\n",
484 | "\n",
485 | "m = y_f_test\n",
486 | "\n",
487 | "\n",
488 | "print('_____________________________________________________')\n",
489 | "\n",
490 | "for i in range(0,len(m)):\n",
491 | " if m[i] == 0:\n",
492 | " count3+=1\n",
493 | " elif m[i] == 1 :\n",
494 | " count4+=1 \n",
495 | " else:\n",
496 | " print(\"NOT A STAR\") \n",
497 | "\n",
498 | "\n",
499 | "\n",
500 | "print(\"Original No of Normal stars = {}\".format(count3))\n",
501 | "print(\"Original No. of Pulsars = {}\".format(count4))\n",
502 | "print(\"Total tested stars = {}\".format(len(x_f_test)))\n",
503 | "\n",
504 | "print('_____________________________________________________')\n",
505 | "print(\"Accuracy = {} %\".format((val_acc)*100))"
506 | ]
507 | },
508 | {
509 | "cell_type": "markdown",
510 | "metadata": {},
511 | "source": [
512 | "## Saving trained data using pickle"
513 | ]
514 | },
515 | {
516 | "cell_type": "code",
517 | "execution_count": 12,
518 | "metadata": {},
519 | "outputs": [],
520 | "source": [
521 | "import pickle\n",
522 | "\n",
523 | "c = np.hstack((x_train,y_train)) # Merging the label column (y_test) with the X_test i.e the total training set\n",
524 | "\n",
525 | "with open(\"pulsar_model.pickle\",\"wb\") as f:\n",
526 | " pickle.dump( c , f)"
527 | ]
528 | }
529 | ],
530 | "metadata": {
531 | "kernelspec": {
532 | "display_name": "Python 3",
533 | "language": "python",
534 | "name": "python3"
535 | },
536 | "language_info": {
537 | "codemirror_mode": {
538 | "name": "ipython",
539 | "version": 3
540 | },
541 | "file_extension": ".py",
542 | "mimetype": "text/x-python",
543 | "name": "python",
544 | "nbconvert_exporter": "python",
545 | "pygments_lexer": "ipython3",
546 | "version": "3.7.3"
547 | }
548 | },
549 | "nbformat": 4,
550 | "nbformat_minor": 2
551 | }
552 |
--------------------------------------------------------------------------------
/Pulsar Classification (Notebook version)/pulsar_model.pickle:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepraj1729/AstroML/904680d75f8fa7c50f0d661e9b9a8cc2e44b676a/Pulsar Classification (Notebook version)/pulsar_model.pickle
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Astro-ML
2 | This a repository consisting my works in astronomy using Deep Learning
3 |
--------------------------------------------------------------------------------
/Star Classifier/4 Class Classification of stars/4_Class_Star_Classifier.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "# Star Classifier using ML with Deep Neural Network"
8 | ]
9 | },
10 | {
11 | "cell_type": "markdown",
12 | "metadata": {},
13 | "source": [
14 | "## -- Neccessary modules "
15 | ]
16 | },
17 | {
18 | "cell_type": "code",
19 | "execution_count": 1,
20 | "metadata": {},
21 | "outputs": [],
22 | "source": [
23 | "import tensorflow as tf \n",
24 | "from tensorflow import keras\n",
25 | "from sklearn import preprocessing, model_selection\n",
26 | "import numpy as np \n",
27 | "import pandas as pd "
28 | ]
29 | },
30 | {
31 | "cell_type": "markdown",
32 | "metadata": {},
33 | "source": [
34 | "## -- Load data of stars from CSV"
35 | ]
36 | },
37 | {
38 | "cell_type": "code",
39 | "execution_count": 2,
40 | "metadata": {},
41 | "outputs": [],
42 | "source": [
43 | "df = pd.read_csv('C:\\\\Users\\\\User1\\\\Desktop\\\\Star Classifier\\\\4 Class Classification of stars\\\\Star Dataset.csv')"
44 | ]
45 | },
46 | {
47 | "cell_type": "code",
48 | "execution_count": 3,
49 | "metadata": {},
50 | "outputs": [
51 | {
52 | "data": {
53 | "text/html": [
54 | "\n",
55 | "\n",
68 | "
\n",
69 | " \n",
70 | " \n",
71 | " | \n",
72 | " Temperature (K) | \n",
73 | " Luminosity(L/Lo) | \n",
74 | " Radius(R/Ro) | \n",
75 | " Absolute magnitude(Mv) | \n",
76 | " Star type | \n",
77 | " Star color | \n",
78 | " Spectral Class | \n",
79 | "
\n",
80 | " \n",
81 | " \n",
82 | " \n",
83 | " 0 | \n",
84 | " 3600 | \n",
85 | " 0.0029 | \n",
86 | " 0.5100 | \n",
87 | " 8.69 | \n",
88 | " 0 | \n",
89 | " Red | \n",
90 | " M | \n",
91 | "
\n",
92 | " \n",
93 | " 1 | \n",
94 | " 3129 | \n",
95 | " 0.0122 | \n",
96 | " 0.3761 | \n",
97 | " 11.79 | \n",
98 | " 0 | \n",
99 | " Red | \n",
100 | " M | \n",
101 | "
\n",
102 | " \n",
103 | " 2 | \n",
104 | " 3068 | \n",
105 | " 0.0024 | \n",
106 | " 0.1700 | \n",
107 | " 16.12 | \n",
108 | " 0 | \n",
109 | " Red | \n",
110 | " M | \n",
111 | "
\n",
112 | " \n",
113 | " 3 | \n",
114 | " 3042 | \n",
115 | " 0.0005 | \n",
116 | " 0.1542 | \n",
117 | " 15.60 | \n",
118 | " 0 | \n",
119 | " Red | \n",
120 | " M | \n",
121 | "
\n",
122 | " \n",
123 | " 4 | \n",
124 | " 3134 | \n",
125 | " 0.0004 | \n",
126 | " 0.1960 | \n",
127 | " 13.21 | \n",
128 | " 0 | \n",
129 | " Red | \n",
130 | " M | \n",
131 | "
\n",
132 | " \n",
133 | "
\n",
134 | "
"
135 | ],
136 | "text/plain": [
137 | " Temperature (K) Luminosity(L/Lo) Radius(R/Ro) Absolute magnitude(Mv) \\\n",
138 | "0 3600 0.0029 0.5100 8.69 \n",
139 | "1 3129 0.0122 0.3761 11.79 \n",
140 | "2 3068 0.0024 0.1700 16.12 \n",
141 | "3 3042 0.0005 0.1542 15.60 \n",
142 | "4 3134 0.0004 0.1960 13.21 \n",
143 | "\n",
144 | " Star type Star color Spectral Class \n",
145 | "0 0 Red M \n",
146 | "1 0 Red M \n",
147 | "2 0 Red M \n",
148 | "3 0 Red M \n",
149 | "4 0 Red M "
150 | ]
151 | },
152 | "execution_count": 3,
153 | "metadata": {},
154 | "output_type": "execute_result"
155 | }
156 | ],
157 | "source": [
158 | "df.head()"
159 | ]
160 | },
161 | {
162 | "cell_type": "markdown",
163 | "metadata": {},
164 | "source": [
165 | "## -- Converting Data into Numpy Arrays ( For Sake of Convenience)"
166 | ]
167 | },
168 | {
169 | "cell_type": "code",
170 | "execution_count": 4,
171 | "metadata": {},
172 | "outputs": [],
173 | "source": [
174 | "x = np.array(df.drop(['Star type', 'Star color','Spectral Class'],1)) # Excludes Star type, Star color and Spectral Class\n",
175 | "y = np.array(df['Star type'], dtype ='float') # Only Star type column\n",
176 | "y.shape = (len(y),1) # Shaping the star type column into a column vector"
177 | ]
178 | },
179 | {
180 | "cell_type": "markdown",
181 | "metadata": {},
182 | "source": [
183 | "## -- Splitting Data into Training And Testing Datasets"
184 | ]
185 | },
186 | {
187 | "cell_type": "code",
188 | "execution_count": 5,
189 | "metadata": {},
190 | "outputs": [],
191 | "source": [
192 | "x_train ,x_test , y_train, y_test = model_selection.train_test_split(x,y, test_size = 0.4) "
193 | ]
194 | },
195 | {
196 | "cell_type": "markdown",
197 | "metadata": {},
198 | "source": [
199 | "## -- Scaling Data for Better Modelling (Only x values)"
200 | ]
201 | },
202 | {
203 | "cell_type": "code",
204 | "execution_count": 6,
205 | "metadata": {},
206 | "outputs": [],
207 | "source": [
208 | "x_f_train = preprocessing.scale(x_train)\n",
209 | "x_f_test = preprocessing.scale(x_test)\n",
210 | "y_f_train = y_train\n",
211 | "y_f_test = y_test"
212 | ]
213 | },
214 | {
215 | "cell_type": "markdown",
216 | "metadata": {},
217 | "source": [
218 | "## -- Using DNN Model for Training Data "
219 | ]
220 | },
221 | {
222 | "cell_type": "code",
223 | "execution_count": 7,
224 | "metadata": {},
225 | "outputs": [
226 | {
227 | "name": "stdout",
228 | "output_type": "stream",
229 | "text": [
230 | "WARNING:tensorflow:From C:\\Users\\User1\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\ops\\init_ops.py:1251: calling VarianceScaling.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
231 | "Instructions for updating:\n",
232 | "Call initializer instance with the dtype argument instead of passing it to the constructor\n"
233 | ]
234 | }
235 | ],
236 | "source": [
237 | "model = tf.keras.models.Sequential()\n",
238 | "model.add(tf.keras.layers.Flatten())\n",
239 | "model.add(tf.keras.layers.Dense(200,activation = tf.nn.relu))\n",
240 | "model.add(tf.keras.layers.Dense(300,activation = tf.nn.relu))\n",
241 | "model.add(tf.keras.layers.Dense(4,activation = tf.nn.softmax))\n",
242 | "\n",
243 | "\n",
244 | "model.compile(optimizer = tf.train.AdamOptimizer(),\n",
245 | " loss = 'sparse_categorical_crossentropy',\n",
246 | " metrics=['accuracy'])"
247 | ]
248 | },
249 | {
250 | "cell_type": "markdown",
251 | "metadata": {},
252 | "source": [
253 | "## -- Fitting Data into Model "
254 | ]
255 | },
256 | {
257 | "cell_type": "code",
258 | "execution_count": 8,
259 | "metadata": {
260 | "scrolled": false
261 | },
262 | "outputs": [
263 | {
264 | "name": "stdout",
265 | "output_type": "stream",
266 | "text": [
267 | "Epoch 1/50\n",
268 | "96/96 [==============================] - 1s 10ms/sample - loss: 1.3646 - acc: 0.4375\n",
269 | "Epoch 2/50\n",
270 | "96/96 [==============================] - 0s 233us/sample - loss: 1.0988 - acc: 0.9792\n",
271 | "Epoch 3/50\n",
272 | "96/96 [==============================] - 0s 134us/sample - loss: 0.8911 - acc: 0.9479\n",
273 | "Epoch 4/50\n",
274 | "96/96 [==============================] - 0s 119us/sample - loss: 0.7165 - acc: 0.9375\n",
275 | "Epoch 5/50\n",
276 | "96/96 [==============================] - 0s 172us/sample - loss: 0.5746 - acc: 0.9375\n",
277 | "Epoch 6/50\n",
278 | "96/96 [==============================] - 0s 152us/sample - loss: 0.4590 - acc: 0.9375\n",
279 | "Epoch 7/50\n",
280 | "96/96 [==============================] - 0s 80us/sample - loss: 0.3671 - acc: 0.9375\n",
281 | "Epoch 8/50\n",
282 | "96/96 [==============================] - 0s 408us/sample - loss: 0.3001 - acc: 0.9375\n",
283 | "Epoch 9/50\n",
284 | "96/96 [==============================] - 0s 237us/sample - loss: 0.2440 - acc: 0.9375\n",
285 | "Epoch 10/50\n",
286 | "96/96 [==============================] - 0s 160us/sample - loss: 0.2052 - acc: 0.9479\n",
287 | "Epoch 11/50\n",
288 | "96/96 [==============================] - 0s 138us/sample - loss: 0.1782 - acc: 0.9479\n",
289 | "Epoch 12/50\n",
290 | "96/96 [==============================] - 0s 233us/sample - loss: 0.1576 - acc: 0.9479\n",
291 | "Epoch 13/50\n",
292 | "96/96 [==============================] - 0s 151us/sample - loss: 0.1369 - acc: 0.9583\n",
293 | "Epoch 14/50\n",
294 | "96/96 [==============================] - 0s 97us/sample - loss: 0.1249 - acc: 0.9479\n",
295 | "Epoch 15/50\n",
296 | "96/96 [==============================] - 0s 216us/sample - loss: 0.1133 - acc: 0.9479\n",
297 | "Epoch 16/50\n",
298 | "96/96 [==============================] - 0s 324us/sample - loss: 0.1025 - acc: 0.9688\n",
299 | "Epoch 17/50\n",
300 | "96/96 [==============================] - 0s 492us/sample - loss: 0.0939 - acc: 0.9896\n",
301 | "Epoch 18/50\n",
302 | "96/96 [==============================] - 0s 149us/sample - loss: 0.0901 - acc: 1.0000\n",
303 | "Epoch 19/50\n",
304 | "96/96 [==============================] - 0s 184us/sample - loss: 0.0840 - acc: 0.9896\n",
305 | "Epoch 20/50\n",
306 | "96/96 [==============================] - 0s 166us/sample - loss: 0.0760 - acc: 0.9792\n",
307 | "Epoch 21/50\n",
308 | "96/96 [==============================] - 0s 265us/sample - loss: 0.0696 - acc: 0.9792\n",
309 | "Epoch 22/50\n",
310 | "96/96 [==============================] - 0s 303us/sample - loss: 0.0632 - acc: 0.9896\n",
311 | "Epoch 23/50\n",
312 | "96/96 [==============================] - 0s 273us/sample - loss: 0.0609 - acc: 1.0000\n",
313 | "Epoch 24/50\n",
314 | "96/96 [==============================] - 0s 138us/sample - loss: 0.0570 - acc: 1.0000\n",
315 | "Epoch 25/50\n",
316 | "96/96 [==============================] - 0s 226us/sample - loss: 0.0527 - acc: 1.0000\n",
317 | "Epoch 26/50\n",
318 | "96/96 [==============================] - 0s 158us/sample - loss: 0.0497 - acc: 1.0000\n",
319 | "Epoch 27/50\n",
320 | "96/96 [==============================] - 0s 306us/sample - loss: 0.0474 - acc: 1.0000\n",
321 | "Epoch 28/50\n",
322 | "96/96 [==============================] - 0s 474us/sample - loss: 0.0437 - acc: 1.0000\n",
323 | "Epoch 29/50\n",
324 | "96/96 [==============================] - 0s 378us/sample - loss: 0.0407 - acc: 1.0000\n",
325 | "Epoch 30/50\n",
326 | "96/96 [==============================] - 0s 278us/sample - loss: 0.0399 - acc: 1.0000\n",
327 | "Epoch 31/50\n",
328 | "96/96 [==============================] - 0s 144us/sample - loss: 0.0372 - acc: 1.0000\n",
329 | "Epoch 32/50\n",
330 | "96/96 [==============================] - 0s 309us/sample - loss: 0.0346 - acc: 1.0000\n",
331 | "Epoch 33/50\n",
332 | "96/96 [==============================] - 0s 178us/sample - loss: 0.0328 - acc: 1.0000\n",
333 | "Epoch 34/50\n",
334 | "96/96 [==============================] - 0s 176us/sample - loss: 0.0307 - acc: 1.0000\n",
335 | "Epoch 35/50\n",
336 | "96/96 [==============================] - 0s 365us/sample - loss: 0.0292 - acc: 1.0000\n",
337 | "Epoch 36/50\n",
338 | "96/96 [==============================] - 0s 412us/sample - loss: 0.0277 - acc: 1.0000\n",
339 | "Epoch 37/50\n",
340 | "96/96 [==============================] - 0s 231us/sample - loss: 0.0266 - acc: 1.0000\n",
341 | "Epoch 38/50\n",
342 | "96/96 [==============================] - 0s 249us/sample - loss: 0.0248 - acc: 1.0000\n",
343 | "Epoch 39/50\n",
344 | "96/96 [==============================] - 0s 243us/sample - loss: 0.0242 - acc: 1.0000\n",
345 | "Epoch 40/50\n",
346 | "96/96 [==============================] - 0s 401us/sample - loss: 0.0225 - acc: 1.0000\n",
347 | "Epoch 41/50\n",
348 | "96/96 [==============================] - 0s 282us/sample - loss: 0.0215 - acc: 1.0000\n",
349 | "Epoch 42/50\n",
350 | "96/96 [==============================] - 0s 335us/sample - loss: 0.0205 - acc: 1.0000\n",
351 | "Epoch 43/50\n",
352 | "96/96 [==============================] - 0s 219us/sample - loss: 0.0195 - acc: 1.0000\n",
353 | "Epoch 44/50\n",
354 | "96/96 [==============================] - 0s 437us/sample - loss: 0.0189 - acc: 1.0000\n",
355 | "Epoch 45/50\n",
356 | "96/96 [==============================] - 0s 149us/sample - loss: 0.0181 - acc: 1.0000\n",
357 | "Epoch 46/50\n",
358 | "96/96 [==============================] - 0s 276us/sample - loss: 0.0178 - acc: 1.0000\n",
359 | "Epoch 47/50\n",
360 | "96/96 [==============================] - 0s 281us/sample - loss: 0.0165 - acc: 1.0000\n",
361 | "Epoch 48/50\n",
362 | "96/96 [==============================] - 0s 199us/sample - loss: 0.0155 - acc: 1.0000\n",
363 | "Epoch 49/50\n",
364 | "96/96 [==============================] - 0s 276us/sample - loss: 0.0147 - acc: 1.0000\n",
365 | "Epoch 50/50\n",
366 | "96/96 [==============================] - 0s 507us/sample - loss: 0.0149 - acc: 1.0000\n"
367 | ]
368 | },
369 | {
370 | "data": {
371 | "text/plain": [
372 | ""
373 | ]
374 | },
375 | "execution_count": 8,
376 | "metadata": {},
377 | "output_type": "execute_result"
378 | }
379 | ],
380 | "source": [
381 | "model.fit(x_f_train,y_f_train, epochs = 50)"
382 | ]
383 | },
384 | {
385 | "cell_type": "markdown",
386 | "metadata": {},
387 | "source": [
388 | "## -- Checking Trained Data For Overfitting and Underfitting"
389 | ]
390 | },
391 | {
392 | "cell_type": "code",
393 | "execution_count": 9,
394 | "metadata": {},
395 | "outputs": [
396 | {
397 | "name": "stdout",
398 | "output_type": "stream",
399 | "text": [
400 | "64/64 [==============================] - 0s 2ms/sample - loss: 0.0231 - acc: 1.0000\n",
401 | "Loss % = 2.3059348575770855 , Accuracy % = 100.0 \n"
402 | ]
403 | }
404 | ],
405 | "source": [
406 | "val_loss,val_acc = model.evaluate(x_f_test,y_f_test)\n",
407 | "print(\"Loss % = {} , Accuracy % = {} \".format(val_loss*100,val_acc*100))"
408 | ]
409 | },
410 | {
411 | "cell_type": "markdown",
412 | "metadata": {},
413 | "source": [
414 | "## -- Predicting Star Type of Test Data from Trained Data "
415 | ]
416 | },
417 | {
418 | "cell_type": "code",
419 | "execution_count": 10,
420 | "metadata": {},
421 | "outputs": [],
422 | "source": [
423 | "# [1,0,0,0] = Red Dwarf\n",
424 | "# [0,1,0,0] = White Dwarf\n",
425 | "# [0,0,1,0] = Supergiant\n",
426 | "# [0,0,0,1] = Hypergiant\n",
427 | "\n",
428 | "arr = np.array([[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]])"
429 | ]
430 | },
431 | {
432 | "cell_type": "code",
433 | "execution_count": 11,
434 | "metadata": {},
435 | "outputs": [
436 | {
437 | "name": "stdout",
438 | "output_type": "stream",
439 | "text": [
440 | "_____________________________________________________\n",
441 | "Prediction : P-Class : O-Class \n",
442 | "[0. 1. 0. 0.] : 1 : [1.]\n",
443 | "[0. 0. 1. 0.] : 2 : [2.]\n",
444 | "[0. 0. 0. 1.] : 3 : [3.]\n",
445 | "[0. 0. 1. 0.] : 2 : [2.]\n",
446 | "[0. 0. 0. 1.] : 3 : [3.]\n",
447 | "[0. 0. 1. 0.] : 2 : [2.]\n",
448 | "[0. 1. 0. 0.] : 1 : [1.]\n",
449 | "[0. 0. 0. 1.] : 3 : [3.]\n",
450 | "[0. 0. 0. 1.] : 3 : [3.]\n",
451 | "[0. 0. 1. 0.] : 2 : [2.]\n",
452 | "[1. 0. 0. 0.] : 0 : [0.]\n",
453 | "[0. 1. 0. 0.] : 1 : [1.]\n",
454 | "[0. 0. 0. 1.] : 3 : [3.]\n",
455 | "[0. 0. 0. 1.] : 3 : [3.]\n",
456 | "[1. 0. 0. 0.] : 0 : [0.]\n",
457 | "[0. 1. 0. 0.] : 1 : [1.]\n",
458 | "[1. 0. 0. 0.] : 0 : [0.]\n",
459 | "[0. 0. 1. 0.] : 2 : [2.]\n",
460 | "[1. 0. 0. 0.] : 0 : [0.]\n",
461 | "[0. 0. 1. 0.] : 2 : [2.]\n",
462 | "[0. 1. 0. 0.] : 1 : [1.]\n",
463 | "[1. 0. 0. 0.] : 0 : [0.]\n",
464 | "[0. 1. 0. 0.] : 1 : [1.]\n",
465 | "[0. 1. 0. 0.] : 1 : [1.]\n",
466 | "[0. 0. 0. 1.] : 3 : [3.]\n",
467 | "[0. 0. 1. 0.] : 2 : [2.]\n",
468 | "[0. 0. 1. 0.] : 2 : [2.]\n",
469 | "[0. 0. 1. 0.] : 2 : [2.]\n",
470 | "[1. 0. 0. 0.] : 0 : [0.]\n",
471 | "[0. 0. 1. 0.] : 2 : [2.]\n",
472 | "[1. 0. 0. 0.] : 0 : [0.]\n",
473 | "[0. 0. 0. 1.] : 3 : [3.]\n",
474 | "[0. 0. 0. 1.] : 3 : [3.]\n",
475 | "[0. 0. 0. 1.] : 3 : [3.]\n",
476 | "[1. 0. 0. 0.] : 0 : [0.]\n",
477 | "[1. 0. 0. 0.] : 0 : [0.]\n",
478 | "[0. 0. 0. 1.] : 3 : [3.]\n",
479 | "[0. 0. 1. 0.] : 2 : [2.]\n",
480 | "[0. 0. 1. 0.] : 2 : [2.]\n",
481 | "[0. 0. 0. 1.] : 3 : [3.]\n",
482 | "[0. 1. 0. 0.] : 1 : [1.]\n",
483 | "[1. 0. 0. 0.] : 0 : [0.]\n",
484 | "[0. 1. 0. 0.] : 1 : [1.]\n",
485 | "[0. 0. 0. 1.] : 3 : [3.]\n",
486 | "[0. 0. 1. 0.] : 2 : [2.]\n",
487 | "[0. 0. 0. 1.] : 3 : [3.]\n",
488 | "[0. 0. 0. 1.] : 3 : [3.]\n",
489 | "[1. 0. 0. 0.] : 0 : [0.]\n",
490 | "[1. 0. 0. 0.] : 0 : [0.]\n",
491 | "[0. 0. 1. 0.] : 2 : [2.]\n",
492 | "[1. 0. 0. 0.] : 0 : [0.]\n",
493 | "[0. 0. 0. 1.] : 3 : [3.]\n",
494 | "[0. 1. 0. 0.] : 1 : [1.]\n",
495 | "[1. 0. 0. 0.] : 0 : [0.]\n",
496 | "[0. 0. 1. 0.] : 2 : [2.]\n",
497 | "[0. 1. 0. 0.] : 1 : [1.]\n",
498 | "[0. 0. 0. 1.] : 3 : [3.]\n",
499 | "[0. 0. 0. 1.] : 3 : [3.]\n",
500 | "[1. 0. 0. 0.] : 0 : [0.]\n",
501 | "[0. 1. 0. 0.] : 1 : [1.]\n",
502 | "[1. 0. 0. 0.] : 0 : [0.]\n",
503 | "[0. 1. 0. 0.] : 1 : [1.]\n",
504 | "[1. 0. 0. 0.] : 0 : [0.]\n",
505 | "[0. 0. 0. 1.] : 3 : [3.]\n",
506 | "_____________________________________________________\n",
507 | "Predicted NO. of Red Dwarfs = 17\n",
508 | "Predicted NO. of White Dwarfs = 13\n",
509 | "Predicted NO. of SuperGiants = 15\n",
510 | "Predicted NO. of Hypergiants = 19\n",
511 | "Total tested stars = 64\n",
512 | "_____________________________________________________\n",
513 | "Original NO. of Red Dwarfs = 17\n",
514 | "Original NO. of White Dwarfs = 13\n",
515 | "Original NO. of SuperGiants = 15\n",
516 | "Original NO. of Hypergiants = 19\n",
517 | "Total tested stars = 64\n",
518 | "_____________________________________________________\n",
519 | "Accuracy = 100.0%\n"
520 | ]
521 | }
522 | ],
523 | "source": [
524 | "z = np.round(model.predict(x_f_test))\n",
525 | "\n",
526 | "print('_____________________________________________________')\n",
527 | "print(\"Prediction : P-Class : O-Class \")\n",
528 | "\n",
529 | "c1=c2=c3=c4=c5=c6=c7=c8=0 #counter variables\n",
530 | "\n",
531 | "for i in range(0,len(z)):\n",
532 | " if np.array_equal(z[i],arr[0]):\n",
533 | " print(\"{} : {} : {}\".format(z[i],0,y_test[i]))\n",
534 | " c1+=1\n",
535 | " elif np.array_equal(z[i],arr[1]):\n",
536 | " print(\"{} : {} : {}\".format(z[i],1,y_test[i]))\n",
537 | " c2+=1\n",
538 | " elif np.array_equal(z[i],arr[2]):\n",
539 | " print(\"{} : {} : {}\".format(z[i],2,y_test[i]))\n",
540 | " c3+=1 \n",
541 | " elif np.array_equal(z[i],arr[3]):\n",
542 | " print(\"{} : {} : {}\".format(z[i],3,y_test[i]))\n",
543 | " c4+=1 \n",
544 | "\n",
545 | "print('_____________________________________________________')\n",
546 | "print(\"Predicted NO. of Red Dwarfs = {}\".format(c1))\n",
547 | "print(\"Predicted NO. of White Dwarfs = {}\".format(c2))\n",
548 | "print(\"Predicted NO. of SuperGiants = {}\".format(c3))\n",
549 | "print(\"Predicted NO. of Hypergiants = {}\".format(c4))\n",
550 | "print(\"Total tested stars = {}\".format(len(z)))\n",
551 | "\n",
552 | "m = y_test\n",
553 | "\n",
554 | "print('_____________________________________________________')\n",
555 | "\n",
556 | "for i in range(0,len(m)):\n",
557 | " if m[i] == 0:\n",
558 | " c5+=1\n",
559 | " elif m[i] == 1 :\n",
560 | " c6+=1 \n",
561 | " elif m[i] == 2 :\n",
562 | " c7+=1 \n",
563 | " elif m[i] == 3 :\n",
564 | " c8+=1 \n",
565 | " \n",
566 | "\n",
567 | "\n",
568 | "print(\"Original NO. of Red Dwarfs = {}\".format(c5))\n",
569 | "print(\"Original NO. of White Dwarfs = {}\".format(c6))\n",
570 | "print(\"Original NO. of SuperGiants = {}\".format(c7))\n",
571 | "print(\"Original NO. of Hypergiants = {}\".format(c8))\n",
572 | "print(\"Total tested stars = {}\".format(len(x_test)))\n",
573 | "\n",
574 | "print('_____________________________________________________')\n",
575 | "print('Accuracy = {}%'.format((val_acc*100)))"
576 | ]
577 | },
578 | {
579 | "cell_type": "markdown",
580 | "metadata": {},
581 | "source": [
582 | "# Data Visualisation "
583 | ]
584 | },
585 | {
586 | "cell_type": "markdown",
587 | "metadata": {},
588 | "source": [
589 | "## -- Importing Matplotlib module for plotting"
590 | ]
591 | },
592 | {
593 | "cell_type": "code",
594 | "execution_count": 12,
595 | "metadata": {},
596 | "outputs": [],
597 | "source": [
598 | "import matplotlib.pyplot as plt"
599 | ]
600 | },
601 | {
602 | "cell_type": "markdown",
603 | "metadata": {},
604 | "source": [
605 | "## -- Plotting Original data of Stars"
606 | ]
607 | },
608 | {
609 | "cell_type": "code",
610 | "execution_count": 13,
611 | "metadata": {},
612 | "outputs": [
613 | {
614 | "name": "stdout",
615 | "output_type": "stream",
616 | "text": [
617 | "Total Counted Stars = 160\n"
618 | ]
619 | },
620 | {
621 | "data": {
622 | "image/png": "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zJNPRnctDOOQIjfXcTYvWACzZzvmpAzyN8ChrhxWv+b0EMKhVbD61aiqP/vss1mzZg3f//73GTNmDB9//HGj+5SVlfH+++8zZ84cHnroIdavX8+0adNYsWIFc+fOpbS0lPnz5/PJJ58AsHz5cq699loWLlyIz+fj4Ycf5t///jfTp09n2bJlQY8xYsQIvvjiC7788ku6devGCy8cDBDbsGEDs2bN4r333uOee5wJ/x5//HEGDx5MaWkpd9xxR1TXwjAOWe67z4lSCkQk7TOzHtrKobqy8W0AqjxuV4/8/Hzmz5/Pc889R/v27Rk5ciQTJkwIu8/w4cNp0aIF7dq1Y9iwYcydO5dp06Yxbdo0SkpK6NWrF8uWLWPFihUAdO7cuTZ309y5cznttNNo27YtPp+Pyy67LOgxFi9ezODBg+nRowevv/56nRnqLr74YrKysjj55JPZuHFj0P0Nw4iAjz462GvwU1oKd9+dGnk8cmj7HHLyXSd0IwTJ1uiV7Oxshg4dytChQ+nRowcvv/wyOTk5HDhwAKBOGmxwQuvqL6sq9957LzfddFOddatXr66TOtvrgMbrrruOv/71r/Ts2ZMJEyYwc+bM2nWB6cNTnXfLMJoEgSOm/dTUwOuvQxqbaQ/tnkPB1SC+8NuIDwquiar65cuX177hA5SWltK5c2cKCgqYP38+AFOmTKmzz7vvvsvevXvZunUrM2fOpG/fvpxzzjm8+OKLVFY6PZh169bVpusOpF+/fnz88cds376d6urqBnX7qaio4KijjqKqqsrTDHKtWrWiosKDEjUMoyGPPebMBFfvxY/K6CwSyeLQ7jl0uxO+edmJSgpFlg9Ois7OXllZye23386OHTvIycmha9euPPfccyxdupTrr7+exx57jP79+9fZp1+/fpx//vl89913PPDAA3Ts2JGOHTuydOnS2jkg8vPzee2118jOzq6z79FHH819991H//796dixIyeffDJt2rRpINfDDz9M//796dy5Mz169Gi04S8qKiInJ4eePXty3XXXmd/BMCLB75x+9dW6qTRatUqdTB5IecrueBBTbqX1U51w1QNVdZ3T4nMUw+C3oOO5cZY4OGPHjiU/P5+77ror6joqKyvJz8+nurqaSy65hFGjRnHJJZfEUcrIsNxKhuFyxx3w9NOO/yEnB267LeVmpbTNrZQWdDzX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\n",
623 | "text/plain": [
624 | ""
625 | ]
626 | },
627 | "metadata": {
628 | "needs_background": "light"
629 | },
630 | "output_type": "display_data"
631 | }
632 | ],
633 | "source": [
634 | "df1 = pd.read_csv('C:\\\\Users\\\\User1\\\\Desktop\\\\Multi class classifier\\\\4 class classifier\\\\My Notebook\\\\4 class csv.csv')\n",
635 | "\n",
636 | "## data plotting\n",
637 | "\n",
638 | "x1 = np.array(df1.drop(['Star color','Spectral Class'],1))\n",
639 | "y1 = np.array(df1['Star type'], dtype ='float')\n",
640 | "y1.shape = (len(y1),1)\n",
641 | "c1 =0\n",
642 | "\n",
643 | "for i in range(0,len(x1)):\n",
644 | " if x1[i][4] == 0:\n",
645 | " a = plt.scatter(x1[i][0],x1[i][3], s = 50 , c = 'red', marker = '.')\n",
646 | " elif x1[i][4]== 1:\n",
647 | " b = plt.scatter(x1[i][0],x1[i][3],s = 75 , c = 'green',marker = '.')\n",
648 | " elif x1[i][4]== 2:\n",
649 | " c = plt.scatter(x1[i][0],x1[i][3],s = 100 , c = 'orange',marker = 'o')\n",
650 | " elif x1[i][4]== 3:\n",
651 | " d = plt.scatter(x1[i][0],x1[i][3],s = 150 , c = 'blue',marker = 'o') \n",
652 | " c1+=1\n",
653 | "\n",
654 | "\n",
655 | "print(\"Total Counted Stars = {}\".format(c1)) \n",
656 | "plt.xlabel(\"Temperature(K)\")\n",
657 | "plt.ylabel(\"Absolute Nagnitude(Mv)\")\n",
658 | "plt.title(\"H-R Diagram of Stars \")\n",
659 | "plt.legend((a,b,c,d),('Red Dwarf','White Dwarf','Supergiant','Hypergiant'))\n",
660 | "m = np.linspace(0,40000,100)\n",
661 | "n = (0*m) -7.5\n",
662 | "plt.plot(m,n,'--m')\n",
663 | "plt.gca().invert_xaxis()\n",
664 | "plt.gca().invert_yaxis()\n",
665 | "plt.show()"
666 | ]
667 | },
668 | {
669 | "cell_type": "markdown",
670 | "metadata": {},
671 | "source": [
672 | "## -- Visualizing Trained Data"
673 | ]
674 | },
675 | {
676 | "cell_type": "code",
677 | "execution_count": 14,
678 | "metadata": {},
679 | "outputs": [
680 | {
681 | "name": "stdout",
682 | "output_type": "stream",
683 | "text": [
684 | "Total Trained Stars = 96\n"
685 | ]
686 | },
687 | {
688 | "data": {
689 | "image/png": "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\n",
690 | "text/plain": [
691 | ""
692 | ]
693 | },
694 | "metadata": {
695 | "needs_background": "light"
696 | },
697 | "output_type": "display_data"
698 | }
699 | ],
700 | "source": [
701 | "c2=0\n",
702 | "\n",
703 | "for i in range(0,len(y_train)):\n",
704 | " if y_train[i] == 0:\n",
705 | " a = plt.scatter(x_train[i][0],x_train[i][3], s = 50 , c = 'red', marker = '.')\n",
706 | " elif y_train[i]== 1:\n",
707 | " b = plt.scatter(x_train[i][0],x_train[i][3],s = 75 , c = 'green',marker = '.')\n",
708 | " elif y_train[i]== 2:\n",
709 | " c = plt.scatter(x_train[i][0],x_train[i][3],s = 100 , c = 'orange',marker = 'o')\n",
710 | " elif y_train[i]== 3:\n",
711 | " d = plt.scatter(x_train[i][0],x_train[i][3],s = 150 , c = 'blue',marker = 'o') \n",
712 | " c2+=1\n",
713 | "\n",
714 | "\n",
715 | "print(\"Total Trained Stars = {}\".format(c2)) \n",
716 | "plt.xlabel(\"Temperature(K)\")\n",
717 | "plt.ylabel(\"Absolute Nagnitude(Mv)\")\n",
718 | "plt.title(\"H-R Diagram of Stars \")\n",
719 | "plt.legend((a,b,c,d),('Red Dwarf','White Dwarf','Supergiant','Hypergiant'))\n",
720 | "m = np.linspace(0,40000,100)\n",
721 | "n = (0*m) -7.5\n",
722 | "plt.plot(m,n,'--m')\n",
723 | "plt.gca().invert_xaxis()\n",
724 | "plt.gca().invert_yaxis()\n",
725 | "plt.show()"
726 | ]
727 | },
728 | {
729 | "cell_type": "markdown",
730 | "metadata": {},
731 | "source": [
732 | "## -- Visualizing Tested Data "
733 | ]
734 | },
735 | {
736 | "cell_type": "code",
737 | "execution_count": 15,
738 | "metadata": {},
739 | "outputs": [
740 | {
741 | "name": "stdout",
742 | "output_type": "stream",
743 | "text": [
744 | "Total Tested Stars = 64\n"
745 | ]
746 | },
747 | {
748 | "data": {
749 | "image/png": "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H3+cvn37kpGRUTZ8dm5uLl27dmXixIn06tWLzZs38/LLL3PyySczZMgQrr32Wm6++eaybU92z15eeukl+vbtS8+ePRkzZgwHDjjJcfz48fz2t79l4MCBdOrUiXfffReAO++8k/nz55OZmcmTT4Z2LEx47/9gTKTFurXSJaraRlU9qtpeVV9W1StUtYeqZqjq+T6liPDLnXrkUlK1QRZB7hshbX748OFs3ryZk08+mYkTJzJv3rwa18nJyeHTTz9l0aJF3H///Wzbto2ZM2eyYcMGFi9eTHZ2NsuWLeOLL74AYP369Vx55ZWsWLECj8fDAw88wFdffcWsWbNYt25dlfsYPXo0S5Ys4ZtvvqFr1668/PLLZfO2b9/OggUL+OSTT7jzTueGf4888ginn3462dnZ3HZb5HJ1fRAv4xKZKEjQ/g1ecXdZKaqKC2peBqAowOUqSE1NZdmyZcyfP585c+Ywbtw4HnnkEb/rjBo1isaNG9O4cWOGDh3K4sWLWbBgATNnzix3c6ANGzbQoUMHOnbsyKmnOu2zFy9ezBlnnEErd4jgsWPH8u2331bax6pVq7jnnnvYt28fBQUFjBgxomzeBRdcQFJSEt26dWPHjh2V1jXG1ODwYadvwxtvwJ49UFycUP0bvOp3ckhJdSqfa+JJDXkXycnJDBkyhCFDhtCjRw9ef/11UlJSKC0tBSg3DDZQ6U5bIoKqctddd3H99deXm5ebm1tu6OxAx8kaP348H374IT179uS1115j7ty5ZfN8hw+vC+NuGRN1vp3evBKof4NXvPZziI60y0E8/pcRD6RdEdLm169fz4YNG8reZ2dn07FjR9LS0li2bBkA7733Xrl1PvroIw4ePMju3buZO3cuffv2ZcSIEbzyyisUFDglmK1bt5YN1+2rX79+zJs3j71791JcXFxp2175+fm0adOGoqKigO4g16xZM/LzA0iixpjynd68Eqh/g1f9Ljl0vd1prlrip94hyQOnhHadvaCggFtuuYV9+/aRkpJC586defHFF1m7di1XX301Dz/8cKVmrf369eNXv/oVP/74I/feey9t27albdu2rF27tuweEKmpqUydOpXk5ORy67Zr1467776b/v3707ZtW7p160aLFi0qxfXAAw/Qv39/OnbsSI8ePWr84c/IyCAlJYWePXsyfvx4q3cwxp+hQ53LSIWF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\n",
750 | "text/plain": [
751 | ""
752 | ]
753 | },
754 | "metadata": {
755 | "needs_background": "light"
756 | },
757 | "output_type": "display_data"
758 | }
759 | ],
760 | "source": [
761 | "c3=0\n",
762 | "\n",
763 | "for i in range(0,len(y_test)):\n",
764 | " if y_test[i] == 0:\n",
765 | " a = plt.scatter(x_test[i][0],x_test[i][3], s = 50 , c = 'red', marker = '.')\n",
766 | " elif y_test[i]== 1:\n",
767 | " b = plt.scatter(x_test[i][0],x_test[i][3],s = 75 , c = 'green',marker = '.')\n",
768 | " elif y_test[i]== 2:\n",
769 | " c = plt.scatter(x_test[i][0],x_test[i][3],s = 100 , c = 'orange',marker = 'o')\n",
770 | " elif y_test[i]== 3:\n",
771 | " d = plt.scatter(x_test[i][0],x_test[i][3],s = 150 , c = 'blue',marker = 'o') \n",
772 | " c3+=1\n",
773 | "\n",
774 | "\n",
775 | "print(\"Total Tested Stars = {}\".format(c3)) \n",
776 | "plt.xlabel(\"Temperature(K)\")\n",
777 | "plt.ylabel(\"Absolute Nagnitude(Mv)\")\n",
778 | "plt.title(\"H-R Diagram of Stars \")\n",
779 | "plt.legend((a,b,c,d),('Red Dwarf','White Dwarf','Supergiant','Hypergiant'))\n",
780 | "m = np.linspace(0,40000,100)\n",
781 | "n = (0*m) -7.5\n",
782 | "plt.plot(m,n,'--m')\n",
783 | "plt.gca().invert_xaxis()\n",
784 | "plt.gca().invert_yaxis()\n",
785 | "plt.show()"
786 | ]
787 | },
788 | {
789 | "cell_type": "markdown",
790 | "metadata": {},
791 | "source": [
792 | "## -- Visualizing Predicted data"
793 | ]
794 | },
795 | {
796 | "cell_type": "code",
797 | "execution_count": 16,
798 | "metadata": {},
799 | "outputs": [
800 | {
801 | "name": "stdout",
802 | "output_type": "stream",
803 | "text": [
804 | "Total Predicted Stars = 64\n"
805 | ]
806 | },
807 | {
808 | "data": {
809 | "image/png": "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H3+cvn37kpGRUTZ8dm5uLl27dmXixIn06tWLzZs38/LLL3PyySczZMgQrr32Wm6++eaybU92z15eeukl+vbtS8+ePRkzZgwHDjjJcfz48fz2t79l4MCBdOrUiXfffReAO++8k/nz55OZmcmTT4Z2LEx47/9gTKTFurXSJaraRlU9qtpeVV9W1StUtYeqZqjq+T6liPDLnXrkUlK1QRZB7hshbX748OFs3ryZk08+mYkTJzJv3rwa18nJyeHTTz9l0aJF3H///Wzbto2ZM2eyYcMGFi9eTHZ2NsuWLeOLL74AYP369Vx55ZWsWLECj8fDAw88wFdffcWsWbNYt25dlfsYPXo0S5Ys4ZtvvqFr1668/PLLZfO2b9/OggUL+OSTT7jzTueGf4888ginn3462dnZ3HZb5HJ1fRAv4xKZKEjQ/g1ecXdZKaqKC2peBqAowOUqSE1NZdmyZcyfP585c+Ywbtw4HnnkEb/rjBo1isaNG9O4cWOGDh3K4sWLWbBgATNnzix3c6ANGzbQoUMHOnbsyKmnOu2zFy9ezBlnnEErd4jgsWPH8u2331bax6pVq7jnnnvYt28fBQUFjBgxomzeBRdcQFJSEt26dWPHjh2V1jXG1ODwYadvwxtvwJ49UFycUP0bvOp3ckhJdSqfa+JJDXkXycnJDBkyhCFDhtCjRw9ef/11UlJSKC0tBSg3DDZQ6U5bIoKqctddd3H99deXm5ebm1tu6OxAx8kaP348H374IT179uS1115j7ty5ZfN8hw+vC+NuGRN1vp3evBKof4NXvPZziI60y0E8/pcRD6RdEdLm169fz4YNG8reZ2dn07FjR9LS0li2bBkA7733Xrl1PvroIw4ePMju3buZO3cuffv2ZcSIEbzyyisUFDglmK1bt5YN1+2rX79+zJs3j71791JcXFxp2175+fm0adOGoqKigO4g16xZM/LzA0iixpjynd68Eqh/g1f9Ljl0vd1prlrip94hyQOnhHadvaCggFtuuYV9+/aRkpJC586defHFF1m7di1XX301Dz/8cKVmrf369eNXv/oVP/74I/feey9t27albdu2rF27tuweEKmpqUydOpXk5ORy67Zr1467776b/v3707ZtW7p160aLFi0qxfXAAw/Qv39/OnbsSI8ePWr84c/IyCAlJYWePXsyfvx4q3cwxp+hQ53LSIWFkJwMRx/t3PAnQfo3eNmQ3VX1cwCnxJDkqXU/h2BMmjSJ1NRU7rjjjpC3UVBQQGpqKsXFxVx44YVMmDCBCy+8MIxRBseG7Db1jrfOwbfTm3u/+HhjQ3b70/Ycpx/DuiedVklFBU4dQ9oVTokhwXpIT5o0ic8//5yDBw8yfPhwLrjggliHZEz9kqCd3iqykoOJKPsejHHFYYnCSg7GGBNrf/gDPPOM07Q1JwdKSiCOO5XW79ZKFeTlwZYtzrMxxoTVW285iQGc57feim08Naj3yaGoCN55B7KynEYFXbo4z1lZzvSiGjpQG2NMXVSvk8PevXDqqXDttZCd7STzAwec5+xsZ/qppzrLGWNMrVx6qdO0FZznOB/Ist4mh6IiGDYMVq2CgmpGxygocOYPGxZaCSI1tXzP6tdee61sILxYuOaaa1izZk1I686dO5eFCxeGOSJj6pFHH4Vbb4VevZznRx+NdUR+1dsK6ffeg/Xrax4L6/BhZ7n334dx46ITW6iKi4tJSan+K50yZUrI2547dy6pqakMHDgw5G0YU68lWBPXeltyePRR2L8/sGX37w9vks/Pz+eEE06gyC2O5OXlkZaWRlFREUOGDOHWW29l4MCBpKens3jxYjeG/UyYMIG+ffuSlZXFRx99BDilkbFjx3LeeecxfPhwSktLmThxIt27d+fcc89l5MiRZUNvDxkyBG+T3xtvvJE+ffrQvXv3siHAAdLS0rjvvvvo1asXPXr0YN26deTm5vL888/z5JNPkpmZyfz588N3MIwxcalelhzy8pzLRcFYtcpZr3nzwNcpLCwkMzOz7P2ePXs4//zzadasGUOGDOHTTz/lggsu4J133mHMmDF4PM44T/v372fhwoV88cUXTJgwgVWrVvHQQw9x5pln8sorr7Bv3z769evHsGHO/QAWLVpETk4OrVq14t133yU3N5eVK1eyc+dOunbtyoQJle6yykMPPUSrVq0oKSnhrLPOIicnh4yMDMC578Ty5ct57rnnmDx5MlOmTOGGG26ode9tY0ziqJclh7y84PueeDzBN3Ft3Lgx2dnZZY/777+/bN4111zDq6++CsCrr77KVVddVTbvkksuAWDw4MHk5eWxb98+Zs6cySOPPEJmZiZDhgzh4MGD/PjjjwCcffbZZcN0L1iwgLFjx5KUlMRxxx3H0GoG+5o+fTq9evUiKyuL1atXl6uLGD16NAC9e/cmNzc3uA9tjKlagt3foV6WHJo3D/57KSoKrtRQk0GDBpGbm8u8efMoKSkhPT29bF51w3a/9957dOnSpdy8r7/+Ouhhu7///nsmT57MkiVLaNmyJePHjy83dLh32O7k5GSKve2yjTG14zuUdwLc36FelhyaNwef3+KApKeHNzkAXHnllVxyySXlSg0A06ZNA5xSQIsWLWjRogUjRozg6aefLvvxX7FiRZXbPO2003jvvfcoLS1lx44d5e7V4JWXl0fTpk1p0aIFO3bsYMaMGTXGasN2G1NLvkN5J8D9HeplcgCnJ7vPCbdfTZs6y4fbZZddxt69e8suI3m1bNmSgQMHcsMNN5TdwvPee++lqKiIjIwM0tPTuffee6vc5pgxY2jfvj3p6elcf/319O/fv9Kw3T179iQrK4vu3bszYcIEBg0aVGOs5513Hh988IFVSBsTqqFDnfs6QGLc30FVE/7Ru3dvrWjNmjWVpvk6fFi1Vy/VBg1UofpHgwaqvXs7y4fbP/7xD7388svLTTvjjDN0yZIltdpufn6+qqru2rVLO3XqpNu3b6/V9mqjpu/BmHrj0CHV2293fnhuv915H2PAUq3md7Ve1jmAU8H8+edOB7f166tu1tq0KZxyCsya5SwfTrfccgszZszgs88+C++GgXPPPZd9+/Zx+PBh7r33Xo477riw78MYE6QE6+dQb5MDQMuW8NVXTge3Rx91mqt6PE7lc3q6cylp9OjwJwaAp59+usrpVdURBCsc2zDG1G8xSw4icjzwd+A4oBR4UVX/T0RaAdOANCAXuEhVQxrdSFUrtfypyONxej6PG+c0VfX2ZQh35XN9pHXgXiHG1FexrJAuBm5X1a7AqcBNItINuBOYraonAbPd90Fr1KgRu3fvDuoHqnlzaN/eEkM4qCq7d++mUaNGsQ7FGBOCmJUcVHU7sN19nS8ia4F2wChgiLvY68BcIOi2Qu3bt2fLli389NNPYYnXBK9Ro0a0b98+1mEYY0IQF3UOIpIGZAFfA79wEwequl1Ejq1mneuA6wA6dOhQab7H4+GEE06IUMTGGFO3xbyfg4ikAu8Bt6pqwANUqOqLqtpHVfscc8wxkQvQGGPqoZgmBxHx4CSGN1X1fXfyDhFp485vA+yMVXzGGFNfxSw5iNOM6GVgrar+xWfWP4HfuK9/A3wU7diMMaa+k1g1NxSR04D5wEqcpqwAd+PUO0wHOgA/AmNVdU8N2/oJ+CHEUFoDu0JcN5LiNS6I39gsruBYXMGpi3F1VNUqr8vHLDnECxFZqqp9Yh1HRfEaF8RvbBZXcCyu4NS3uGJeIW2MMSb+WHIwxhhTiSUHeDHWAVQjXuOC+I3N4gqOxRWcehVXva9zMMYYU5mVHIwxxlRiycEYY0wldSo5iEiyiKwQkU/c9yeIyNciskFEpolIA3d6Q/f9d+78NJ9t3OVOXy8iI3ym/9Kd9p2IBDxSrIg0EpHFIvKNiKwWkT+5018Tke9FJNt9ZLrTRUT+6u4nR0R6+WzrN+5n2SAiv/GZ3ltEVrrr/FVqGqfcf1wxPWYicryIzBGRtW5c/8+dPklEtvocr5Gh7r+6zxhiXK1EZJa7rVki0tKdHq3v8RUR2Skiq3ymxfRY+Ykrpseqmjhz3e1ki8jScMcZSaH8fwWlulvEJeID+B3wFvCJ+346cLH7+nngRvf1ROB59/XFwDT3dTfgG6AhcAKwEUh2HxuBTkADd5luAcYkQKr72oPTye9U4DXg11UsPxKY4a53KvC1O70VsMl9bum+bunOWwwMcNeZAZxTi7hiesyANkAv93Uz4Ft3H5OAO6pYPuj9V/cZQ4zrMeBOd/qdwKNR/h4HA72AVT7TYnqs/MQV02NVTZy5QOsK08IWZ6Qe/r6zcD3qTMlBRNoDvwKmuO8FOBN4113kdeAC9/Uo9z3u/LPc5UcB76jqIVX9HvgO6Oc+vlPVTap6GHjHXbZG6ihw33rch79WAKOAv7vrfQUcJc4YUyOAWaq6R52bH80CfunOa66qi9T5q/m7z+cMJa6YHjNV3a6qy93X+YB3KPfqBLX/Gv4uQonL97hUPF7R+B6/APyOIOAjKsfKT1wxPVZBCEucYYynKiH/JgWqziQH4CngfzgyFMfRwD5VLXbfb+HIj0w7YDOAO/9nd/my6RXWqW56QMS53JWNM4jgLFX92p31kFs8fVJEGlaMLcAY2rmvg46tYlw4ZyJxcczc+NI4MpQ7wM3u8XrFW9QPYf/+/i5CiavcEPOAd4j5qH2P1YiLY1VBPB4rBWaKyDJxbgMQzjgjKeL7rBPJQUTOBXaq6jLfyVUsqjXMC3Z6QFS1RFUzgfZAPxFJB+4CTgH64hRHvTc0ilpsFeMCuvrZVlSPmVQeyv1vwIlAJs5Nop6Ik7iqXTSacVUQF8cqCLGMa5Cq9gLOwbkb5WA/y8b6OAUSS9jUieQADALOF5FcnOLVmTgliaNExHtDo/bANvf1FuB4AHd+C5wicNn0CutUNz0oqroP5852v3QvU6iqHgJexflxLhdbgDFscV+HHJtPXKcSB8dMqhjKXVV3uMmsFHiJ0I/XLj+fMei4qH6I+ah/j17xcKyqEY/Hapv7vBP4AOdYhSvOSIr8PmtbaRFvD5xbjHorpP9B+cq0ie7rmyhfuTrdfd2d8hV2m3AqflLc1ydwpPKne4DxHAMc5b5ujDMS7blAG3ea4CSyR9z3v6J8pddiPVLp9T1OhVdL93Urd94Sd1lv5dzIWsQV02Pmfoa/A09VmN7G5/VtONfOQ9p/dZ8xxLgep3zl5WPR/B7d9dIoX/Eb02PlJ66YH6sK8TUFmvm8XohTVxC2OCP18PedhW0fkfwAsXhQPjl0wmnV8J37R97Qnd7Iff+dO7+Tz/p/xLn2vh6fFhA4LRW+def9MYh4MoAVQA6wCvhfd/p/cIYrXwVM5UjLIQGedfezEujjs60JbszfAVf5TO/jbmcj8Axuz/cQ44rpMQNOwyke5wDZ7mMk8IZ7PHJw7vnRJtT9V/cZQ4zraGA2sMF99v54Ret7fBvn0lERztnk1bE+Vn7iiumxqiLGTjg/qt8Aq72fO5xxRvJR3XcWrocNn2GMMaaSulLnYIwxJowsORhjjKnEkoMxxphKLDkYY4ypxJKDMcaYSiw5mIQnIkf7jED63wojkgY0imi0icgEETkuzNtsLyIfua+HiciHPvP+LCKfikgDEfmHiHQK575N3WPJwSQ8Vd2tqpnqDAXyPPCk9706g5LFhIgk+5k9AQgqOfj0VK7O7VRxy0gRmYQzTMsY93g8D/w+mH2b+seSg6nT3HH2F7uliOdEJElEUkRkn4g8LiLLReTfItJfROaJyCZx738gIteIyAfu/PUick+A231QRBbjjKP1JxFZIiKrROR5954A43DGPZrmLd2IyBYROcrd9qki8rn7+kEReUFEZgGvuvv4i7vvHBG5xl1OcEYPnVXh8/8BZziZ81X1oDt5Ls7opv6Sl6nnLDmYOssd4PBCYKBbqkjBGfoDnLGhZqoz6NphnHsgnAWMBe732Uw/d51ewKUikhnAdperaj9VXQT8n6r2BXq4836pqtNweliPC7B0kwWcp6pXANfhDDLZD6c0cJOIdAA6u9N9tzUYp4TyK1U94J2oqiU49zFIr2G/ph6rqZhqTCIbhvMDutQ5saYxR4Y5LlRV71n2SuBnVS0WkZU4YwJ5/VudMfpxr+GfhvN/U912D+MM4OZ1loj8Hmf4kdbAMpzxeYLxkc9Z/3Cgq4j4JqOTcIap+KnCehtwxtA6C/iwwrydQFucoSOMqcSSg6nLBHhFVe8tN9G5du97hl0KHPJ57ft/UXF8Ge8QzdVtt1C9A/GINMEZ96eXqm4VkQdxkkRVijlSkq+4zP4Kn2miqs6usO++Vay3HfgN8LmI7FHnBjxejYDCamIxxi4rmTrtc+AiEWkNZa2aOgS5jeEicpT7Qz8K+DKI7TbGSTa7RKQZMMZnXj7O7Ua9coHe7mvf5Sr6NzDRWzktIl1EpDHOQHon7A8hIgAAAOpJREFUVFxYVde523tbRDJ8Zp2EM9icMVWykoOps1R1pYj8CefMOQnn0ssNBDfu/QKc+5KfCLyhqtkAgWxXVXeLyOs4o4f+wJE72oFzD48pIlKIU68xCXhJRP6LMwpqdV4AOgDZ7iWtncAoVc0Tkc0icoI6twD1jeNrt+L6YxE5A6fU9LOqVrwMZUwZG5XVmGq4P6jpqnprrGMJhIiMxRnTf1INy/0ep/L6dX/LmfrNSg7G1B3v4lRQ12Q3zj1EjKmWlRyMMcZUYhXSxhhjKrHkYIwxphJLDsYYYyqx5GCMMaYSSw7GGGMq+f+eYADP6LBiLAAAAABJRU5ErkJggg==\n",
810 | "text/plain": [
811 | ""
812 | ]
813 | },
814 | "metadata": {
815 | "needs_background": "light"
816 | },
817 | "output_type": "display_data"
818 | }
819 | ],
820 | "source": [
821 | "c4 = 0\n",
822 | "\n",
823 | "for i in range(0,len(z)):\n",
824 | " if np.array_equal(z[i],arr[0]):\n",
825 | " a = plt.scatter(x_test[i][0],x_test[i][3], s = 50 , c = 'red', marker = '.')\n",
826 | " elif np.array_equal(z[i],arr[1]):\n",
827 | " b = plt.scatter(x_test[i][0],x_test[i][3],s = 75 , c = 'green',marker = '.')\n",
828 | " elif np.array_equal(z[i],arr[2]):\n",
829 | " c = plt.scatter(x_test[i][0],x_test[i][3],s = 100 , c = 'orange',marker = 'o')\n",
830 | " elif np.array_equal(z[i],arr[3]):\n",
831 | " d = plt.scatter(x_test[i][0],x_test[i][3],s = 150 , c = 'blue',marker = 'o') \n",
832 | " c4+=1\n",
833 | "\n",
834 | "print(\"Total Predicted Stars = {}\".format(c4)) \n",
835 | "plt.xlabel(\"Temperature(K)\")\n",
836 | "plt.ylabel(\"Absolute Nagnitude(Mv)\")\n",
837 | "plt.title(\"H-R Diagram of Stars \")\n",
838 | "plt.legend((a,b,c,d),('Red Dwarf','White Dwarf','Supergiant','Hypergiant'))\n",
839 | "m = np.linspace(0,40000,100)\n",
840 | "n = (0*m) -7.5\n",
841 | "plt.plot(m,n,'--m')\n",
842 | "plt.gca().invert_xaxis()\n",
843 | "plt.gca().invert_yaxis()\n",
844 | "plt.show()\n",
845 | " "
846 | ]
847 | },
848 | {
849 | "cell_type": "markdown",
850 | "metadata": {},
851 | "source": [
852 | "## Saving Trained data in a pickle for future use"
853 | ]
854 | },
855 | {
856 | "cell_type": "code",
857 | "execution_count": 17,
858 | "metadata": {},
859 | "outputs": [],
860 | "source": [
861 | "import pickle\n",
862 | "\n",
863 | "c = np.hstack((x_f_train,y_f_train)) # Merging the label column (y_test) with the X_test i.e the total training set\n",
864 | "\n",
865 | "with open(\"model.pickle\",\"wb\") as f:\n",
866 | " pickle.dump( c , f)"
867 | ]
868 | }
869 | ],
870 | "metadata": {
871 | "kernelspec": {
872 | "display_name": "Python 3",
873 | "language": "python",
874 | "name": "python3"
875 | },
876 | "language_info": {
877 | "codemirror_mode": {
878 | "name": "ipython",
879 | "version": 3
880 | },
881 | "file_extension": ".py",
882 | "mimetype": "text/x-python",
883 | "name": "python",
884 | "nbconvert_exporter": "python",
885 | "pygments_lexer": "ipython3",
886 | "version": "3.7.3"
887 | }
888 | },
889 | "nbformat": 4,
890 | "nbformat_minor": 2
891 | }
892 |
--------------------------------------------------------------------------------
/Star Classifier/4 Class Classification of stars/README.md:
--------------------------------------------------------------------------------
1 | This is a Classifier which will predict 4 classes of stars after learning from
2 | a dataset (Star Dataset.csv)
3 |
4 | The Classes are :-
5 |
6 | Class 0 : Red Dwarf
7 |
8 | Class 1: White Dwarf
9 |
10 | Class 2: Supergiant
11 |
12 | Class 3: Hypergiant
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Star Classifier/4 Class Classification of stars/Star Dataset.csv:
--------------------------------------------------------------------------------
1 | Temperature (K),Luminosity(L/Lo),Radius(R/Ro),Absolute magnitude(Mv),Star type,Star color,Spectral Class
2 | 3600,0.0029,0.51,8.69,0,Red,M
3 | 3129,0.0122,0.3761,11.79,0,Red,M
4 | 3068,0.0024,0.17,16.12,0,Red,M
5 | 3042,0.0005,0.1542,15.6,0,Red,M
6 | 3134,0.0004,0.196,13.21,0,Red,M
7 | 2600,0.0003,0.102,18.7,0,Red,M
8 | 2800,0.0002,0.16,16.65,0,Red,M
9 | 3628,0.0055,0.393,10.48,0,Red,M
10 | 2650,0.0006,0.14,11.782,0,Red,M
11 | 1939,0.000138,0.103,20.06,0,Red,M
12 | 25000,0.056,0.0084,11.18,1,Blue White,B
13 | 7740,0.00049,0.01234,13.02,1,White,A
14 | 6220,0.00017,0.011,14.23,1,White,F
15 | 8500,0.0005,0.01,11.5,1,White,A
16 | 16500,0.013,0.014,11.2,1,Blue White,B
17 | 5590,0.000085,0.00984,15.23,1,Yellowish White,F
18 | 8570,0.00081,0.0097,13.2,1,Blue white,A
19 | 5700,0.00011,0.0128,14.47,1,Yellowish White,F
20 | 5790,0.00015,0.011,14.59,1,Yellowish White,F
21 | 5030,0.00008,0.013,15.08,1,Pale yellow orange,F
22 | 3826,200000,19,-6.93,2,Red,M
23 | 3365,340000,23,-6.2,2,Red,M
24 | 3270,150000,88,-6.02,2,Red,M
25 | 3200,195000,17,-7.42,2,Red,M
26 | 3008,280000,25,-6,2,Red,M
27 | 3600,320000,29,-6.6,2,Red,M
28 | 3575,123000,45,-6.78,2,Red,M
29 | 3574,200000,89,-5.24,2,Red,M
30 | 3625,184000,84,-6.74,2,Red,M
31 | 33750,220000,26,-6.1,2,Blue,B
32 | 3490,270000,1520,-9.4,3,Red,M
33 | 3750,283000,1260,-7.63,3,Red,M
34 | 3834,272000,1183,-9.2,3,Red,M
35 | 3749,550000,1648,-8.05,3,Orange,M
36 | 3650,310000,1324,-7.57,3,Red,M
37 | 3450,263000,1349,-11.75,3,Red,M
38 | 3660,363000,1673,-11.92,3,Red,M
39 | 3450,174000,1284,-11.28,3,Red,M
40 | 3752,209000,955,-11.24,3,Red,M
41 | 3535,195000,1546,-11.36,3,Red,M
42 | 3340,0.0038,0.24,13.07,0,Red,M
43 | 2799,0.0018,0.16,14.79,0,Red,M
44 | 3692,0.00367,0.47,9.8,0,Red,M
45 | 3192,0.00362,0.1967,13.53,0,Red,M
46 | 3441,0.039,0.351,11.18,0,Red,M
47 | 3345,0.021,0.273,12.3,0,Red,M
48 | 3607,0.022,0.38,10.12,0,Red,M
49 | 3304,0.0085,0.18,13.2,0,Red,M
50 | 2840,0.00065,0.11,16.98,0,Red,M
51 | 3150,0.0088,0.35,11.94,0,Red,M
52 | 6100,0.00029,0.012,12.09,1,White-Yellow,F
53 | 5574,0.00014,0.0092,13.02,1,White,F
54 | 8930,0.00056,0.0095,11.78,1,white,A
55 | 17200,0.00098,0.015,14.45,1,Blue White,B
56 | 14100,0.00067,0.0089,15.23,1,Blue White,B
57 | 9675,0.00045,0.0109,10.98,1,Blue White,A
58 | 12010,0.00078,0.0092,12.13,1,Blue White,B
59 | 10980,0.00074,0.0087,11.19,1,Blue White,B
60 | 6720,0.00018,0.00892,10.67,1,white,F
61 | 19860,0.0011,0.0131,14.34,1,Blue ,B
62 | 33300,240000,12,-6.5,2,Blue,B
63 | 40000,813000,14,-6.23,2,Blue,O
64 | 23000,127000,36,-5.76,2,Blue,O
65 | 17120,235000,83,-6.89,2,Blue,O
66 | 11096,112000,12,-5.11,2,Blue,O
67 | 14245,231000,42,-6.12,2,Blue,O
68 | 24630,363000,63,-5.33,2,Blue,O
69 | 12893,184000,36,-6.34,2,Blue,O
70 | 24345,142000,57,-6.24,2,Blue,O
71 | 33421,352000,67,-5.49,2,Blue,O
72 | 3459,100000,1289,-10.7,3,Red,M
73 | 3605,126000,1124,-10.81,3,Red,M
74 | 3615,200000,1635,-11.33,3,Red,M
75 | 3399,117000,1486,-10.92,3,Red,M
76 | 3610,132000,1522,-10.86,3,Red,M
77 | 3553,145000,1324,-11.03,3,Red,M
78 | 4015,282000,1534,-11.39,3,Red,K
79 | 3625,74000,876,-10.25,3,Red,M
80 | 6850,229000,1467,-10.07,3,Red,G
81 | 3780,200000,1324,-10.7,3,Red,M
82 | 3550,0.004,0.291,10.89,0,Red,M
83 | 2637,0.00073,0.127,17.22,0,Red,M
84 | 2600,0.0004,0.096,17.4,0,Red,M
85 | 3180,0.001,0.35,11.76,0,Red,M
86 | 2890,0.0034,0.24,13.46,0,Red,M
87 | 3342,0.0015,0.307,11.87,0,Red,M
88 | 2621,0.0006,0.098,12.81,0,Red,M
89 | 3158,0.00135,0.161,13.98,0,Red,M
90 | 3095,0.00019,0.492,10.87,0,Red,M
91 | 2650,0.00069,0.11,17.45,0,Red,M
92 | 13420,0.00059,0.00981,14.67,1,Blue White,B
93 | 21020,0.0015,0.0112,12.52,1,Blue,B
94 | 18290,0.0013,0.00934,12.78,1,Blue,B
95 | 14520,0.00082,0.00972,11.92,1,Blue White,B
96 | 11900,0.00067,0.00898,10.38,1,Blue white ,B
97 | 8924,0.00028,0.00879,14.87,1,Blue white,A
98 | 12912,0.00071,0.00945,12.83,1,Blue white,B
99 | 6732,0.00011,0.00892,15.89,1,white,F
100 | 7723,0.00014,0.00878,14.81,1,White,A
101 | 12984,0.00088,0.00996,13.23,1,Blue White,B
102 | 25390,223000,57,-5.92,2,Blue,O
103 | 11567,251000,36,-6.245,2,Blue,O
104 | 12675,452000,83,-5.62,2,Blue,O
105 | 5752,245000,97,-6.63,2,Blue,O
106 | 8927,239000,35,-7.34,2,Blue,O
107 | 7282,131000,24,-7.22,2,Blue,O
108 | 19923,152000,73,-5.09,2,Blue,O
109 | 26373,198000,39,-5.13,2,Blue,O
110 | 17383,342900,30,-6.09,2,Blue,O
111 | 9373,424520,24,-5.99,2,Blue,O
112 | 3570,320000,1480,-7.5,3,Red,M
113 | 3500,138000,1420,-8.18,3,Red,M
114 | 4287,630000,1315,-9.2,3,Orange,K
115 | 26000,316000,1679,-9.1,3,Blue,B
116 | 3600,240000,1190,-7.89,3,Red,M
117 | 3614,145000,1553,-7.71,3,Red,M
118 | 18000,200000,1045,-8.3,3,Blue,O
119 | 11000,170000,1779,-9.9,3,Blue-white,B
120 | 12100,120000,708.9,-7.84,3,Blue-white,B
121 | 24490,248490,1134.5,-8.24,3,Blue-white,B
122 | 3607,0.00023,0.38,10.34,0,Red,M
123 | 2700,0.00018,0.13,16.05,0,Red,M
124 | 3100,0.008,0.31,11.17,0,Red,M
125 | 2989,0.0087,0.34,13.12,0,Red,M
126 | 3341,0.0056,0.57,16.23,0,Red,M
127 | 3542,0.0009,0.62,14.23,0,Red,M
128 | 3243,0.0023,0.73,14.75,0,Red,M
129 | 3091,0.0081,0.24,11.43,0,Red,M
130 | 3432,0.0067,0.19,15.34,0,Red,M
131 | 3598,0.0011,0.56,14.26,0,Red,M
132 | 16790,0.0014,0.0121,14.87,1,Blue,B
133 | 15680,0.00122,0.0114,13.92,1,Blue,B
134 | 14982,0.00118,0.0113,12.23,1,Blue,B
135 | 13340,0.00109,0.0116,14.9,1,Blue,B
136 | 18340,0.00134,0.0124,13.22,1,Blue,B
137 | 19920,0.00156,0.0142,11.34,1,Blue,B
138 | 24020,0.00159,0.0127,12.95,1,Blue,B
139 | 23092,0.00132,0.0104,13.18,1,Blue,B
140 | 17920,0.00111,0.0106,12.66,1,Blue,B
141 | 19360,0.00125,0.00998,15.07,1,Blue,B
142 | 23678,244290,35,-6.27,2,Blue,O
143 | 12749,332520,76,-7.02,2,Blue,O
144 | 9383,342940,98,-6.98,2,Blue,O
145 | 23440,537430,81,-5.675,2,Blue,O
146 | 16787,246730,62,-6.35,2,Blue,O
147 | 18734,224780,46,-7.45,2,Blue,O
148 | 9892,593900,80,-7.26,2,Blue,O
149 | 10930,783930,25,-6.224,2,Blue,O
150 | 23095,347820,86,-5.905,2,Blue,O
151 | 21738,748890,92,-7.346,2,Blue,O
152 | 24145,382993,1494,-8.84,3,Blue-white,B
153 | 38234,272830,1356,-9.29,3,Blue,O
154 | 32489,648430,1948.5,-10.84,3,Blue,O
155 | 27739,849420,1252,-7.59,3,Blue-white,B
156 | 21904,748490,1130,-7.67,3,Blue-white,B
157 | 38940,374830,1356,-9.93,3,Blue,O
158 | 30839,834042,1194,-10.63,3,Blue,O
159 | 8829,537493,1423,-10.73,3,White,A
160 | 9235,404940,1112,-11.23,3,White,A
161 | 37882,294903,1783,-7.8,3,Blue,O
162 |
--------------------------------------------------------------------------------
/Star Classifier/4 Class Classification of stars/model.pickle:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepraj1729/AstroML/904680d75f8fa7c50f0d661e9b9a8cc2e44b676a/Star Classifier/4 Class Classification of stars/model.pickle
--------------------------------------------------------------------------------
/Star Classifier/5 Class Classification of stars/5 class classification document file.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepraj1729/AstroML/904680d75f8fa7c50f0d661e9b9a8cc2e44b676a/Star Classifier/5 Class Classification of stars/5 class classification document file.docx
--------------------------------------------------------------------------------
/Star Classifier/5 Class Classification of stars/5 class.csv:
--------------------------------------------------------------------------------
1 | Temperature (K),Luminosity(L/Lo),Radius(R/Ro),Absolute magnitude(Mv),Star type,Star color,Spectral Class
2 | 3068,0.0024,0.17,16.12,0,Red,M
3 | 3042,0.0005,0.1542,16.91,0,Red,M
4 | 2600,0.0003,0.102,18.7,0,Red,M
5 | 2800,0.0002,0.16,16.65,0,Red,M
6 | 1939,0.000138,0.103,20.06,0,Red,M
7 | 2840,0.00065,0.11,16.98,0,Red,M
8 | 2637,0.00073,0.127,17.22,0,Red,M
9 | 2600,0.0004,0.096,17.4,0,Red,M
10 | 2650,0.00069,0.11,17.45,0,Red,M
11 | 2700,0.00018,0.13,16.05,0,Red,M
12 | 3600,0.0029,0.51,9.69,1,Red,M
13 | 3129,0.0122,0.3761,11.79,1,Red,M
14 | 3134,0.0004,0.196,13.21,1,Red,M
15 | 3628,0.0055,0.393,10.48,1,Red,M
16 | 2650,0.0006,0.14,11.782,1,Red,M
17 | 3340,0.0038,0.24,13.07,1,Red,M
18 | 2799,0.0018,0.16,14.49,1,Red,M
19 | 3692,0.00367,0.47,10.8,1,Red,M
20 | 3192,0.00362,0.1967,13.53,1,Red,M
21 | 3441,0.039,0.351,11.18,1,Red,M
22 | 25000,0.056,0.0084,11.48,2,Blue White,B
23 | 7740,0.00049,0.01234,13.02,2,White,A
24 | 6220,0.00017,0.011,14.23,2,White,F
25 | 8500,0.0005,0.01,11.5,2,White,A
26 | 16500,0.013,0.014,11.2,2,Blue White,B
27 | 5590,0.000085,0.00984,15.23,2,Yellowish White,F
28 | 8570,0.00081,0.0097,13.2,2,Blue white,A
29 | 5700,0.00011,0.0128,14.47,2,Yellowish White,F
30 | 5790,0.00015,0.011,14.59,2,Yellowish White,F
31 | 5030,0.00008,0.013,15.08,2,Pale yellow orange,F
32 | 3826,200000,19,-6.93,3,Red,M
33 | 3365,340000,23,-6.2,3,Red,M
34 | 3270,150000,88,-6.02,3,Red,M
35 | 3200,195000,17,-7.42,3,Red,M
36 | 3008,280000,25,-6,3,Red,M
37 | 3600,320000,29,-6.6,3,Red,M
38 | 3575,123000,45,-6.78,3,Red,M
39 | 3574,200000,89,-5.24,3,Red,M
40 | 3625,184000,84,-6.74,3,Red,M
41 | 33750,220000,26,-6.1,3,Blue,B
42 | 3490,270000,1520,-9.4,4,Red,M
43 | 3750,283000,1260,-7.63,4,Red,M
44 | 3834,272000,1183,-9.2,4,Red,M
45 | 3749,550000,1648,-8.05,4,Orange,M
46 | 3650,310000,1324,-7.57,4,Red,M
47 | 3450,263000,1349,-11.75,4,Red,M
48 | 3660,363000,1673,-11.92,4,Red,M
49 | 3450,174000,1284,-11.28,4,Red,M
50 | 3752,209000,955,-11.24,4,Red,M
51 | 3535,195000,1546,-11.36,4,Red,M
52 | 3341,0.0056,0.057,16.23,0,Red,M
53 | 3432,0.00067,0.19,16.34,0,Red,M
54 | 2983,0.00024,0.094,16.09,0,Red,M
55 | 2835,0.00034,0.0918,16.56,0,Red,M
56 | 2935,0.00014,0.116,18.89,0,Red,M
57 | 3295,0.00098,0.132,17.13,0,Red,M
58 | 2945,0.00032,0.093,18.34,0,Red,M
59 | 2817,0.00098,0.0911,16.45,0,Red,M
60 | 2774,0.00036,0.118,17.39,0,Red,M
61 | 2871,0.00072,0.12,19.43,0,Red,M
62 | 3345,0.021,0.273,12.3,1,Red,M
63 | 3607,0.022,0.38,10.12,1,Red,M
64 | 3304,0.0085,0.18,13.2,1,Red,M
65 | 3150,0.0088,0.35,11.94,1,Red,M
66 | 3550,0.004,0.291,10.89,1,Red,M
67 | 3180,0.001,0.35,11.76,1,Red,M
68 | 2890,0.0034,0.24,13.46,1,Red,M
69 | 3342,0.0015,0.307,11.87,1,Red,M
70 | 2621,0.0006,0.098,12.81,1,Red,M
71 | 3158,0.00135,0.161,13.98,1,Red,M
72 | 6100,0.00029,0.012,12.09,2,White-Yellow,F
73 | 5574,0.00014,0.0092,13.02,2,White,F
74 | 8930,0.00056,0.0095,11.78,2,white,A
75 | 17200,0.00098,0.015,14.45,2,Blue White,B
76 | 14100,0.00067,0.0089,15.23,2,Blue White,B
77 | 9675,0.00045,0.0109,10.98,2,Blue White,A
78 | 12010,0.00078,0.0092,12.13,2,Blue White,B
79 | 10980,0.00074,0.0087,11.19,2,Blue White,B
80 | 6720,0.00018,0.00892,10.67,2,white,F
81 | 19860,0.0011,0.0131,14.34,2,Blue ,B
82 | 33300,240000,12,-6.5,3,Blue,B
83 | 40000,813000,14,-6.23,3,Blue,O
84 | 23000,127000,36,-5.76,3,Blue,O
85 | 17120,235000,83,-6.89,3,Blue,O
86 | 11096,112000,12,-5.11,3,Blue,O
87 | 14245,231000,42,-6.12,3,Blue,O
88 | 24630,363000,63,-5.33,3,Blue,O
89 | 12893,184000,36,-6.34,3,Blue,O
90 | 24345,142000,57,-6.24,3,Blue,O
91 | 33421,352000,67,-5.49,3,Blue,O
92 | 3459,100000,1289,-10.7,4,Red,M
93 | 3605,126000,1124,-10.81,4,Red,M
94 | 3615,200000,1635,-11.33,4,Red,M
95 | 3399,117000,1486,-10.92,4,Red,M
96 | 3610,132000,1522,-10.86,4,Red,M
97 | 3553,145000,1324,-11.03,4,Red,M
98 | 4015,282000,1534,-11.39,4,Red,K
99 | 3625,74000,876,-10.25,4,Red,M
100 | 6850,229000,1467,-10.07,4,Red,G
101 | 3780,200000,1324,-10.7,4,Red,M
102 | 3323,0.00043,0.0912,17.16,0,Red,M
103 | 3531,0.00093,0.0976,19.94,0,Red,M
104 | 3218,0.00054,0.11,20.02,0,Red,M
105 | 3146,0.00015,0.0932,16.92,0,Red,M
106 | 3511,0.00064,0.109,17.12,0,Red,M
107 | 3225,0.00076,0.121,19.63,0,Red,M
108 | 2935,0.00087,0.0932,15.97,0,Red,M
109 | 2861,0.00019,0.0899,16.77,0,Red,M
110 | 2856,0.000896,0.0782,19.56,0,Red,M
111 | 2731,0.000437,0.0856,18.09,0,Red,M
112 | 3095,0.00019,0.492,10.87,1,Red,M
113 | 3607,0.00023,0.38,10.34,1,Red,M
114 | 3100,0.008,0.31,11.17,1,Red,M
115 | 2989,0.0087,0.34,13.12,1,Red,M
116 | 3542,0.0009,0.62,14.23,1,Red,M
117 | 3243,0.0023,0.73,14.75,1,Red,M
118 | 3091,0.0081,0.24,11.43,1,Red,M
119 | 3598,0.0011,0.56,14.26,1,Red,M
120 | 3324,0.0034,0.34,12.23,1,Red,M
121 | 3541,0.0013,0.256,14.33,1,Red,M
122 | 13420,0.00059,0.00981,14.97,2,Blue White,B
123 | 21020,0.0015,0.0112,12.52,2,Blue,B
124 | 18290,0.0013,0.00934,12.78,2,Blue,B
125 | 14520,0.00082,0.00972,11.92,2,Blue White,B
126 | 11900,0.00067,0.00898,10.38,2,Blue white ,B
127 | 8924,0.00028,0.00879,14.87,2,Blue white,A
128 | 12912,0.00071,0.00945,12.83,2,Blue white,B
129 | 6732,0.00011,0.00892,15.89,2,white,F
130 | 7723,0.00014,0.00878,14.81,2,White,A
131 | 12984,0.00088,0.00996,13.23,2,Blue White,B
132 | 25390,223000,57,-5.92,3,Blue,O
133 | 11567,251000,36,-6.245,3,Blue,O
134 | 12675,452000,83,-5.62,3,Blue,O
135 | 5752,245000,97,-6.63,3,Blue,O
136 | 8927,239000,35,-7.34,3,Blue,O
137 | 7282,131000,24,-7.22,3,Blue,O
138 | 19923,152000,73,-5.09,3,Blue,O
139 | 26373,198000,39,-5.13,3,Blue,O
140 | 17383,342900,30,-6.09,3,Blue,O
141 | 9373,424520,24,-5.99,3,Blue,O
142 | 3570,320000,1480,-7.5,4,Red,M
143 | 3500,138000,1420,-8.18,4,Red,M
144 | 4287,630000,1315,-9.2,4,Orange,K
145 | 26000,316000,1679,-9.1,4,Blue,B
146 | 3600,240000,1190,-7.89,4,Red,M
147 | 3614,145000,1553,-7.71,4,Red,M
148 | 18000,200000,1045,-8.3,4,Blue,O
149 | 11000,170000,1779,-9.9,4,Blue-white,B
150 | 12100,120000,708.9,-7.84,4,Blue-white,B
151 | 24490,248490,1134.5,-8.24,4,Blue-white,B
152 | 2831,0.000231,0.0915,15.91,0,Red,M
153 | 2914,0.000631,0.116,18.39,0,Red,M
154 | 3419,0.000245,0.126,17.56,0,Red,M
155 | 3218,0.000452,0.0987,17.34,0,Red,M
156 | 3453,0.000621,0.0773,17.08,0,Red,M
157 | 2889,0.000352,0.0973,16.93,0,Red,M
158 | 2968,0.000461,0.119,17.45,0,Red,M
159 | 3484,0.000551,0.0998,15.97,0,Red,M
160 | 2778,0.000849,0.112,19.45,0,Red,M
161 | 3523,0.000957,0.129,16.35,0,Red,M
162 | 3462,0.0053,0.148,11.47,1,Red,M
163 | 3257,0.0024,0.46,10.73,1,Red,M
164 | 2994,0.0072,0.28,13.45,1,Red,M
165 | 3212,0.0016,0.378,12.854,1,Red,M
166 | 3523,0.0054,0.319,12.43,1,Red,M
167 | 3598,0.0027,0.67,13.667,1,Red,M
168 | 3142,0.00132,0.258,14.12,1,Red,M
169 | 3496,0.00125,0.336,14.94,1,Red,M
170 | 3324,0.0065,0.471,12.78,1,Red,M
171 | 3463,0.0027,0.675,14.676,1,Red,M
172 | 16790,0.0014,0.0121,14.87,2,Blue,B
173 | 15680,0.00122,0.0114,13.92,2,Blue,B
174 | 14982,0.00118,0.0113,12.23,2,Blue,B
175 | 13340,0.00109,0.0116,14.9,2,Blue,B
176 | 18340,0.00134,0.0124,13.22,2,Blue,B
177 | 19920,0.00156,0.0142,11.34,2,Blue,B
178 | 24020,0.00159,0.0127,12.95,2,Blue,B
179 | 23092,0.00132,0.0104,13.18,2,Blue,B
180 | 17920,0.00111,0.0106,12.66,2,Blue,B
181 | 19360,0.00125,0.00998,15.07,2,Blue,B
182 | 23678,244290,35,-6.27,3,Blue,O
183 | 12749,332520,76,-7.02,3,Blue,O
184 | 9383,342940,98,-6.98,3,Blue,O
185 | 23440,537430,81,-5.675,3,Blue,O
186 | 16787,246730,62,-6.35,3,Blue,O
187 | 18734,224780,46,-7.45,3,Blue,O
188 | 9892,593900,80,-7.262,3,Blue,O
189 | 10930,783930,25,-6.224,3,Blue,O
190 | 23095,347820,86,-5.905,3,Blue,O
191 | 21738,748890,92,-7.346,3,Blue,O
192 | 24145,382993,1494,-8.84,4,Blue-white,B
193 | 38234,272830,1356,-9.29,4,Blue,O
194 | 32489,648430,1948.5,-10.84,4,Blue,O
195 | 27739,849420,1252,-7.59,4,Blue-white,B
196 | 21904,748490,1130,-7.67,4,Blue-white,B
197 | 38940,374830,1356,-9.93,4,Blue,O
198 | 30839,834042,1194,-10.63,4,Blue,O
199 | 8829,537493,1423,-10.73,4,White,A
200 | 9235,404940,1112,-11.23,4,White,A
201 | 37882,294903,1783,-7.8,4,Blue,O
202 |
--------------------------------------------------------------------------------
/Star Classifier/5 Class Classification of stars/README.md:
--------------------------------------------------------------------------------
1 | This is a Classifier which will predict 5 classes of stars after learning from
2 | a dataset (5 class.csv)
3 |
4 | The Classes are :-
5 |
6 | Class 0 : Brown Dwarf
7 |
8 | Class 1: Red Dwarf
9 |
10 | Class 2: White Dwarf
11 |
12 | Class 3: Supergiant
13 |
14 | Class 4: Hypergiant
15 |
--------------------------------------------------------------------------------
/Star Classifier/5 Class Classification of stars/model.pickle:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepraj1729/AstroML/904680d75f8fa7c50f0d661e9b9a8cc2e44b676a/Star Classifier/5 Class Classification of stars/model.pickle
--------------------------------------------------------------------------------
/Star Classifier/6 Class Classification of stars/6 class csv.csv:
--------------------------------------------------------------------------------
1 | Temperature (K),Luminosity(L/Lo),Radius(R/Ro),Absolute magnitude(Mv),Star type,Star color,Spectral Class
2 | 3068,0.0024,0.17,16.12,0,Red,M
3 | 3042,0.0005,0.1542,16.6,0,Red,M
4 | 2600,0.0003,0.102,18.7,0,Red,M
5 | 2800,0.0002,0.16,16.65,0,Red,M
6 | 1939,0.000138,0.103,20.06,0,Red,M
7 | 2840,0.00065,0.11,16.98,0,Red,M
8 | 2637,0.00073,0.127,17.22,0,Red,M
9 | 2600,0.0004,0.096,17.4,0,Red,M
10 | 2650,0.00069,0.11,17.45,0,Red,M
11 | 2700,0.00018,0.13,16.05,0,Red,M
12 | 3600,0.0029,0.51,10.69,1,Red,M
13 | 3129,0.0122,0.3761,11.79,1,Red,M
14 | 3134,0.0004,0.196,13.21,1,Red,M
15 | 3628,0.0055,0.393,10.48,1,Red,M
16 | 2650,0.0006,0.14,11.782,1,Red,M
17 | 3340,0.0038,0.24,13.07,1,Red,M
18 | 2799,0.0018,0.16,14.79,1,Red,M
19 | 3692,0.00367,0.47,10.8,1,Red,M
20 | 3192,0.00362,0.1967,13.53,1,Red,M
21 | 3441,0.039,0.351,11.18,1,Red,M
22 | 25000,0.056,0.0084,10.58,2,Blue White,B
23 | 7740,0.00049,0.01234,14.02,2,White,A
24 | 7220,0.00017,0.011,14.23,2,White,F
25 | 8500,0.0005,0.01,14.5,2,White,A
26 | 16500,0.013,0.014,11.89,2,Blue White,B
27 | 12990,0.000085,0.00984,12.23,2,Yellowish White,F
28 | 8570,0.00081,0.0097,14.2,2,Blue white,A
29 | 7700,0.00011,0.0128,14.47,2,Yellowish White,F
30 | 11790,0.00015,0.011,12.59,2,Yellowish White,F
31 | 7230,0.00008,0.013,14.08,2,Pale yellow orange,F
32 | 39000,204000,10.6,-4.7,3,Blue,O
33 | 30000,28840,6.3,-4.2,3,Blue-white,B
34 | 15276,1136,7.2,-1.97,3,Blue-white,B
35 | 9700,74,2.89,0.16,3,Whitish,B
36 | 5800,0.81,0.9,5.05,3,yellow-white,F
37 | 8052,8.7,1.8,2.42,3,Whitish,A
38 | 6757,1.43,1.12,2.41,3,yellow-white,F
39 | 6380,1.35,0.98,2.93,3,yellow-white,F
40 | 5936,1.357,1.106,4.46,3,yellow-white,F
41 | 5587,0.819,0.99,5.03,3,yellow-white,F
42 | 3826,200000,19,-6.93,4,Red,M
43 | 3365,340000,23,-6.2,4,Red,M
44 | 3270,150000,88,-6.02,4,Red,M
45 | 3200,195000,17,-7.22,4,Red,M
46 | 3008,280000,25,-6,4,Red,M
47 | 3600,320000,29,-6.6,4,Red,M
48 | 3575,123000,45,-6.78,4,Red,M
49 | 3574,200000,89,-5.24,4,Red,M
50 | 3625,184000,84,-6.74,4,Red,M
51 | 33750,220000,26,-6.1,4,Blue,B
52 | 3490,270000,1520,-9.4,5,Red,M
53 | 3750,283000,1260,-7.63,5,Red,M
54 | 3834,272000,1183,-9.2,5,Red,M
55 | 3749,550000,1648,-8.05,5,Orange,M
56 | 3650,310000,1324,-7.79,5,Red,M
57 | 3450,263000,1349,-11.75,5,Red,M
58 | 3660,363000,1673,-11.92,5,Red,M
59 | 3450,174000,1284,-11.28,5,Red,M
60 | 3752,209000,955,-11.24,5,Red,M
61 | 3535,195000,1546,-11.36,5,Red,M
62 | 3341,0.0056,0.057,16.23,0,Red,M
63 | 3432,0.00067,0.19,16.94,0,Red,M
64 | 2983,0.00024,0.094,16.09,0,Red,M
65 | 2835,0.00034,0.0918,16.96,0,Red,M
66 | 2935,0.00014,0.116,18.89,0,Red,M
67 | 3295,0.00098,0.132,17.13,0,Red,M
68 | 2945,0.00032,0.093,18.34,0,Red,M
69 | 2817,0.00098,0.0911,16.45,0,Red,M
70 | 2774,0.00036,0.118,17.39,0,Red,M
71 | 2871,0.00072,0.12,19.43,0,Red,M
72 | 3345,0.021,0.273,12.3,1,Red,M
73 | 3607,0.022,0.38,10.12,1,Red,M
74 | 3304,0.0085,0.18,13.2,1,Red,M
75 | 3150,0.0088,0.35,11.94,1,Red,M
76 | 3550,0.004,0.291,10.89,1,Red,M
77 | 3180,0.001,0.35,11.76,1,Red,M
78 | 2890,0.0034,0.24,13.46,1,Red,M
79 | 3342,0.0015,0.307,11.87,1,Red,M
80 | 2621,0.0006,0.098,12.81,1,Red,M
81 | 3158,0.00135,0.161,13.98,1,Red,M
82 | 7100,0.00029,0.012,14.09,2,White-Yellow,F
83 | 10574,0.00014,0.0092,12.02,2,White,F
84 | 8930,0.00056,0.0095,13.78,2,white,A
85 | 17200,0.00098,0.015,12.45,2,Blue White,B
86 | 14100,0.00067,0.0089,12.17,2,Blue White,B
87 | 9675,0.00045,0.0109,13.98,2,Blue White,A
88 | 12010,0.00078,0.0092,12.13,2,Blue White,B
89 | 10980,0.00074,0.0087,11.19,2,Blue White,B
90 | 13720,0.00018,0.00892,12.97,2,white,F
91 | 19860,0.0011,0.0131,11.34,2,Blue ,B
92 | 5300,0.59,0.91,5.49,3,yellow-white,F
93 | 4526,0.153,0.865,6.506,3,yellowish,K
94 | 4077,0.085,0.795,6.228,3,yellowish,K
95 | 4980,0.357,1.13,4.78,3,Yellowish,K
96 | 9030,45,2.63,1.45,3,Blue-white,A
97 | 11250,672,6.98,-2.3,3,Blue-white,A
98 | 5112,0.63,0.876,4.68,3,Orange-Red,K
99 | 7720,7.92,1.34,2.44,3,yellow-white,F
100 | 12098,689,7.01,0.02,3,Blue-white,A
101 | 36108,198000,10.2,-4.4,3,Blue,O
102 | 33300,240000,12,-6.5,4,Blue,B
103 | 40000,813000,14,-6.23,4,Blue,O
104 | 23000,127000,36,-5.76,4,Blue,O
105 | 17120,235000,83,-6.89,4,Blue,O
106 | 11096,112000,12,-5.91,4,Blue,O
107 | 14245,231000,42,-6.12,4,Blue,O
108 | 24630,363000,63,-5.83,4,Blue,O
109 | 12893,184000,36,-6.34,4,Blue,O
110 | 24345,142000,57,-6.24,4,Blue,O
111 | 33421,352000,67,-5.79,4,Blue,O
112 | 3459,100000,1289,-10.7,5,Red,M
113 | 3605,126000,1124,-10.81,5,Red,M
114 | 3615,200000,1635,-11.33,5,Red,M
115 | 3399,117000,1486,-10.92,5,Red,M
116 | 3610,132000,1522,-10.86,5,Red,M
117 | 3553,145000,1324,-11.03,5,Red,M
118 | 4015,282000,1534,-11.39,5,Red,K
119 | 3625,74000,876,-10.25,5,Red,M
120 | 6850,229000,1467,-10.07,5,Red,G
121 | 3780,200000,1324,-10.7,5,Red,M
122 | 3323,0.00043,0.0912,17.16,0,Red,M
123 | 3531,0.00093,0.0976,19.94,0,Red,M
124 | 3218,0.00054,0.11,20.02,0,Red,M
125 | 3146,0.00015,0.0932,16.92,0,Red,M
126 | 3511,0.00064,0.109,17.12,0,Red,M
127 | 3225,0.00076,0.121,19.63,0,Red,M
128 | 2935,0.00087,0.0932,16.88,0,Red,M
129 | 2861,0.00019,0.0899,16.71,0,Red,M
130 | 2856,0.000896,0.0782,19.56,0,Red,M
131 | 2731,0.000437,0.0856,18.09,0,Red,M
132 | 3095,0.00019,0.492,10.87,1,Red,M
133 | 3607,0.00023,0.38,10.34,1,Red,M
134 | 3100,0.008,0.31,11.17,1,Red,M
135 | 2989,0.0087,0.34,13.12,1,Red,M
136 | 3542,0.0009,0.62,14.23,1,Red,M
137 | 3243,0.0023,0.73,14.75,1,Red,M
138 | 3091,0.0081,0.24,11.43,1,Red,M
139 | 3598,0.0011,0.56,14.26,1,Red,M
140 | 3324,0.0034,0.34,12.23,1,Red,M
141 | 3541,0.0013,0.256,14.33,1,Red,M
142 | 13420,0.00059,0.00981,13.67,2,Blue White,B
143 | 21020,0.0015,0.0112,11.52,2,Blue,B
144 | 18290,0.0013,0.00934,12.78,2,Blue,B
145 | 14520,0.00082,0.00972,11.92,2,Blue White,B
146 | 11900,0.00067,0.00898,11.38,2,Blue white ,B
147 | 8924,0.00028,0.00879,14.87,2,Blue white,A
148 | 12912,0.00071,0.00945,12.83,2,Blue white,B
149 | 14732,0.00011,0.00892,12.89,2,white,F
150 | 7723,0.00014,0.00878,14.81,2,White,A
151 | 12984,0.00088,0.00996,11.23,2,Blue White,B
152 | 29560,188000,6.02,-4.01,3,Blue-white,B
153 | 8945,38,2.487,0.12,3,Blue-White,A
154 | 14060,1092,5.745,-2.04,3,Blue-white,A
155 | 16390,1278,5.68,-3.32,3,Blue-white,B
156 | 25070,14500,5.92,-3.98,3,Blue-white,B
157 | 28700,16790,6.4,-4.09,3,Blue-white,B
158 | 26140,14520,5.49,-3.8,3,Blue-white,B
159 | 20120,4720,6.78,-3.4,3,Blue-white,B
160 | 13023,998,6.21,-1.38,3,Blue-white,A
161 | 37800,202900,6.86,-4.56,3,Blue,O
162 | 25390,223000,57,-5.92,4,Blue,O
163 | 11567,251000,36,-6.245,4,Blue,O
164 | 12675,452000,83,-5.62,4,Blue,O
165 | 5752,245000,97,-6.63,4,Blue,O
166 | 8927,239000,35,-7.34,4,Blue,O
167 | 7282,131000,24,-7.22,4,Blue,O
168 | 19923,152000,73,-5.69,4,Blue,O
169 | 26373,198000,39,-5.83,4,Blue,O
170 | 17383,342900,30,-6.09,4,Blue,O
171 | 9373,424520,24,-5.99,4,Blue,O
172 | 3570,320000,1480,-7.58,5,Red,M
173 | 3500,138000,1420,-8.18,5,Red,M
174 | 4287,630000,1315,-9.2,5,Orange,K
175 | 26000,316000,1679,-9.1,5,Blue,B
176 | 3600,240000,1190,-7.89,5,Red,M
177 | 3614,145000,1553,-7.71,5,Red,M
178 | 18000,200000,1045,-8.3,5,Blue,O
179 | 11000,170000,1779,-9.9,5,Blue-white,B
180 | 12100,120000,708.9,-7.84,5,Blue-white,B
181 | 24490,248490,1134.5,-8.24,5,Blue-white,B
182 | 2831,0.000231,0.0915,16.21,0,Red,M
183 | 2914,0.000631,0.116,18.39,0,Red,M
184 | 3419,0.000245,0.126,17.56,0,Red,M
185 | 3218,0.000452,0.0987,17.34,0,Red,M
186 | 3453,0.000621,0.0773,17.08,0,Red,M
187 | 2889,0.000352,0.0973,16.93,0,Red,M
188 | 2968,0.000461,0.119,17.45,0,Red,M
189 | 3484,0.000551,0.0998,16.67,0,Red,M
190 | 2778,0.000849,0.112,19.45,0,Red,M
191 | 3523,0.000957,0.129,16.35,0,Red,M
192 | 3462,0.0053,0.148,11.47,1,Red,M
193 | 3257,0.0024,0.46,10.73,1,Red,M
194 | 2994,0.0072,0.28,13.45,1,Red,M
195 | 3212,0.0016,0.378,12.854,1,Red,M
196 | 3523,0.0054,0.319,12.43,1,Red,M
197 | 3598,0.0027,0.67,13.667,1,Red,M
198 | 3142,0.00132,0.258,14.12,1,Red,M
199 | 3496,0.00125,0.336,14.94,1,Red,M
200 | 3324,0.0065,0.471,12.78,1,Red,M
201 | 3463,0.0027,0.675,14.776,1,Red,M
202 | 16790,0.0014,0.0121,12.87,2,Blue,B
203 | 15680,0.00122,0.0114,11.92,2,Blue,B
204 | 14982,0.00118,0.0113,12.23,2,Blue,B
205 | 13340,0.00109,0.0116,12.9,2,Blue,B
206 | 18340,0.00134,0.0124,11.22,2,Blue,B
207 | 19920,0.00156,0.0142,11.34,2,Blue,B
208 | 24020,0.00159,0.0127,10.55,2,Blue,B
209 | 23092,0.00132,0.0104,10.18,2,Blue,B
210 | 17920,0.00111,0.0106,11.66,2,Blue,B
211 | 19360,0.00125,0.00998,11.62,2,Blue,B
212 | 22350,12450,6.36,-3.67,3,Blue-white,B
213 | 10012,552,5.856,0.013,3,Blue-white,A
214 | 13089,788,5.992,-0.12,3,Blue-white,A
215 | 22012,6748,6.64,-2.55,3,Blue-white,B
216 | 34190,198200,6.39,-4.57,3,Blue,O
217 | 32460,173800,6.237,-4.36,3,Blue,O
218 | 9320,29,1.91,1.236,3,Blue-white,A
219 | 19400,10920,6.03,-3.08,3,Blue-white,B
220 | 17140,883,5.653,-2.64,3,Blue-white,B
221 | 8250,9.25,1.93,-0.98,3,yellow-white,F
222 | 23678,244290,35,-6.27,4,Blue,O
223 | 12749,332520,76,-7.02,4,Blue,O
224 | 9383,342940,98,-6.98,4,Blue,O
225 | 23440,537430,81,-5.975,4,Blue,O
226 | 16787,246730,62,-6.35,4,Blue,O
227 | 18734,224780,46,-7.45,4,Blue,O
228 | 9892,593900,80,-7.262,4,Blue,O
229 | 10930,783930,25,-6.224,4,Blue,O
230 | 23095,347820,86,-5.905,4,Blue,O
231 | 21738,748890,92,-7.346,4,Blue,O
232 | 24145,382993,1494,-8.84,5,Blue-white,B
233 | 38234,272830,1356,-9.29,5,Blue,O
234 | 32489,648430,1948.5,-10.84,5,Blue,O
235 | 27739,849420,1252,-7.59,5,Blue-white,B
236 | 21904,748490,1130,-7.67,5,Blue-white,B
237 | 38940,374830,1356,-9.93,5,Blue,O
238 | 30839,834042,1194,-10.63,5,Blue,O
239 | 8829,537493,1423,-10.73,5,White,A
240 | 9235,404940,1112,-11.23,5,White,A
241 | 37882,294903,1783,-7.8,5,Blue,O
242 |
--------------------------------------------------------------------------------
/Star Classifier/6 Class Classification of stars/Loading_6_class_model.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "# Loading Our Trained Star Classifier model to Test on a new Dataset to Predict Star Types"
8 | ]
9 | },
10 | {
11 | "cell_type": "markdown",
12 | "metadata": {},
13 | "source": [
14 | "## Importing essential modules"
15 | ]
16 | },
17 | {
18 | "cell_type": "code",
19 | "execution_count": 1,
20 | "metadata": {},
21 | "outputs": [],
22 | "source": [
23 | "import tensorflow as tf\n",
24 | "import numpy as np\n",
25 | "from sklearn import preprocessing, model_selection\n",
26 | "import pandas as pd"
27 | ]
28 | },
29 | {
30 | "cell_type": "markdown",
31 | "metadata": {},
32 | "source": [
33 | "## Loading new dataset from a new CSV file"
34 | ]
35 | },
36 | {
37 | "cell_type": "code",
38 | "execution_count": 2,
39 | "metadata": {},
40 | "outputs": [
41 | {
42 | "data": {
43 | "text/html": [
44 | "\n",
45 | "\n",
58 | "
\n",
59 | " \n",
60 | " \n",
61 | " | \n",
62 | " Temperature (K) | \n",
63 | " Luminosity(L/Lo) | \n",
64 | " Radius(R/Ro) | \n",
65 | " Absolute magnitude(Mv) | \n",
66 | " Star Type | \n",
67 | "
\n",
68 | " \n",
69 | " \n",
70 | " \n",
71 | " 0 | \n",
72 | " 3576 | \n",
73 | " 124000.00000 | \n",
74 | " 44.0000 | \n",
75 | " -6.79 | \n",
76 | " 4 | \n",
77 | "
\n",
78 | " \n",
79 | " 1 | \n",
80 | " 3691 | \n",
81 | " 0.00366 | \n",
82 | " 0.4700 | \n",
83 | " 10.80 | \n",
84 | " 1 | \n",
85 | "
\n",
86 | " \n",
87 | " 2 | \n",
88 | " 9710 | \n",
89 | " 73.00000 | \n",
90 | " 2.8900 | \n",
91 | " 0.16 | \n",
92 | " 3 | \n",
93 | "
\n",
94 | " \n",
95 | " 3 | \n",
96 | " 7800 | \n",
97 | " 0.00011 | \n",
98 | " 0.0128 | \n",
99 | " 14.47 | \n",
100 | " 2 | \n",
101 | "
\n",
102 | " \n",
103 | " 4 | \n",
104 | " 3650 | \n",
105 | " 363000.00000 | \n",
106 | " 1673.0000 | \n",
107 | " -11.92 | \n",
108 | " 5 | \n",
109 | "
\n",
110 | " \n",
111 | "
\n",
112 | "
"
113 | ],
114 | "text/plain": [
115 | " Temperature (K) Luminosity(L/Lo) Radius(R/Ro) Absolute magnitude(Mv) \\\n",
116 | "0 3576 124000.00000 44.0000 -6.79 \n",
117 | "1 3691 0.00366 0.4700 10.80 \n",
118 | "2 9710 73.00000 2.8900 0.16 \n",
119 | "3 7800 0.00011 0.0128 14.47 \n",
120 | "4 3650 363000.00000 1673.0000 -11.92 \n",
121 | "\n",
122 | " Star Type \n",
123 | "0 4 \n",
124 | "1 1 \n",
125 | "2 3 \n",
126 | "3 2 \n",
127 | "4 5 "
128 | ]
129 | },
130 | "execution_count": 2,
131 | "metadata": {},
132 | "output_type": "execute_result"
133 | }
134 | ],
135 | "source": [
136 | "test_data = pd.read_csv('test_model_dataset.csv')\n",
137 | "test_data.head()"
138 | ]
139 | },
140 | {
141 | "cell_type": "markdown",
142 | "metadata": {},
143 | "source": [
144 | "## Seperating the \"Star Type\" Column from the dataset"
145 | ]
146 | },
147 | {
148 | "cell_type": "code",
149 | "execution_count": 3,
150 | "metadata": {},
151 | "outputs": [
152 | {
153 | "data": {
154 | "text/html": [
155 | "\n",
156 | "\n",
169 | "
\n",
170 | " \n",
171 | " \n",
172 | " | \n",
173 | " Temperature (K) | \n",
174 | " Luminosity(L/Lo) | \n",
175 | " Radius(R/Ro) | \n",
176 | " Absolute magnitude(Mv) | \n",
177 | "
\n",
178 | " \n",
179 | " \n",
180 | " \n",
181 | " 0 | \n",
182 | " 3576 | \n",
183 | " 124000.00000 | \n",
184 | " 44.0000 | \n",
185 | " -6.79 | \n",
186 | "
\n",
187 | " \n",
188 | " 1 | \n",
189 | " 3691 | \n",
190 | " 0.00366 | \n",
191 | " 0.4700 | \n",
192 | " 10.80 | \n",
193 | "
\n",
194 | " \n",
195 | " 2 | \n",
196 | " 9710 | \n",
197 | " 73.00000 | \n",
198 | " 2.8900 | \n",
199 | " 0.16 | \n",
200 | "
\n",
201 | " \n",
202 | " 3 | \n",
203 | " 7800 | \n",
204 | " 0.00011 | \n",
205 | " 0.0128 | \n",
206 | " 14.47 | \n",
207 | "
\n",
208 | " \n",
209 | " 4 | \n",
210 | " 3650 | \n",
211 | " 363000.00000 | \n",
212 | " 1673.0000 | \n",
213 | " -11.92 | \n",
214 | "
\n",
215 | " \n",
216 | "
\n",
217 | "
"
218 | ],
219 | "text/plain": [
220 | " Temperature (K) Luminosity(L/Lo) Radius(R/Ro) Absolute magnitude(Mv)\n",
221 | "0 3576 124000.00000 44.0000 -6.79\n",
222 | "1 3691 0.00366 0.4700 10.80\n",
223 | "2 9710 73.00000 2.8900 0.16\n",
224 | "3 7800 0.00011 0.0128 14.47\n",
225 | "4 3650 363000.00000 1673.0000 -11.92"
226 | ]
227 | },
228 | "execution_count": 3,
229 | "metadata": {},
230 | "output_type": "execute_result"
231 | }
232 | ],
233 | "source": [
234 | "a = test_data.drop(['Star Type'],1)\n",
235 | "a.head()"
236 | ]
237 | },
238 | {
239 | "cell_type": "markdown",
240 | "metadata": {},
241 | "source": [
242 | "## Showing the star Type Column seperately"
243 | ]
244 | },
245 | {
246 | "cell_type": "code",
247 | "execution_count": 4,
248 | "metadata": {},
249 | "outputs": [
250 | {
251 | "data": {
252 | "text/plain": [
253 | "0 4\n",
254 | "1 1\n",
255 | "2 3\n",
256 | "3 2\n",
257 | "4 5\n",
258 | "Name: Star Type, dtype: int64"
259 | ]
260 | },
261 | "execution_count": 4,
262 | "metadata": {},
263 | "output_type": "execute_result"
264 | }
265 | ],
266 | "source": [
267 | "b = test_data['Star Type']\n",
268 | "b.head()"
269 | ]
270 | },
271 | {
272 | "cell_type": "markdown",
273 | "metadata": {},
274 | "source": [
275 | "## Converting dataset into numpy arrays"
276 | ]
277 | },
278 | {
279 | "cell_type": "code",
280 | "execution_count": 5,
281 | "metadata": {},
282 | "outputs": [],
283 | "source": [
284 | "x1 = np.array(a,dtype = 'float')\n",
285 | "y1 = np.array(b)\n",
286 | "y1.shape = (len(y1),1)"
287 | ]
288 | },
289 | {
290 | "cell_type": "markdown",
291 | "metadata": {},
292 | "source": [
293 | "## Scaling The input values for better accuracy"
294 | ]
295 | },
296 | {
297 | "cell_type": "code",
298 | "execution_count": 6,
299 | "metadata": {},
300 | "outputs": [],
301 | "source": [
302 | "x2 = preprocessing.scale(x1)"
303 | ]
304 | },
305 | {
306 | "cell_type": "markdown",
307 | "metadata": {},
308 | "source": [
309 | "## Loading in our Trained Model to predict the star type of new dataset"
310 | ]
311 | },
312 | {
313 | "cell_type": "code",
314 | "execution_count": 7,
315 | "metadata": {},
316 | "outputs": [
317 | {
318 | "name": "stdout",
319 | "output_type": "stream",
320 | "text": [
321 | "WARNING:tensorflow:From C:\\Users\\User1\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\ops\\init_ops.py:97: calling GlorotUniform.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
322 | "Instructions for updating:\n",
323 | "Call initializer instance with the dtype argument instead of passing it to the constructor\n",
324 | "WARNING:tensorflow:From C:\\Users\\User1\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\ops\\init_ops.py:1251: calling VarianceScaling.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
325 | "Instructions for updating:\n",
326 | "Call initializer instance with the dtype argument instead of passing it to the constructor\n",
327 | "WARNING:tensorflow:From C:\\Users\\User1\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\ops\\init_ops.py:97: calling Zeros.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
328 | "Instructions for updating:\n",
329 | "Call initializer instance with the dtype argument instead of passing it to the constructor\n"
330 | ]
331 | }
332 | ],
333 | "source": [
334 | "model = tf.keras.models.load_model(\"Star_classifier.model\")"
335 | ]
336 | },
337 | {
338 | "cell_type": "markdown",
339 | "metadata": {},
340 | "source": [
341 | "## The Outputs to expect for each Star Type"
342 | ]
343 | },
344 | {
345 | "cell_type": "code",
346 | "execution_count": 8,
347 | "metadata": {},
348 | "outputs": [],
349 | "source": [
350 | "# [1,0,0,0,0,0] = Brown Dwarf\n",
351 | "# [0,1,0,0,0,0] = Red Dwarf\n",
352 | "# [0,0,1,0,0,0] = White Dwarf\n",
353 | "# [0,0,0,1,0,0] = Main Sequence\n",
354 | "# [0,0,0,0,1,0] = Supergiant\n",
355 | "# [0,0,0,0,0,1] = Hypergiant\n",
356 | "\n",
357 | "arr = np.array([[1,0,0,0,0,0],[0,1,0,0,0,0],[0,0,1,0,0,0],[0,0,0,1,0,0],[0,0,0,0,1,0],[0,0,0,0,0,1]])\n",
358 | "\n",
359 | "categories = [\"Brown Dwarf\",\"Red Dwarf\",\"White Dwarf\",\"Main Sequence\",\"Supergiant\",\"Hypergiant\"]"
360 | ]
361 | },
362 | {
363 | "cell_type": "markdown",
364 | "metadata": {},
365 | "source": [
366 | "## Running Trained Model to predict star type of new dataset"
367 | ]
368 | },
369 | {
370 | "cell_type": "code",
371 | "execution_count": 9,
372 | "metadata": {},
373 | "outputs": [
374 | {
375 | "name": "stdout",
376 | "output_type": "stream",
377 | "text": [
378 | "[0. 0. 0. 0. 1. 0.]\n"
379 | ]
380 | }
381 | ],
382 | "source": [
383 | "d_pred = np.round(model.predict(x2))\n",
384 | "\n",
385 | "# Predictions:\n",
386 | "print('{}'.format(d_pred[0]))"
387 | ]
388 | },
389 | {
390 | "cell_type": "markdown",
391 | "metadata": {},
392 | "source": [
393 | "## Showing the Star-Type"
394 | ]
395 | },
396 | {
397 | "cell_type": "code",
398 | "execution_count": 10,
399 | "metadata": {},
400 | "outputs": [
401 | {
402 | "name": "stdout",
403 | "output_type": "stream",
404 | "text": [
405 | "Supergiant\n"
406 | ]
407 | }
408 | ],
409 | "source": [
410 | "print(categories[np.argmax(d_pred[0])])"
411 | ]
412 | },
413 | {
414 | "cell_type": "markdown",
415 | "metadata": {},
416 | "source": [
417 | "## Showing Predictions with Star Type all at once"
418 | ]
419 | },
420 | {
421 | "cell_type": "code",
422 | "execution_count": 11,
423 | "metadata": {},
424 | "outputs": [
425 | {
426 | "name": "stdout",
427 | "output_type": "stream",
428 | "text": [
429 | " Prediction : P-Class : O-Class\n",
430 | "[0. 0. 0. 0. 1. 0.] : 4 : [4] : Supergiant\n",
431 | "[0. 1. 0. 0. 0. 0.] : 1 : [1] : Red Dwarf\n",
432 | "[0. 0. 0. 1. 0. 0.] : 3 : [3] : Main Sequence\n",
433 | "[0. 0. 1. 0. 0. 0.] : 2 : [2] : White Dwarf\n",
434 | "[0. 0. 0. 0. 0. 1.] : 5 : [5] : Hypergiant\n",
435 | "[1. 0. 0. 0. 0. 0.] : 0 : [0] : Brown Dwarf\n"
436 | ]
437 | }
438 | ],
439 | "source": [
440 | "\n",
441 | "print(\" Prediction : P-Class : O-Class\")\n",
442 | "\n",
443 | "for i in range(0,len(d_pred)):\n",
444 | " if np.array_equal(d_pred[i],arr[0]):\n",
445 | " print(\"{} : {} : {} : {}\".format(d_pred[i],0,y1[i],categories[np.argmax(d_pred[i])]))\n",
446 | " \n",
447 | " elif np.array_equal(d_pred[i],arr[1]):\n",
448 | " print(\"{} : {} : {} : {}\".format(d_pred[i],1,y1[i],categories[np.argmax(d_pred[i])]))\n",
449 | " \n",
450 | " elif np.array_equal(d_pred[i],arr[2]):\n",
451 | " print(\"{} : {} : {} : {}\".format(d_pred[i],2,y1[i],categories[np.argmax(d_pred[i])]))\n",
452 | " \n",
453 | " elif np.array_equal(d_pred[i],arr[3]):\n",
454 | " print(\"{} : {} : {} : {}\".format(d_pred[i],3,y1[i],categories[np.argmax(d_pred[i])]))\n",
455 | " \n",
456 | " elif np.array_equal(d_pred[i],arr[4]):\n",
457 | " print(\"{} : {} : {} : {}\".format(d_pred[i],4,y1[i],categories[np.argmax(d_pred[i])]))\n",
458 | " \n",
459 | " elif np.array_equal(d_pred[i],arr[5]):\n",
460 | " print(\"{} : {} : {} : {}\".format(d_pred[i],5,y1[i],categories[np.argmax(d_pred[i])]))"
461 | ]
462 | },
463 | {
464 | "cell_type": "code",
465 | "execution_count": 12,
466 | "metadata": {},
467 | "outputs": [],
468 | "source": [
469 | "# Thus it predicted the star types of future dataset of stars with high accuracy and our model is lit :)"
470 | ]
471 | }
472 | ],
473 | "metadata": {
474 | "kernelspec": {
475 | "display_name": "Python 3",
476 | "language": "python",
477 | "name": "python3"
478 | },
479 | "language_info": {
480 | "codemirror_mode": {
481 | "name": "ipython",
482 | "version": 3
483 | },
484 | "file_extension": ".py",
485 | "mimetype": "text/x-python",
486 | "name": "python",
487 | "nbconvert_exporter": "python",
488 | "pygments_lexer": "ipython3",
489 | "version": "3.7.3"
490 | }
491 | },
492 | "nbformat": 4,
493 | "nbformat_minor": 2
494 | }
495 |
--------------------------------------------------------------------------------
/Star Classifier/6 Class Classification of stars/README.md:
--------------------------------------------------------------------------------
1 | This is a Star Classifier Model (Iris Version) which uses a ML algorithm (Deep Neural Network) to classify stars based on several
2 | features such as :
3 |
4 | 1. Surface Temperature (in K)
5 | 2. Luminosity (measured with respect to that of Sun)
6 | 3. Radius (measured with respect to that of Sun)
7 | 4. Absolute Magnitude (Visual) , Mv
8 | 5. Star Color
9 | 6. Spectral Class
10 | 7. Star Type (or Class)
11 |
12 | The Star Type is what we need to predict after training a part of the dataset from 6 class csv.csv file.
13 |
14 | The star Type includes :
15 |
16 | Star Type | Corresponding Class
17 |
18 | 0 -> Brown Dwarf
19 |
20 | 1 -> Red Dwarf
21 |
22 | 2 -> White Dwarf
23 |
24 | 3 -> Main Sequence
25 |
26 | 4 -> Supergiant
27 |
28 | 5 -> Hyperginat
29 |
--------------------------------------------------------------------------------
/Star Classifier/6 Class Classification of stars/Star Classifier final version Documentation.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepraj1729/AstroML/904680d75f8fa7c50f0d661e9b9a8cc2e44b676a/Star Classifier/6 Class Classification of stars/Star Classifier final version Documentation.docx
--------------------------------------------------------------------------------
/Star Classifier/6 Class Classification of stars/Star_classifier.model:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/deepraj1729/AstroML/904680d75f8fa7c50f0d661e9b9a8cc2e44b676a/Star Classifier/6 Class Classification of stars/Star_classifier.model
--------------------------------------------------------------------------------
/Star Classifier/6 Class Classification of stars/test_model_dataset.csv:
--------------------------------------------------------------------------------
1 | Temperature (K),Luminosity(L/Lo),Radius(R/Ro),Absolute magnitude(Mv),Star Type
2 | 3576,124000,44,-6.79,4
3 | 3691,0.00366,0.47,10.8,1
4 | 9710,73,2.89,0.16,3
5 | 7800,0.00011,0.0128,14.47,2
6 | 3650,363000,1673,-11.92,5
7 | 2647,0.00073,0.127,17.22,0
8 |
--------------------------------------------------------------------------------