├── DataPreprocessing.ipynb
├── Data_preprocessing.ipynb
├── Procfile
├── README.md
├── app.py
├── car data.csv
├── index.html
├── model.pkl
├── requirements.txt
└── templates
└── index.html
/DataPreprocessing.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 1,
6 | "metadata": {},
7 | "outputs": [],
8 | "source": [
9 | "import pandas as pd"
10 | ]
11 | },
12 | {
13 | "cell_type": "code",
14 | "execution_count": 2,
15 | "metadata": {},
16 | "outputs": [],
17 | "source": [
18 | "df=pd.read_csv('car data.csv')"
19 | ]
20 | },
21 | {
22 | "cell_type": "code",
23 | "execution_count": 3,
24 | "metadata": {},
25 | "outputs": [
26 | {
27 | "data": {
28 | "text/html": [
29 | "
\n",
30 | "\n",
43 | "
\n",
44 | " \n",
45 | " \n",
46 | " | \n",
47 | " Car_Name | \n",
48 | " Year | \n",
49 | " Selling_Price | \n",
50 | " Present_Price | \n",
51 | " Kms_Driven | \n",
52 | " Fuel_Type | \n",
53 | " Seller_Type | \n",
54 | " Transmission | \n",
55 | " Owner | \n",
56 | "
\n",
57 | " \n",
58 | " \n",
59 | " \n",
60 | " 0 | \n",
61 | " ritz | \n",
62 | " 2014 | \n",
63 | " 3.35 | \n",
64 | " 5.59 | \n",
65 | " 27000 | \n",
66 | " Petrol | \n",
67 | " Dealer | \n",
68 | " Manual | \n",
69 | " 0 | \n",
70 | "
\n",
71 | " \n",
72 | " 1 | \n",
73 | " sx4 | \n",
74 | " 2013 | \n",
75 | " 4.75 | \n",
76 | " 9.54 | \n",
77 | " 43000 | \n",
78 | " Diesel | \n",
79 | " Dealer | \n",
80 | " Manual | \n",
81 | " 0 | \n",
82 | "
\n",
83 | " \n",
84 | " 2 | \n",
85 | " ciaz | \n",
86 | " 2017 | \n",
87 | " 7.25 | \n",
88 | " 9.85 | \n",
89 | " 6900 | \n",
90 | " Petrol | \n",
91 | " Dealer | \n",
92 | " Manual | \n",
93 | " 0 | \n",
94 | "
\n",
95 | " \n",
96 | " 3 | \n",
97 | " wagon r | \n",
98 | " 2011 | \n",
99 | " 2.85 | \n",
100 | " 4.15 | \n",
101 | " 5200 | \n",
102 | " Petrol | \n",
103 | " Dealer | \n",
104 | " Manual | \n",
105 | " 0 | \n",
106 | "
\n",
107 | " \n",
108 | " 4 | \n",
109 | " swift | \n",
110 | " 2014 | \n",
111 | " 4.60 | \n",
112 | " 6.87 | \n",
113 | " 42450 | \n",
114 | " Diesel | \n",
115 | " Dealer | \n",
116 | " Manual | \n",
117 | " 0 | \n",
118 | "
\n",
119 | " \n",
120 | "
\n",
121 | "
"
122 | ],
123 | "text/plain": [
124 | " Car_Name Year Selling_Price Present_Price Kms_Driven Fuel_Type \\\n",
125 | "0 ritz 2014 3.35 5.59 27000 Petrol \n",
126 | "1 sx4 2013 4.75 9.54 43000 Diesel \n",
127 | "2 ciaz 2017 7.25 9.85 6900 Petrol \n",
128 | "3 wagon r 2011 2.85 4.15 5200 Petrol \n",
129 | "4 swift 2014 4.60 6.87 42450 Diesel \n",
130 | "\n",
131 | " Seller_Type Transmission Owner \n",
132 | "0 Dealer Manual 0 \n",
133 | "1 Dealer Manual 0 \n",
134 | "2 Dealer Manual 0 \n",
135 | "3 Dealer Manual 0 \n",
136 | "4 Dealer Manual 0 "
137 | ]
138 | },
139 | "execution_count": 3,
140 | "metadata": {},
141 | "output_type": "execute_result"
142 | }
143 | ],
144 | "source": [
145 | "df.head()"
146 | ]
147 | },
148 | {
149 | "cell_type": "code",
150 | "execution_count": 4,
151 | "metadata": {},
152 | "outputs": [],
153 | "source": [
154 | "df['no_year']=2020-df['Year']"
155 | ]
156 | },
157 | {
158 | "cell_type": "code",
159 | "execution_count": 5,
160 | "metadata": {},
161 | "outputs": [
162 | {
163 | "data": {
164 | "text/html": [
165 | "\n",
166 | "\n",
179 | "
\n",
180 | " \n",
181 | " \n",
182 | " | \n",
183 | " Car_Name | \n",
184 | " Year | \n",
185 | " Selling_Price | \n",
186 | " Present_Price | \n",
187 | " Kms_Driven | \n",
188 | " Fuel_Type | \n",
189 | " Seller_Type | \n",
190 | " Transmission | \n",
191 | " Owner | \n",
192 | " no_year | \n",
193 | "
\n",
194 | " \n",
195 | " \n",
196 | " \n",
197 | " 0 | \n",
198 | " ritz | \n",
199 | " 2014 | \n",
200 | " 3.35 | \n",
201 | " 5.59 | \n",
202 | " 27000 | \n",
203 | " Petrol | \n",
204 | " Dealer | \n",
205 | " Manual | \n",
206 | " 0 | \n",
207 | " 6 | \n",
208 | "
\n",
209 | " \n",
210 | " 1 | \n",
211 | " sx4 | \n",
212 | " 2013 | \n",
213 | " 4.75 | \n",
214 | " 9.54 | \n",
215 | " 43000 | \n",
216 | " Diesel | \n",
217 | " Dealer | \n",
218 | " Manual | \n",
219 | " 0 | \n",
220 | " 7 | \n",
221 | "
\n",
222 | " \n",
223 | " 2 | \n",
224 | " ciaz | \n",
225 | " 2017 | \n",
226 | " 7.25 | \n",
227 | " 9.85 | \n",
228 | " 6900 | \n",
229 | " Petrol | \n",
230 | " Dealer | \n",
231 | " Manual | \n",
232 | " 0 | \n",
233 | " 3 | \n",
234 | "
\n",
235 | " \n",
236 | " 3 | \n",
237 | " wagon r | \n",
238 | " 2011 | \n",
239 | " 2.85 | \n",
240 | " 4.15 | \n",
241 | " 5200 | \n",
242 | " Petrol | \n",
243 | " Dealer | \n",
244 | " Manual | \n",
245 | " 0 | \n",
246 | " 9 | \n",
247 | "
\n",
248 | " \n",
249 | " 4 | \n",
250 | " swift | \n",
251 | " 2014 | \n",
252 | " 4.60 | \n",
253 | " 6.87 | \n",
254 | " 42450 | \n",
255 | " Diesel | \n",
256 | " Dealer | \n",
257 | " Manual | \n",
258 | " 0 | \n",
259 | " 6 | \n",
260 | "
\n",
261 | " \n",
262 | "
\n",
263 | "
"
264 | ],
265 | "text/plain": [
266 | " Car_Name Year Selling_Price Present_Price Kms_Driven Fuel_Type \\\n",
267 | "0 ritz 2014 3.35 5.59 27000 Petrol \n",
268 | "1 sx4 2013 4.75 9.54 43000 Diesel \n",
269 | "2 ciaz 2017 7.25 9.85 6900 Petrol \n",
270 | "3 wagon r 2011 2.85 4.15 5200 Petrol \n",
271 | "4 swift 2014 4.60 6.87 42450 Diesel \n",
272 | "\n",
273 | " Seller_Type Transmission Owner no_year \n",
274 | "0 Dealer Manual 0 6 \n",
275 | "1 Dealer Manual 0 7 \n",
276 | "2 Dealer Manual 0 3 \n",
277 | "3 Dealer Manual 0 9 \n",
278 | "4 Dealer Manual 0 6 "
279 | ]
280 | },
281 | "execution_count": 5,
282 | "metadata": {},
283 | "output_type": "execute_result"
284 | }
285 | ],
286 | "source": [
287 | "df.head()"
288 | ]
289 | },
290 | {
291 | "cell_type": "code",
292 | "execution_count": 6,
293 | "metadata": {},
294 | "outputs": [],
295 | "source": [
296 | "df.drop(['Car_Name','Year'],axis=1,inplace=True)"
297 | ]
298 | },
299 | {
300 | "cell_type": "code",
301 | "execution_count": 7,
302 | "metadata": {},
303 | "outputs": [
304 | {
305 | "data": {
306 | "text/html": [
307 | "\n",
308 | "\n",
321 | "
\n",
322 | " \n",
323 | " \n",
324 | " | \n",
325 | " Selling_Price | \n",
326 | " Present_Price | \n",
327 | " Kms_Driven | \n",
328 | " Fuel_Type | \n",
329 | " Seller_Type | \n",
330 | " Transmission | \n",
331 | " Owner | \n",
332 | " no_year | \n",
333 | "
\n",
334 | " \n",
335 | " \n",
336 | " \n",
337 | " 0 | \n",
338 | " 3.35 | \n",
339 | " 5.59 | \n",
340 | " 27000 | \n",
341 | " Petrol | \n",
342 | " Dealer | \n",
343 | " Manual | \n",
344 | " 0 | \n",
345 | " 6 | \n",
346 | "
\n",
347 | " \n",
348 | " 1 | \n",
349 | " 4.75 | \n",
350 | " 9.54 | \n",
351 | " 43000 | \n",
352 | " Diesel | \n",
353 | " Dealer | \n",
354 | " Manual | \n",
355 | " 0 | \n",
356 | " 7 | \n",
357 | "
\n",
358 | " \n",
359 | " 2 | \n",
360 | " 7.25 | \n",
361 | " 9.85 | \n",
362 | " 6900 | \n",
363 | " Petrol | \n",
364 | " Dealer | \n",
365 | " Manual | \n",
366 | " 0 | \n",
367 | " 3 | \n",
368 | "
\n",
369 | " \n",
370 | " 3 | \n",
371 | " 2.85 | \n",
372 | " 4.15 | \n",
373 | " 5200 | \n",
374 | " Petrol | \n",
375 | " Dealer | \n",
376 | " Manual | \n",
377 | " 0 | \n",
378 | " 9 | \n",
379 | "
\n",
380 | " \n",
381 | " 4 | \n",
382 | " 4.60 | \n",
383 | " 6.87 | \n",
384 | " 42450 | \n",
385 | " Diesel | \n",
386 | " Dealer | \n",
387 | " Manual | \n",
388 | " 0 | \n",
389 | " 6 | \n",
390 | "
\n",
391 | " \n",
392 | "
\n",
393 | "
"
394 | ],
395 | "text/plain": [
396 | " Selling_Price Present_Price Kms_Driven Fuel_Type Seller_Type \\\n",
397 | "0 3.35 5.59 27000 Petrol Dealer \n",
398 | "1 4.75 9.54 43000 Diesel Dealer \n",
399 | "2 7.25 9.85 6900 Petrol Dealer \n",
400 | "3 2.85 4.15 5200 Petrol Dealer \n",
401 | "4 4.60 6.87 42450 Diesel Dealer \n",
402 | "\n",
403 | " Transmission Owner no_year \n",
404 | "0 Manual 0 6 \n",
405 | "1 Manual 0 7 \n",
406 | "2 Manual 0 3 \n",
407 | "3 Manual 0 9 \n",
408 | "4 Manual 0 6 "
409 | ]
410 | },
411 | "execution_count": 7,
412 | "metadata": {},
413 | "output_type": "execute_result"
414 | }
415 | ],
416 | "source": [
417 | "df.head()"
418 | ]
419 | },
420 | {
421 | "cell_type": "code",
422 | "execution_count": 8,
423 | "metadata": {},
424 | "outputs": [],
425 | "source": [
426 | "df=pd.get_dummies(df)"
427 | ]
428 | },
429 | {
430 | "cell_type": "code",
431 | "execution_count": 9,
432 | "metadata": {},
433 | "outputs": [
434 | {
435 | "data": {
436 | "text/html": [
437 | "\n",
438 | "\n",
451 | "
\n",
452 | " \n",
453 | " \n",
454 | " | \n",
455 | " Selling_Price | \n",
456 | " Present_Price | \n",
457 | " Kms_Driven | \n",
458 | " Owner | \n",
459 | " no_year | \n",
460 | " Fuel_Type_CNG | \n",
461 | " Fuel_Type_Diesel | \n",
462 | " Fuel_Type_Petrol | \n",
463 | " Seller_Type_Dealer | \n",
464 | " Seller_Type_Individual | \n",
465 | " Transmission_Automatic | \n",
466 | " Transmission_Manual | \n",
467 | "
\n",
468 | " \n",
469 | " \n",
470 | " \n",
471 | " 0 | \n",
472 | " 3.35 | \n",
473 | " 5.59 | \n",
474 | " 27000 | \n",
475 | " 0 | \n",
476 | " 6 | \n",
477 | " 0 | \n",
478 | " 0 | \n",
479 | " 1 | \n",
480 | " 1 | \n",
481 | " 0 | \n",
482 | " 0 | \n",
483 | " 1 | \n",
484 | "
\n",
485 | " \n",
486 | " 1 | \n",
487 | " 4.75 | \n",
488 | " 9.54 | \n",
489 | " 43000 | \n",
490 | " 0 | \n",
491 | " 7 | \n",
492 | " 0 | \n",
493 | " 1 | \n",
494 | " 0 | \n",
495 | " 1 | \n",
496 | " 0 | \n",
497 | " 0 | \n",
498 | " 1 | \n",
499 | "
\n",
500 | " \n",
501 | " 2 | \n",
502 | " 7.25 | \n",
503 | " 9.85 | \n",
504 | " 6900 | \n",
505 | " 0 | \n",
506 | " 3 | \n",
507 | " 0 | \n",
508 | " 0 | \n",
509 | " 1 | \n",
510 | " 1 | \n",
511 | " 0 | \n",
512 | " 0 | \n",
513 | " 1 | \n",
514 | "
\n",
515 | " \n",
516 | " 3 | \n",
517 | " 2.85 | \n",
518 | " 4.15 | \n",
519 | " 5200 | \n",
520 | " 0 | \n",
521 | " 9 | \n",
522 | " 0 | \n",
523 | " 0 | \n",
524 | " 1 | \n",
525 | " 1 | \n",
526 | " 0 | \n",
527 | " 0 | \n",
528 | " 1 | \n",
529 | "
\n",
530 | " \n",
531 | " 4 | \n",
532 | " 4.60 | \n",
533 | " 6.87 | \n",
534 | " 42450 | \n",
535 | " 0 | \n",
536 | " 6 | \n",
537 | " 0 | \n",
538 | " 1 | \n",
539 | " 0 | \n",
540 | " 1 | \n",
541 | " 0 | \n",
542 | " 0 | \n",
543 | " 1 | \n",
544 | "
\n",
545 | " \n",
546 | "
\n",
547 | "
"
548 | ],
549 | "text/plain": [
550 | " Selling_Price Present_Price Kms_Driven Owner no_year Fuel_Type_CNG \\\n",
551 | "0 3.35 5.59 27000 0 6 0 \n",
552 | "1 4.75 9.54 43000 0 7 0 \n",
553 | "2 7.25 9.85 6900 0 3 0 \n",
554 | "3 2.85 4.15 5200 0 9 0 \n",
555 | "4 4.60 6.87 42450 0 6 0 \n",
556 | "\n",
557 | " Fuel_Type_Diesel Fuel_Type_Petrol Seller_Type_Dealer \\\n",
558 | "0 0 1 1 \n",
559 | "1 1 0 1 \n",
560 | "2 0 1 1 \n",
561 | "3 0 1 1 \n",
562 | "4 1 0 1 \n",
563 | "\n",
564 | " Seller_Type_Individual Transmission_Automatic Transmission_Manual \n",
565 | "0 0 0 1 \n",
566 | "1 0 0 1 \n",
567 | "2 0 0 1 \n",
568 | "3 0 0 1 \n",
569 | "4 0 0 1 "
570 | ]
571 | },
572 | "execution_count": 9,
573 | "metadata": {},
574 | "output_type": "execute_result"
575 | }
576 | ],
577 | "source": [
578 | "df.head()"
579 | ]
580 | },
581 | {
582 | "cell_type": "code",
583 | "execution_count": 10,
584 | "metadata": {},
585 | "outputs": [],
586 | "source": [
587 | "x=df.drop('Selling_Price',axis=1)\n",
588 | "y=df['Selling_Price']"
589 | ]
590 | },
591 | {
592 | "cell_type": "code",
593 | "execution_count": 11,
594 | "metadata": {},
595 | "outputs": [
596 | {
597 | "data": {
598 | "text/html": [
599 | "\n",
600 | "\n",
613 | "
\n",
614 | " \n",
615 | " \n",
616 | " | \n",
617 | " Present_Price | \n",
618 | " Kms_Driven | \n",
619 | " Owner | \n",
620 | " no_year | \n",
621 | " Fuel_Type_CNG | \n",
622 | " Fuel_Type_Diesel | \n",
623 | " Fuel_Type_Petrol | \n",
624 | " Seller_Type_Dealer | \n",
625 | " Seller_Type_Individual | \n",
626 | " Transmission_Automatic | \n",
627 | " Transmission_Manual | \n",
628 | "
\n",
629 | " \n",
630 | " \n",
631 | " \n",
632 | " 0 | \n",
633 | " 5.59 | \n",
634 | " 27000 | \n",
635 | " 0 | \n",
636 | " 6 | \n",
637 | " 0 | \n",
638 | " 0 | \n",
639 | " 1 | \n",
640 | " 1 | \n",
641 | " 0 | \n",
642 | " 0 | \n",
643 | " 1 | \n",
644 | "
\n",
645 | " \n",
646 | " 1 | \n",
647 | " 9.54 | \n",
648 | " 43000 | \n",
649 | " 0 | \n",
650 | " 7 | \n",
651 | " 0 | \n",
652 | " 1 | \n",
653 | " 0 | \n",
654 | " 1 | \n",
655 | " 0 | \n",
656 | " 0 | \n",
657 | " 1 | \n",
658 | "
\n",
659 | " \n",
660 | " 2 | \n",
661 | " 9.85 | \n",
662 | " 6900 | \n",
663 | " 0 | \n",
664 | " 3 | \n",
665 | " 0 | \n",
666 | " 0 | \n",
667 | " 1 | \n",
668 | " 1 | \n",
669 | " 0 | \n",
670 | " 0 | \n",
671 | " 1 | \n",
672 | "
\n",
673 | " \n",
674 | " 3 | \n",
675 | " 4.15 | \n",
676 | " 5200 | \n",
677 | " 0 | \n",
678 | " 9 | \n",
679 | " 0 | \n",
680 | " 0 | \n",
681 | " 1 | \n",
682 | " 1 | \n",
683 | " 0 | \n",
684 | " 0 | \n",
685 | " 1 | \n",
686 | "
\n",
687 | " \n",
688 | " 4 | \n",
689 | " 6.87 | \n",
690 | " 42450 | \n",
691 | " 0 | \n",
692 | " 6 | \n",
693 | " 0 | \n",
694 | " 1 | \n",
695 | " 0 | \n",
696 | " 1 | \n",
697 | " 0 | \n",
698 | " 0 | \n",
699 | " 1 | \n",
700 | "
\n",
701 | " \n",
702 | "
\n",
703 | "
"
704 | ],
705 | "text/plain": [
706 | " Present_Price Kms_Driven Owner no_year Fuel_Type_CNG Fuel_Type_Diesel \\\n",
707 | "0 5.59 27000 0 6 0 0 \n",
708 | "1 9.54 43000 0 7 0 1 \n",
709 | "2 9.85 6900 0 3 0 0 \n",
710 | "3 4.15 5200 0 9 0 0 \n",
711 | "4 6.87 42450 0 6 0 1 \n",
712 | "\n",
713 | " Fuel_Type_Petrol Seller_Type_Dealer Seller_Type_Individual \\\n",
714 | "0 1 1 0 \n",
715 | "1 0 1 0 \n",
716 | "2 1 1 0 \n",
717 | "3 1 1 0 \n",
718 | "4 0 1 0 \n",
719 | "\n",
720 | " Transmission_Automatic Transmission_Manual \n",
721 | "0 0 1 \n",
722 | "1 0 1 \n",
723 | "2 0 1 \n",
724 | "3 0 1 \n",
725 | "4 0 1 "
726 | ]
727 | },
728 | "execution_count": 11,
729 | "metadata": {},
730 | "output_type": "execute_result"
731 | }
732 | ],
733 | "source": [
734 | "x.head()"
735 | ]
736 | },
737 | {
738 | "cell_type": "code",
739 | "execution_count": 12,
740 | "metadata": {},
741 | "outputs": [
742 | {
743 | "data": {
744 | "text/plain": [
745 | "0 3.35\n",
746 | "1 4.75\n",
747 | "2 7.25\n",
748 | "3 2.85\n",
749 | "4 4.60\n",
750 | "Name: Selling_Price, dtype: float64"
751 | ]
752 | },
753 | "execution_count": 12,
754 | "metadata": {},
755 | "output_type": "execute_result"
756 | }
757 | ],
758 | "source": [
759 | "y.head()"
760 | ]
761 | },
762 | {
763 | "cell_type": "code",
764 | "execution_count": 13,
765 | "metadata": {},
766 | "outputs": [],
767 | "source": [
768 | "from sklearn.model_selection import train_test_split"
769 | ]
770 | },
771 | {
772 | "cell_type": "code",
773 | "execution_count": 14,
774 | "metadata": {},
775 | "outputs": [],
776 | "source": [
777 | "x_train, x_test, y_train, y_test = train_test_split(x,y,random_state=5)"
778 | ]
779 | },
780 | {
781 | "cell_type": "code",
782 | "execution_count": 15,
783 | "metadata": {},
784 | "outputs": [
785 | {
786 | "data": {
787 | "text/plain": [
788 | "((225, 11), (225,))"
789 | ]
790 | },
791 | "execution_count": 15,
792 | "metadata": {},
793 | "output_type": "execute_result"
794 | }
795 | ],
796 | "source": [
797 | "x_train.shape , y_train.shape"
798 | ]
799 | },
800 | {
801 | "cell_type": "code",
802 | "execution_count": 16,
803 | "metadata": {},
804 | "outputs": [],
805 | "source": [
806 | "from sklearn.linear_model import LinearRegression"
807 | ]
808 | },
809 | {
810 | "cell_type": "code",
811 | "execution_count": 17,
812 | "metadata": {},
813 | "outputs": [
814 | {
815 | "data": {
816 | "text/plain": [
817 | "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)"
818 | ]
819 | },
820 | "execution_count": 17,
821 | "metadata": {},
822 | "output_type": "execute_result"
823 | }
824 | ],
825 | "source": [
826 | "lr=LinearRegression()\n",
827 | "lr.fit(x_train,y_train)"
828 | ]
829 | },
830 | {
831 | "cell_type": "code",
832 | "execution_count": 18,
833 | "metadata": {},
834 | "outputs": [],
835 | "source": [
836 | "prediction = lr.predict(x_test)"
837 | ]
838 | },
839 | {
840 | "cell_type": "code",
841 | "execution_count": 19,
842 | "metadata": {},
843 | "outputs": [],
844 | "source": [
845 | "import matplotlib.pyplot as plt\n",
846 | "import seaborn as sns"
847 | ]
848 | },
849 | {
850 | "cell_type": "code",
851 | "execution_count": 20,
852 | "metadata": {},
853 | "outputs": [
854 | {
855 | "data": {
856 | "text/plain": [
857 | ""
858 | ]
859 | },
860 | "execution_count": 20,
861 | "metadata": {},
862 | "output_type": "execute_result"
863 | },
864 | {
865 | "data": {
866 | "image/png": "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\n",
867 | "text/plain": [
868 | ""
869 | ]
870 | },
871 | "metadata": {
872 | "needs_background": "light"
873 | },
874 | "output_type": "display_data"
875 | }
876 | ],
877 | "source": [
878 | "plt.scatter(y_test,prediction)"
879 | ]
880 | },
881 | {
882 | "cell_type": "code",
883 | "execution_count": 21,
884 | "metadata": {},
885 | "outputs": [
886 | {
887 | "data": {
888 | "text/plain": [
889 | ""
890 | ]
891 | },
892 | "execution_count": 21,
893 | "metadata": {},
894 | "output_type": "execute_result"
895 | },
896 | {
897 | "data": {
898 | "image/png": "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\n",
899 | "text/plain": [
900 | ""
901 | ]
902 | },
903 | "metadata": {
904 | "needs_background": "light"
905 | },
906 | "output_type": "display_data"
907 | }
908 | ],
909 | "source": [
910 | "sns.distplot(y_test-prediction)"
911 | ]
912 | },
913 | {
914 | "cell_type": "code",
915 | "execution_count": 22,
916 | "metadata": {},
917 | "outputs": [],
918 | "source": [
919 | "from sklearn import metrics\n",
920 | "import numpy as np"
921 | ]
922 | },
923 | {
924 | "cell_type": "code",
925 | "execution_count": 23,
926 | "metadata": {},
927 | "outputs": [
928 | {
929 | "name": "stdout",
930 | "output_type": "stream",
931 | "text": [
932 | "MAE: 1.140996108785903\n",
933 | "MSE: 3.2815963416575036\n",
934 | "RMSE: 1.8115176901309862\n",
935 | "R squared: 0.8608525898499443\n"
936 | ]
937 | }
938 | ],
939 | "source": [
940 | "print('MAE: ',metrics.mean_absolute_error(y_test,prediction))\n",
941 | "print('MSE: ',metrics.mean_squared_error(y_test,prediction))\n",
942 | "print('RMSE: ',np.sqrt(metrics.mean_squared_error(y_test,prediction)))\n",
943 | "print('R squared: ',metrics.r2_score(y_test,prediction))"
944 | ]
945 | },
946 | {
947 | "cell_type": "code",
948 | "execution_count": 25,
949 | "metadata": {},
950 | "outputs": [],
951 | "source": [
952 | "from sklearn.linear_model import Ridge"
953 | ]
954 | },
955 | {
956 | "cell_type": "code",
957 | "execution_count": 26,
958 | "metadata": {},
959 | "outputs": [],
960 | "source": [
961 | "ridge=Ridge()\n",
962 | "ridge.fit(x_train,y_train)\n",
963 | "prediction = ridge.predict(x_test)"
964 | ]
965 | },
966 | {
967 | "cell_type": "code",
968 | "execution_count": 27,
969 | "metadata": {},
970 | "outputs": [
971 | {
972 | "name": "stdout",
973 | "output_type": "stream",
974 | "text": [
975 | "MAE: 1.1332339163458571\n",
976 | "MSE: 3.2738266436526455\n",
977 | "RMSE: 1.8093718920256956\n",
978 | "R squared: 0.8611820433361332\n"
979 | ]
980 | }
981 | ],
982 | "source": [
983 | "print('MAE: ',metrics.mean_absolute_error(y_test,prediction))\n",
984 | "print('MSE: ',metrics.mean_squared_error(y_test,prediction))\n",
985 | "print('RMSE: ',np.sqrt(metrics.mean_squared_error(y_test,prediction)))\n",
986 | "print('R squared: ',metrics.r2_score(y_test,prediction))"
987 | ]
988 | },
989 | {
990 | "cell_type": "code",
991 | "execution_count": 28,
992 | "metadata": {},
993 | "outputs": [],
994 | "source": [
995 | "from sklearn.linear_model import Lasso"
996 | ]
997 | },
998 | {
999 | "cell_type": "code",
1000 | "execution_count": 29,
1001 | "metadata": {},
1002 | "outputs": [
1003 | {
1004 | "name": "stdout",
1005 | "output_type": "stream",
1006 | "text": [
1007 | "MAE: 1.3349151159008392\n",
1008 | "MSE: 4.47313681445178\n",
1009 | "RMSE: 2.1149791522499175\n",
1010 | "R squared: 0.8103284687770421\n"
1011 | ]
1012 | }
1013 | ],
1014 | "source": [
1015 | "ridge=Lasso()\n",
1016 | "ridge.fit(x_train,y_train)\n",
1017 | "prediction = ridge.predict(x_test)\n",
1018 | "print('MAE: ',metrics.mean_absolute_error(y_test,prediction))\n",
1019 | "print('MSE: ',metrics.mean_squared_error(y_test,prediction))\n",
1020 | "print('RMSE: ',np.sqrt(metrics.mean_squared_error(y_test,prediction)))\n",
1021 | "print('R squared: ',metrics.r2_score(y_test,prediction))"
1022 | ]
1023 | },
1024 | {
1025 | "cell_type": "code",
1026 | "execution_count": 30,
1027 | "metadata": {},
1028 | "outputs": [],
1029 | "source": [
1030 | "from sklearn.model_selection import RandomizedSearchCV,GridSearchCV"
1031 | ]
1032 | },
1033 | {
1034 | "cell_type": "code",
1035 | "execution_count": 31,
1036 | "metadata": {},
1037 | "outputs": [
1038 | {
1039 | "name": "stdout",
1040 | "output_type": "stream",
1041 | "text": [
1042 | "MAE: 1.1187640189415795\n",
1043 | "MSE: 3.2349381933942647\n",
1044 | "RMSE: 1.798593393014181\n",
1045 | "R squared: 0.8628310051750747\n"
1046 | ]
1047 | },
1048 | {
1049 | "name": "stderr",
1050 | "output_type": "stream",
1051 | "text": [
1052 | "C:\\Users\\DELL\\anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:281: UserWarning: The total space of parameters 2 is smaller than n_iter=10. Running 2 iterations. For exhaustive searches, use GridSearchCV.\n",
1053 | " % (grid_size, self.n_iter, grid_size), UserWarning)\n"
1054 | ]
1055 | }
1056 | ],
1057 | "source": [
1058 | "r=Ridge()\n",
1059 | "parameters={'alpha':[1,20]}\n",
1060 | "l=RandomizedSearchCV(r,parameters,scoring=\"neg_mean_squared_error\",cv=5)\n",
1061 | "l.fit(x_train,y_train)\n",
1062 | "prediction = l.predict(x_test)\n",
1063 | "print('MAE: ',metrics.mean_absolute_error(y_test,prediction))\n",
1064 | "print('MSE: ',metrics.mean_squared_error(y_test,prediction))\n",
1065 | "print('RMSE: ',np.sqrt(metrics.mean_squared_error(y_test,prediction)))\n",
1066 | "print('R squared: ',metrics.r2_score(y_test,prediction))"
1067 | ]
1068 | },
1069 | {
1070 | "cell_type": "code",
1071 | "execution_count": 32,
1072 | "metadata": {},
1073 | "outputs": [
1074 | {
1075 | "name": "stdout",
1076 | "output_type": "stream",
1077 | "text": [
1078 | "MAE: 1.1194605545945522\n",
1079 | "MSE: 3.235117272776871\n",
1080 | "RMSE: 1.798643175501153\n",
1081 | "R squared: 0.8628234117876782\n"
1082 | ]
1083 | }
1084 | ],
1085 | "source": [
1086 | "r=Ridge()\n",
1087 | "parameters={'alpha':[1000,100,30,40,50]}\n",
1088 | "l=GridSearchCV(r,parameters,scoring=\"neg_mean_squared_error\",cv=5)\n",
1089 | "l.fit(x_train,y_train)\n",
1090 | "prediction = l.predict(x_test)\n",
1091 | "print('MAE: ',metrics.mean_absolute_error(y_test,prediction))\n",
1092 | "print('MSE: ',metrics.mean_squared_error(y_test,prediction))\n",
1093 | "print('RMSE: ',np.sqrt(metrics.mean_squared_error(y_test,prediction)))\n",
1094 | "print('R squared: ',metrics.r2_score(y_test,prediction))"
1095 | ]
1096 | },
1097 | {
1098 | "cell_type": "code",
1099 | "execution_count": 33,
1100 | "metadata": {},
1101 | "outputs": [
1102 | {
1103 | "data": {
1104 | "text/plain": [
1105 | "{'alpha': 30}"
1106 | ]
1107 | },
1108 | "execution_count": 33,
1109 | "metadata": {},
1110 | "output_type": "execute_result"
1111 | }
1112 | ],
1113 | "source": [
1114 | "l.best_params_"
1115 | ]
1116 | },
1117 | {
1118 | "cell_type": "code",
1119 | "execution_count": 24,
1120 | "metadata": {},
1121 | "outputs": [],
1122 | "source": [
1123 | "from sklearn.ensemble import RandomForestRegressor"
1124 | ]
1125 | },
1126 | {
1127 | "cell_type": "code",
1128 | "execution_count": 35,
1129 | "metadata": {},
1130 | "outputs": [],
1131 | "source": [
1132 | "n_estimators = [int(x) for x in np.linspace(start = 200, stop = 2000, num = 10)]\n",
1133 | "# Number of features to consider at every split\n",
1134 | "max_features = ['auto', 'sqrt']\n",
1135 | "# Maximum number of levels in tree\n",
1136 | "max_depth = [int(x) for x in np.linspace(10, 110, num = 11)]\n",
1137 | "max_depth.append(None)\n",
1138 | "# Minimum number of samples required to split a node\n",
1139 | "min_samples_split = [2, 5, 10]\n",
1140 | "# Minimum number of samples required at each leaf node\n",
1141 | "min_samples_leaf = [1, 2, 4]\n",
1142 | "# Method of selecting samples for training each tree\n",
1143 | "bootstrap = [True, False]\n",
1144 | "# Create the random grid\n",
1145 | "random_grid = {'n_estimators': n_estimators,\n",
1146 | " 'max_features': max_features,\n",
1147 | " 'max_depth': max_depth,\n",
1148 | " 'min_samples_split': min_samples_split,\n",
1149 | " 'min_samples_leaf': min_samples_leaf,\n",
1150 | " 'bootstrap': bootstrap}"
1151 | ]
1152 | },
1153 | {
1154 | "cell_type": "code",
1155 | "execution_count": 49,
1156 | "metadata": {},
1157 | "outputs": [
1158 | {
1159 | "name": "stdout",
1160 | "output_type": "stream",
1161 | "text": [
1162 | "Fitting 3 folds for each of 100 candidates, totalling 300 fits\n"
1163 | ]
1164 | },
1165 | {
1166 | "name": "stderr",
1167 | "output_type": "stream",
1168 | "text": [
1169 | "[Parallel(n_jobs=-1)]: Using backend LokyBackend with 4 concurrent workers.\n",
1170 | "[Parallel(n_jobs=-1)]: Done 33 tasks | elapsed: 35.2s\n",
1171 | "[Parallel(n_jobs=-1)]: Done 154 tasks | elapsed: 2.7min\n",
1172 | "[Parallel(n_jobs=-1)]: Done 300 out of 300 | elapsed: 5.0min finished\n"
1173 | ]
1174 | },
1175 | {
1176 | "name": "stdout",
1177 | "output_type": "stream",
1178 | "text": [
1179 | "MAE: 0.565409210526331\n",
1180 | "MSE: 1.071250076830035\n",
1181 | "RMSE: 1.0350121143397477\n",
1182 | "R squared: 0.9545764748937227\n"
1183 | ]
1184 | }
1185 | ],
1186 | "source": [
1187 | "r=RandomForestRegressor(n_estimators=100)\n",
1188 | "rf = RandomForestRegressor()\n",
1189 | "rf_random = RandomizedSearchCV(estimator = rf, param_distributions = random_grid, n_iter = 100, cv = 3, verbose=2, random_state=42, n_jobs = -1)\n",
1190 | "rf_random.fit(x_train,y_train)\n",
1191 | "prediction = rf_random.predict(x_test)\n",
1192 | "print('MAE: ',metrics.mean_absolute_error(y_test,prediction))\n",
1193 | "print('MSE: ',metrics.mean_squared_error(y_test,prediction))\n",
1194 | "print('RMSE: ',np.sqrt(metrics.mean_squared_error(y_test,prediction)))\n",
1195 | "print('R squared: ',metrics.r2_score(y_test,prediction))"
1196 | ]
1197 | },
1198 | {
1199 | "cell_type": "code",
1200 | "execution_count": 36,
1201 | "metadata": {},
1202 | "outputs": [
1203 | {
1204 | "name": "stdout",
1205 | "output_type": "stream",
1206 | "text": [
1207 | "MAE: 0.49281447368421116\n",
1208 | "MSE: 0.603024184078948\n",
1209 | "RMSE: 0.7765463180512467\n",
1210 | "R squared: 0.9744303550051941\n"
1211 | ]
1212 | }
1213 | ],
1214 | "source": [
1215 | "r=RandomForestRegressor(n_estimators=100)\n",
1216 | "\n",
1217 | "r.fit(x_train,y_train)\n",
1218 | "prediction = r.predict(x_test)\n",
1219 | "print('MAE: ',metrics.mean_absolute_error(y_test,prediction))\n",
1220 | "print('MSE: ',metrics.mean_squared_error(y_test,prediction))\n",
1221 | "print('RMSE: ',np.sqrt(metrics.mean_squared_error(y_test,prediction)))\n",
1222 | "print('R squared: ',metrics.r2_score(y_test,prediction))"
1223 | ]
1224 | },
1225 | {
1226 | "cell_type": "code",
1227 | "execution_count": 38,
1228 | "metadata": {},
1229 | "outputs": [],
1230 | "source": [
1231 | "import pickle \n",
1232 | "pickle.dump(r,open('model.pkl','wb'))"
1233 | ]
1234 | },
1235 | {
1236 | "cell_type": "code",
1237 | "execution_count": null,
1238 | "metadata": {},
1239 | "outputs": [],
1240 | "source": []
1241 | }
1242 | ],
1243 | "metadata": {
1244 | "kernelspec": {
1245 | "display_name": "Python 3",
1246 | "language": "python",
1247 | "name": "python3"
1248 | },
1249 | "language_info": {
1250 | "codemirror_mode": {
1251 | "name": "ipython",
1252 | "version": 3
1253 | },
1254 | "file_extension": ".py",
1255 | "mimetype": "text/x-python",
1256 | "name": "python",
1257 | "nbconvert_exporter": "python",
1258 | "pygments_lexer": "ipython3",
1259 | "version": "3.7.6"
1260 | }
1261 | },
1262 | "nbformat": 4,
1263 | "nbformat_minor": 4
1264 | }
1265 |
--------------------------------------------------------------------------------
/Data_preprocessing.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 1,
6 | "metadata": {},
7 | "outputs": [],
8 | "source": [
9 | "import pandas as pd"
10 | ]
11 | },
12 | {
13 | "cell_type": "code",
14 | "execution_count": 2,
15 | "metadata": {},
16 | "outputs": [],
17 | "source": [
18 | "df=pd.read_csv('car data.csv')"
19 | ]
20 | },
21 | {
22 | "cell_type": "code",
23 | "execution_count": 3,
24 | "metadata": {},
25 | "outputs": [
26 | {
27 | "data": {
28 | "text/html": [
29 | "\n",
30 | "\n",
43 | "
\n",
44 | " \n",
45 | " \n",
46 | " | \n",
47 | " Car_Name | \n",
48 | " Year | \n",
49 | " Selling_Price | \n",
50 | " Present_Price | \n",
51 | " Kms_Driven | \n",
52 | " Fuel_Type | \n",
53 | " Seller_Type | \n",
54 | " Transmission | \n",
55 | " Owner | \n",
56 | "
\n",
57 | " \n",
58 | " \n",
59 | " \n",
60 | " 0 | \n",
61 | " ritz | \n",
62 | " 2014 | \n",
63 | " 3.35 | \n",
64 | " 5.59 | \n",
65 | " 27000 | \n",
66 | " Petrol | \n",
67 | " Dealer | \n",
68 | " Manual | \n",
69 | " 0 | \n",
70 | "
\n",
71 | " \n",
72 | " 1 | \n",
73 | " sx4 | \n",
74 | " 2013 | \n",
75 | " 4.75 | \n",
76 | " 9.54 | \n",
77 | " 43000 | \n",
78 | " Diesel | \n",
79 | " Dealer | \n",
80 | " Manual | \n",
81 | " 0 | \n",
82 | "
\n",
83 | " \n",
84 | " 2 | \n",
85 | " ciaz | \n",
86 | " 2017 | \n",
87 | " 7.25 | \n",
88 | " 9.85 | \n",
89 | " 6900 | \n",
90 | " Petrol | \n",
91 | " Dealer | \n",
92 | " Manual | \n",
93 | " 0 | \n",
94 | "
\n",
95 | " \n",
96 | " 3 | \n",
97 | " wagon r | \n",
98 | " 2011 | \n",
99 | " 2.85 | \n",
100 | " 4.15 | \n",
101 | " 5200 | \n",
102 | " Petrol | \n",
103 | " Dealer | \n",
104 | " Manual | \n",
105 | " 0 | \n",
106 | "
\n",
107 | " \n",
108 | " 4 | \n",
109 | " swift | \n",
110 | " 2014 | \n",
111 | " 4.60 | \n",
112 | " 6.87 | \n",
113 | " 42450 | \n",
114 | " Diesel | \n",
115 | " Dealer | \n",
116 | " Manual | \n",
117 | " 0 | \n",
118 | "
\n",
119 | " \n",
120 | "
\n",
121 | "
"
122 | ],
123 | "text/plain": [
124 | " Car_Name Year Selling_Price Present_Price Kms_Driven Fuel_Type \\\n",
125 | "0 ritz 2014 3.35 5.59 27000 Petrol \n",
126 | "1 sx4 2013 4.75 9.54 43000 Diesel \n",
127 | "2 ciaz 2017 7.25 9.85 6900 Petrol \n",
128 | "3 wagon r 2011 2.85 4.15 5200 Petrol \n",
129 | "4 swift 2014 4.60 6.87 42450 Diesel \n",
130 | "\n",
131 | " Seller_Type Transmission Owner \n",
132 | "0 Dealer Manual 0 \n",
133 | "1 Dealer Manual 0 \n",
134 | "2 Dealer Manual 0 \n",
135 | "3 Dealer Manual 0 \n",
136 | "4 Dealer Manual 0 "
137 | ]
138 | },
139 | "execution_count": 3,
140 | "metadata": {},
141 | "output_type": "execute_result"
142 | }
143 | ],
144 | "source": [
145 | "df.head()"
146 | ]
147 | },
148 | {
149 | "cell_type": "code",
150 | "execution_count": 4,
151 | "metadata": {},
152 | "outputs": [],
153 | "source": [
154 | "df['no_year']=2020-df['Year']"
155 | ]
156 | },
157 | {
158 | "cell_type": "code",
159 | "execution_count": 5,
160 | "metadata": {},
161 | "outputs": [
162 | {
163 | "data": {
164 | "text/html": [
165 | "\n",
166 | "\n",
179 | "
\n",
180 | " \n",
181 | " \n",
182 | " | \n",
183 | " Car_Name | \n",
184 | " Year | \n",
185 | " Selling_Price | \n",
186 | " Present_Price | \n",
187 | " Kms_Driven | \n",
188 | " Fuel_Type | \n",
189 | " Seller_Type | \n",
190 | " Transmission | \n",
191 | " Owner | \n",
192 | " no_year | \n",
193 | "
\n",
194 | " \n",
195 | " \n",
196 | " \n",
197 | " 0 | \n",
198 | " ritz | \n",
199 | " 2014 | \n",
200 | " 3.35 | \n",
201 | " 5.59 | \n",
202 | " 27000 | \n",
203 | " Petrol | \n",
204 | " Dealer | \n",
205 | " Manual | \n",
206 | " 0 | \n",
207 | " 6 | \n",
208 | "
\n",
209 | " \n",
210 | " 1 | \n",
211 | " sx4 | \n",
212 | " 2013 | \n",
213 | " 4.75 | \n",
214 | " 9.54 | \n",
215 | " 43000 | \n",
216 | " Diesel | \n",
217 | " Dealer | \n",
218 | " Manual | \n",
219 | " 0 | \n",
220 | " 7 | \n",
221 | "
\n",
222 | " \n",
223 | " 2 | \n",
224 | " ciaz | \n",
225 | " 2017 | \n",
226 | " 7.25 | \n",
227 | " 9.85 | \n",
228 | " 6900 | \n",
229 | " Petrol | \n",
230 | " Dealer | \n",
231 | " Manual | \n",
232 | " 0 | \n",
233 | " 3 | \n",
234 | "
\n",
235 | " \n",
236 | " 3 | \n",
237 | " wagon r | \n",
238 | " 2011 | \n",
239 | " 2.85 | \n",
240 | " 4.15 | \n",
241 | " 5200 | \n",
242 | " Petrol | \n",
243 | " Dealer | \n",
244 | " Manual | \n",
245 | " 0 | \n",
246 | " 9 | \n",
247 | "
\n",
248 | " \n",
249 | " 4 | \n",
250 | " swift | \n",
251 | " 2014 | \n",
252 | " 4.60 | \n",
253 | " 6.87 | \n",
254 | " 42450 | \n",
255 | " Diesel | \n",
256 | " Dealer | \n",
257 | " Manual | \n",
258 | " 0 | \n",
259 | " 6 | \n",
260 | "
\n",
261 | " \n",
262 | "
\n",
263 | "
"
264 | ],
265 | "text/plain": [
266 | " Car_Name Year Selling_Price Present_Price Kms_Driven Fuel_Type \\\n",
267 | "0 ritz 2014 3.35 5.59 27000 Petrol \n",
268 | "1 sx4 2013 4.75 9.54 43000 Diesel \n",
269 | "2 ciaz 2017 7.25 9.85 6900 Petrol \n",
270 | "3 wagon r 2011 2.85 4.15 5200 Petrol \n",
271 | "4 swift 2014 4.60 6.87 42450 Diesel \n",
272 | "\n",
273 | " Seller_Type Transmission Owner no_year \n",
274 | "0 Dealer Manual 0 6 \n",
275 | "1 Dealer Manual 0 7 \n",
276 | "2 Dealer Manual 0 3 \n",
277 | "3 Dealer Manual 0 9 \n",
278 | "4 Dealer Manual 0 6 "
279 | ]
280 | },
281 | "execution_count": 5,
282 | "metadata": {},
283 | "output_type": "execute_result"
284 | }
285 | ],
286 | "source": [
287 | "df.head()"
288 | ]
289 | },
290 | {
291 | "cell_type": "code",
292 | "execution_count": 6,
293 | "metadata": {},
294 | "outputs": [],
295 | "source": [
296 | "df.drop(['Car_Name','Year'],axis=1,inplace=True)"
297 | ]
298 | },
299 | {
300 | "cell_type": "code",
301 | "execution_count": 7,
302 | "metadata": {},
303 | "outputs": [
304 | {
305 | "data": {
306 | "text/html": [
307 | "\n",
308 | "\n",
321 | "
\n",
322 | " \n",
323 | " \n",
324 | " | \n",
325 | " Selling_Price | \n",
326 | " Present_Price | \n",
327 | " Kms_Driven | \n",
328 | " Fuel_Type | \n",
329 | " Seller_Type | \n",
330 | " Transmission | \n",
331 | " Owner | \n",
332 | " no_year | \n",
333 | "
\n",
334 | " \n",
335 | " \n",
336 | " \n",
337 | " 0 | \n",
338 | " 3.35 | \n",
339 | " 5.59 | \n",
340 | " 27000 | \n",
341 | " Petrol | \n",
342 | " Dealer | \n",
343 | " Manual | \n",
344 | " 0 | \n",
345 | " 6 | \n",
346 | "
\n",
347 | " \n",
348 | " 1 | \n",
349 | " 4.75 | \n",
350 | " 9.54 | \n",
351 | " 43000 | \n",
352 | " Diesel | \n",
353 | " Dealer | \n",
354 | " Manual | \n",
355 | " 0 | \n",
356 | " 7 | \n",
357 | "
\n",
358 | " \n",
359 | " 2 | \n",
360 | " 7.25 | \n",
361 | " 9.85 | \n",
362 | " 6900 | \n",
363 | " Petrol | \n",
364 | " Dealer | \n",
365 | " Manual | \n",
366 | " 0 | \n",
367 | " 3 | \n",
368 | "
\n",
369 | " \n",
370 | " 3 | \n",
371 | " 2.85 | \n",
372 | " 4.15 | \n",
373 | " 5200 | \n",
374 | " Petrol | \n",
375 | " Dealer | \n",
376 | " Manual | \n",
377 | " 0 | \n",
378 | " 9 | \n",
379 | "
\n",
380 | " \n",
381 | " 4 | \n",
382 | " 4.60 | \n",
383 | " 6.87 | \n",
384 | " 42450 | \n",
385 | " Diesel | \n",
386 | " Dealer | \n",
387 | " Manual | \n",
388 | " 0 | \n",
389 | " 6 | \n",
390 | "
\n",
391 | " \n",
392 | "
\n",
393 | "
"
394 | ],
395 | "text/plain": [
396 | " Selling_Price Present_Price Kms_Driven Fuel_Type Seller_Type \\\n",
397 | "0 3.35 5.59 27000 Petrol Dealer \n",
398 | "1 4.75 9.54 43000 Diesel Dealer \n",
399 | "2 7.25 9.85 6900 Petrol Dealer \n",
400 | "3 2.85 4.15 5200 Petrol Dealer \n",
401 | "4 4.60 6.87 42450 Diesel Dealer \n",
402 | "\n",
403 | " Transmission Owner no_year \n",
404 | "0 Manual 0 6 \n",
405 | "1 Manual 0 7 \n",
406 | "2 Manual 0 3 \n",
407 | "3 Manual 0 9 \n",
408 | "4 Manual 0 6 "
409 | ]
410 | },
411 | "execution_count": 7,
412 | "metadata": {},
413 | "output_type": "execute_result"
414 | }
415 | ],
416 | "source": [
417 | "df.head()"
418 | ]
419 | },
420 | {
421 | "cell_type": "code",
422 | "execution_count": 8,
423 | "metadata": {},
424 | "outputs": [],
425 | "source": [
426 | "df=pd.get_dummies(df)"
427 | ]
428 | },
429 | {
430 | "cell_type": "code",
431 | "execution_count": 9,
432 | "metadata": {},
433 | "outputs": [
434 | {
435 | "data": {
436 | "text/html": [
437 | "\n",
438 | "\n",
451 | "
\n",
452 | " \n",
453 | " \n",
454 | " | \n",
455 | " Selling_Price | \n",
456 | " Present_Price | \n",
457 | " Kms_Driven | \n",
458 | " Owner | \n",
459 | " no_year | \n",
460 | " Fuel_Type_CNG | \n",
461 | " Fuel_Type_Diesel | \n",
462 | " Fuel_Type_Petrol | \n",
463 | " Seller_Type_Dealer | \n",
464 | " Seller_Type_Individual | \n",
465 | " Transmission_Automatic | \n",
466 | " Transmission_Manual | \n",
467 | "
\n",
468 | " \n",
469 | " \n",
470 | " \n",
471 | " 0 | \n",
472 | " 3.35 | \n",
473 | " 5.59 | \n",
474 | " 27000 | \n",
475 | " 0 | \n",
476 | " 6 | \n",
477 | " 0 | \n",
478 | " 0 | \n",
479 | " 1 | \n",
480 | " 1 | \n",
481 | " 0 | \n",
482 | " 0 | \n",
483 | " 1 | \n",
484 | "
\n",
485 | " \n",
486 | " 1 | \n",
487 | " 4.75 | \n",
488 | " 9.54 | \n",
489 | " 43000 | \n",
490 | " 0 | \n",
491 | " 7 | \n",
492 | " 0 | \n",
493 | " 1 | \n",
494 | " 0 | \n",
495 | " 1 | \n",
496 | " 0 | \n",
497 | " 0 | \n",
498 | " 1 | \n",
499 | "
\n",
500 | " \n",
501 | " 2 | \n",
502 | " 7.25 | \n",
503 | " 9.85 | \n",
504 | " 6900 | \n",
505 | " 0 | \n",
506 | " 3 | \n",
507 | " 0 | \n",
508 | " 0 | \n",
509 | " 1 | \n",
510 | " 1 | \n",
511 | " 0 | \n",
512 | " 0 | \n",
513 | " 1 | \n",
514 | "
\n",
515 | " \n",
516 | " 3 | \n",
517 | " 2.85 | \n",
518 | " 4.15 | \n",
519 | " 5200 | \n",
520 | " 0 | \n",
521 | " 9 | \n",
522 | " 0 | \n",
523 | " 0 | \n",
524 | " 1 | \n",
525 | " 1 | \n",
526 | " 0 | \n",
527 | " 0 | \n",
528 | " 1 | \n",
529 | "
\n",
530 | " \n",
531 | " 4 | \n",
532 | " 4.60 | \n",
533 | " 6.87 | \n",
534 | " 42450 | \n",
535 | " 0 | \n",
536 | " 6 | \n",
537 | " 0 | \n",
538 | " 1 | \n",
539 | " 0 | \n",
540 | " 1 | \n",
541 | " 0 | \n",
542 | " 0 | \n",
543 | " 1 | \n",
544 | "
\n",
545 | " \n",
546 | "
\n",
547 | "
"
548 | ],
549 | "text/plain": [
550 | " Selling_Price Present_Price Kms_Driven Owner no_year Fuel_Type_CNG \\\n",
551 | "0 3.35 5.59 27000 0 6 0 \n",
552 | "1 4.75 9.54 43000 0 7 0 \n",
553 | "2 7.25 9.85 6900 0 3 0 \n",
554 | "3 2.85 4.15 5200 0 9 0 \n",
555 | "4 4.60 6.87 42450 0 6 0 \n",
556 | "\n",
557 | " Fuel_Type_Diesel Fuel_Type_Petrol Seller_Type_Dealer \\\n",
558 | "0 0 1 1 \n",
559 | "1 1 0 1 \n",
560 | "2 0 1 1 \n",
561 | "3 0 1 1 \n",
562 | "4 1 0 1 \n",
563 | "\n",
564 | " Seller_Type_Individual Transmission_Automatic Transmission_Manual \n",
565 | "0 0 0 1 \n",
566 | "1 0 0 1 \n",
567 | "2 0 0 1 \n",
568 | "3 0 0 1 \n",
569 | "4 0 0 1 "
570 | ]
571 | },
572 | "execution_count": 9,
573 | "metadata": {},
574 | "output_type": "execute_result"
575 | }
576 | ],
577 | "source": [
578 | "df.head()"
579 | ]
580 | },
581 | {
582 | "cell_type": "code",
583 | "execution_count": 10,
584 | "metadata": {},
585 | "outputs": [],
586 | "source": [
587 | "x=df.drop('Selling_Price',axis=1)\n",
588 | "y=df['Selling_Price']"
589 | ]
590 | },
591 | {
592 | "cell_type": "code",
593 | "execution_count": 11,
594 | "metadata": {},
595 | "outputs": [
596 | {
597 | "data": {
598 | "text/html": [
599 | "\n",
600 | "\n",
613 | "
\n",
614 | " \n",
615 | " \n",
616 | " | \n",
617 | " Present_Price | \n",
618 | " Kms_Driven | \n",
619 | " Owner | \n",
620 | " no_year | \n",
621 | " Fuel_Type_CNG | \n",
622 | " Fuel_Type_Diesel | \n",
623 | " Fuel_Type_Petrol | \n",
624 | " Seller_Type_Dealer | \n",
625 | " Seller_Type_Individual | \n",
626 | " Transmission_Automatic | \n",
627 | " Transmission_Manual | \n",
628 | "
\n",
629 | " \n",
630 | " \n",
631 | " \n",
632 | " 0 | \n",
633 | " 5.59 | \n",
634 | " 27000 | \n",
635 | " 0 | \n",
636 | " 6 | \n",
637 | " 0 | \n",
638 | " 0 | \n",
639 | " 1 | \n",
640 | " 1 | \n",
641 | " 0 | \n",
642 | " 0 | \n",
643 | " 1 | \n",
644 | "
\n",
645 | " \n",
646 | " 1 | \n",
647 | " 9.54 | \n",
648 | " 43000 | \n",
649 | " 0 | \n",
650 | " 7 | \n",
651 | " 0 | \n",
652 | " 1 | \n",
653 | " 0 | \n",
654 | " 1 | \n",
655 | " 0 | \n",
656 | " 0 | \n",
657 | " 1 | \n",
658 | "
\n",
659 | " \n",
660 | " 2 | \n",
661 | " 9.85 | \n",
662 | " 6900 | \n",
663 | " 0 | \n",
664 | " 3 | \n",
665 | " 0 | \n",
666 | " 0 | \n",
667 | " 1 | \n",
668 | " 1 | \n",
669 | " 0 | \n",
670 | " 0 | \n",
671 | " 1 | \n",
672 | "
\n",
673 | " \n",
674 | " 3 | \n",
675 | " 4.15 | \n",
676 | " 5200 | \n",
677 | " 0 | \n",
678 | " 9 | \n",
679 | " 0 | \n",
680 | " 0 | \n",
681 | " 1 | \n",
682 | " 1 | \n",
683 | " 0 | \n",
684 | " 0 | \n",
685 | " 1 | \n",
686 | "
\n",
687 | " \n",
688 | " 4 | \n",
689 | " 6.87 | \n",
690 | " 42450 | \n",
691 | " 0 | \n",
692 | " 6 | \n",
693 | " 0 | \n",
694 | " 1 | \n",
695 | " 0 | \n",
696 | " 1 | \n",
697 | " 0 | \n",
698 | " 0 | \n",
699 | " 1 | \n",
700 | "
\n",
701 | " \n",
702 | "
\n",
703 | "
"
704 | ],
705 | "text/plain": [
706 | " Present_Price Kms_Driven Owner no_year Fuel_Type_CNG Fuel_Type_Diesel \\\n",
707 | "0 5.59 27000 0 6 0 0 \n",
708 | "1 9.54 43000 0 7 0 1 \n",
709 | "2 9.85 6900 0 3 0 0 \n",
710 | "3 4.15 5200 0 9 0 0 \n",
711 | "4 6.87 42450 0 6 0 1 \n",
712 | "\n",
713 | " Fuel_Type_Petrol Seller_Type_Dealer Seller_Type_Individual \\\n",
714 | "0 1 1 0 \n",
715 | "1 0 1 0 \n",
716 | "2 1 1 0 \n",
717 | "3 1 1 0 \n",
718 | "4 0 1 0 \n",
719 | "\n",
720 | " Transmission_Automatic Transmission_Manual \n",
721 | "0 0 1 \n",
722 | "1 0 1 \n",
723 | "2 0 1 \n",
724 | "3 0 1 \n",
725 | "4 0 1 "
726 | ]
727 | },
728 | "execution_count": 11,
729 | "metadata": {},
730 | "output_type": "execute_result"
731 | }
732 | ],
733 | "source": [
734 | "x.head()"
735 | ]
736 | },
737 | {
738 | "cell_type": "code",
739 | "execution_count": 12,
740 | "metadata": {},
741 | "outputs": [
742 | {
743 | "data": {
744 | "text/plain": [
745 | "0 3.35\n",
746 | "1 4.75\n",
747 | "2 7.25\n",
748 | "3 2.85\n",
749 | "4 4.60\n",
750 | "Name: Selling_Price, dtype: float64"
751 | ]
752 | },
753 | "execution_count": 12,
754 | "metadata": {},
755 | "output_type": "execute_result"
756 | }
757 | ],
758 | "source": [
759 | "y.head()"
760 | ]
761 | },
762 | {
763 | "cell_type": "code",
764 | "execution_count": 13,
765 | "metadata": {},
766 | "outputs": [],
767 | "source": [
768 | "from sklearn.model_selection import train_test_split"
769 | ]
770 | },
771 | {
772 | "cell_type": "code",
773 | "execution_count": 14,
774 | "metadata": {},
775 | "outputs": [],
776 | "source": [
777 | "x_train, x_test, y_train, y_test = train_test_split(x,y,random_state=5)"
778 | ]
779 | },
780 | {
781 | "cell_type": "code",
782 | "execution_count": 15,
783 | "metadata": {},
784 | "outputs": [
785 | {
786 | "data": {
787 | "text/plain": [
788 | "((225, 11), (225,))"
789 | ]
790 | },
791 | "execution_count": 15,
792 | "metadata": {},
793 | "output_type": "execute_result"
794 | }
795 | ],
796 | "source": [
797 | "x_train.shape , y_train.shape"
798 | ]
799 | },
800 | {
801 | "cell_type": "code",
802 | "execution_count": 16,
803 | "metadata": {},
804 | "outputs": [],
805 | "source": [
806 | "from sklearn.linear_model import LinearRegression"
807 | ]
808 | },
809 | {
810 | "cell_type": "code",
811 | "execution_count": 17,
812 | "metadata": {},
813 | "outputs": [
814 | {
815 | "data": {
816 | "text/plain": [
817 | "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)"
818 | ]
819 | },
820 | "execution_count": 17,
821 | "metadata": {},
822 | "output_type": "execute_result"
823 | }
824 | ],
825 | "source": [
826 | "lr=LinearRegression()\n",
827 | "lr.fit(x_train,y_train)"
828 | ]
829 | },
830 | {
831 | "cell_type": "code",
832 | "execution_count": 18,
833 | "metadata": {},
834 | "outputs": [],
835 | "source": [
836 | "prediction = lr.predict(x_test)"
837 | ]
838 | },
839 | {
840 | "cell_type": "code",
841 | "execution_count": 19,
842 | "metadata": {},
843 | "outputs": [],
844 | "source": [
845 | "import matplotlib.pyplot as plt\n",
846 | "import seaborn as sns"
847 | ]
848 | },
849 | {
850 | "cell_type": "code",
851 | "execution_count": 20,
852 | "metadata": {},
853 | "outputs": [
854 | {
855 | "data": {
856 | "text/plain": [
857 | ""
858 | ]
859 | },
860 | "execution_count": 20,
861 | "metadata": {},
862 | "output_type": "execute_result"
863 | },
864 | {
865 | "data": {
866 | "image/png": "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\n",
867 | "text/plain": [
868 | ""
869 | ]
870 | },
871 | "metadata": {
872 | "needs_background": "light"
873 | },
874 | "output_type": "display_data"
875 | }
876 | ],
877 | "source": [
878 | "plt.scatter(y_test,prediction)"
879 | ]
880 | },
881 | {
882 | "cell_type": "code",
883 | "execution_count": 21,
884 | "metadata": {},
885 | "outputs": [
886 | {
887 | "data": {
888 | "text/plain": [
889 | ""
890 | ]
891 | },
892 | "execution_count": 21,
893 | "metadata": {},
894 | "output_type": "execute_result"
895 | },
896 | {
897 | "data": {
898 | "image/png": "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\n",
899 | "text/plain": [
900 | ""
901 | ]
902 | },
903 | "metadata": {
904 | "needs_background": "light"
905 | },
906 | "output_type": "display_data"
907 | }
908 | ],
909 | "source": [
910 | "sns.distplot(y_test-prediction)"
911 | ]
912 | },
913 | {
914 | "cell_type": "code",
915 | "execution_count": 22,
916 | "metadata": {},
917 | "outputs": [],
918 | "source": [
919 | "from sklearn import metrics\n",
920 | "import numpy as np"
921 | ]
922 | },
923 | {
924 | "cell_type": "code",
925 | "execution_count": 23,
926 | "metadata": {},
927 | "outputs": [
928 | {
929 | "name": "stdout",
930 | "output_type": "stream",
931 | "text": [
932 | "MAE: 1.140996108785903\n",
933 | "MSE: 3.2815963416575036\n",
934 | "RMSE: 1.8115176901309862\n",
935 | "R squared: 0.8608525898499443\n"
936 | ]
937 | }
938 | ],
939 | "source": [
940 | "print('MAE: ',metrics.mean_absolute_error(y_test,prediction))\n",
941 | "print('MSE: ',metrics.mean_squared_error(y_test,prediction))\n",
942 | "print('RMSE: ',np.sqrt(metrics.mean_squared_error(y_test,prediction)))\n",
943 | "print('R squared: ',metrics.r2_score(y_test,prediction))"
944 | ]
945 | },
946 | {
947 | "cell_type": "code",
948 | "execution_count": 25,
949 | "metadata": {},
950 | "outputs": [],
951 | "source": [
952 | "from sklearn.linear_model import Ridge"
953 | ]
954 | },
955 | {
956 | "cell_type": "code",
957 | "execution_count": 26,
958 | "metadata": {},
959 | "outputs": [],
960 | "source": [
961 | "ridge=Ridge()\n",
962 | "ridge.fit(x_train,y_train)\n",
963 | "prediction = ridge.predict(x_test)"
964 | ]
965 | },
966 | {
967 | "cell_type": "code",
968 | "execution_count": 27,
969 | "metadata": {},
970 | "outputs": [
971 | {
972 | "name": "stdout",
973 | "output_type": "stream",
974 | "text": [
975 | "MAE: 1.1332339163458571\n",
976 | "MSE: 3.2738266436526455\n",
977 | "RMSE: 1.8093718920256956\n",
978 | "R squared: 0.8611820433361332\n"
979 | ]
980 | }
981 | ],
982 | "source": [
983 | "print('MAE: ',metrics.mean_absolute_error(y_test,prediction))\n",
984 | "print('MSE: ',metrics.mean_squared_error(y_test,prediction))\n",
985 | "print('RMSE: ',np.sqrt(metrics.mean_squared_error(y_test,prediction)))\n",
986 | "print('R squared: ',metrics.r2_score(y_test,prediction))"
987 | ]
988 | },
989 | {
990 | "cell_type": "code",
991 | "execution_count": 28,
992 | "metadata": {},
993 | "outputs": [],
994 | "source": [
995 | "from sklearn.linear_model import Lasso"
996 | ]
997 | },
998 | {
999 | "cell_type": "code",
1000 | "execution_count": 29,
1001 | "metadata": {},
1002 | "outputs": [
1003 | {
1004 | "name": "stdout",
1005 | "output_type": "stream",
1006 | "text": [
1007 | "MAE: 1.3349151159008392\n",
1008 | "MSE: 4.47313681445178\n",
1009 | "RMSE: 2.1149791522499175\n",
1010 | "R squared: 0.8103284687770421\n"
1011 | ]
1012 | }
1013 | ],
1014 | "source": [
1015 | "ridge=Lasso()\n",
1016 | "ridge.fit(x_train,y_train)\n",
1017 | "prediction = ridge.predict(x_test)\n",
1018 | "print('MAE: ',metrics.mean_absolute_error(y_test,prediction))\n",
1019 | "print('MSE: ',metrics.mean_squared_error(y_test,prediction))\n",
1020 | "print('RMSE: ',np.sqrt(metrics.mean_squared_error(y_test,prediction)))\n",
1021 | "print('R squared: ',metrics.r2_score(y_test,prediction))"
1022 | ]
1023 | },
1024 | {
1025 | "cell_type": "code",
1026 | "execution_count": 30,
1027 | "metadata": {},
1028 | "outputs": [],
1029 | "source": [
1030 | "from sklearn.model_selection import RandomizedSearchCV,GridSearchCV"
1031 | ]
1032 | },
1033 | {
1034 | "cell_type": "code",
1035 | "execution_count": 31,
1036 | "metadata": {},
1037 | "outputs": [
1038 | {
1039 | "name": "stdout",
1040 | "output_type": "stream",
1041 | "text": [
1042 | "MAE: 1.1187640189415795\n",
1043 | "MSE: 3.2349381933942647\n",
1044 | "RMSE: 1.798593393014181\n",
1045 | "R squared: 0.8628310051750747\n"
1046 | ]
1047 | },
1048 | {
1049 | "name": "stderr",
1050 | "output_type": "stream",
1051 | "text": [
1052 | "C:\\Users\\DELL\\anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:281: UserWarning: The total space of parameters 2 is smaller than n_iter=10. Running 2 iterations. For exhaustive searches, use GridSearchCV.\n",
1053 | " % (grid_size, self.n_iter, grid_size), UserWarning)\n"
1054 | ]
1055 | }
1056 | ],
1057 | "source": [
1058 | "r=Ridge()\n",
1059 | "parameters={'alpha':[1,20]}\n",
1060 | "l=RandomizedSearchCV(r,parameters,scoring=\"neg_mean_squared_error\",cv=5)\n",
1061 | "l.fit(x_train,y_train)\n",
1062 | "prediction = l.predict(x_test)\n",
1063 | "print('MAE: ',metrics.mean_absolute_error(y_test,prediction))\n",
1064 | "print('MSE: ',metrics.mean_squared_error(y_test,prediction))\n",
1065 | "print('RMSE: ',np.sqrt(metrics.mean_squared_error(y_test,prediction)))\n",
1066 | "print('R squared: ',metrics.r2_score(y_test,prediction))"
1067 | ]
1068 | },
1069 | {
1070 | "cell_type": "code",
1071 | "execution_count": 32,
1072 | "metadata": {},
1073 | "outputs": [
1074 | {
1075 | "name": "stdout",
1076 | "output_type": "stream",
1077 | "text": [
1078 | "MAE: 1.1194605545945522\n",
1079 | "MSE: 3.235117272776871\n",
1080 | "RMSE: 1.798643175501153\n",
1081 | "R squared: 0.8628234117876782\n"
1082 | ]
1083 | }
1084 | ],
1085 | "source": [
1086 | "r=Ridge()\n",
1087 | "parameters={'alpha':[1000,100,30,40,50]}\n",
1088 | "l=GridSearchCV(r,parameters,scoring=\"neg_mean_squared_error\",cv=5)\n",
1089 | "l.fit(x_train,y_train)\n",
1090 | "prediction = l.predict(x_test)\n",
1091 | "print('MAE: ',metrics.mean_absolute_error(y_test,prediction))\n",
1092 | "print('MSE: ',metrics.mean_squared_error(y_test,prediction))\n",
1093 | "print('RMSE: ',np.sqrt(metrics.mean_squared_error(y_test,prediction)))\n",
1094 | "print('R squared: ',metrics.r2_score(y_test,prediction))"
1095 | ]
1096 | },
1097 | {
1098 | "cell_type": "code",
1099 | "execution_count": 33,
1100 | "metadata": {},
1101 | "outputs": [
1102 | {
1103 | "data": {
1104 | "text/plain": [
1105 | "{'alpha': 30}"
1106 | ]
1107 | },
1108 | "execution_count": 33,
1109 | "metadata": {},
1110 | "output_type": "execute_result"
1111 | }
1112 | ],
1113 | "source": [
1114 | "l.best_params_"
1115 | ]
1116 | },
1117 | {
1118 | "cell_type": "code",
1119 | "execution_count": 24,
1120 | "metadata": {},
1121 | "outputs": [],
1122 | "source": [
1123 | "from sklearn.ensemble import RandomForestRegressor"
1124 | ]
1125 | },
1126 | {
1127 | "cell_type": "code",
1128 | "execution_count": 35,
1129 | "metadata": {},
1130 | "outputs": [],
1131 | "source": [
1132 | "n_estimators = [int(x) for x in np.linspace(start = 200, stop = 2000, num = 10)]\n",
1133 | "# Number of features to consider at every split\n",
1134 | "max_features = ['auto', 'sqrt']\n",
1135 | "# Maximum number of levels in tree\n",
1136 | "max_depth = [int(x) for x in np.linspace(10, 110, num = 11)]\n",
1137 | "max_depth.append(None)\n",
1138 | "# Minimum number of samples required to split a node\n",
1139 | "min_samples_split = [2, 5, 10]\n",
1140 | "# Minimum number of samples required at each leaf node\n",
1141 | "min_samples_leaf = [1, 2, 4]\n",
1142 | "# Method of selecting samples for training each tree\n",
1143 | "bootstrap = [True, False]\n",
1144 | "# Create the random grid\n",
1145 | "random_grid = {'n_estimators': n_estimators,\n",
1146 | " 'max_features': max_features,\n",
1147 | " 'max_depth': max_depth,\n",
1148 | " 'min_samples_split': min_samples_split,\n",
1149 | " 'min_samples_leaf': min_samples_leaf,\n",
1150 | " 'bootstrap': bootstrap}"
1151 | ]
1152 | },
1153 | {
1154 | "cell_type": "code",
1155 | "execution_count": 49,
1156 | "metadata": {},
1157 | "outputs": [
1158 | {
1159 | "name": "stdout",
1160 | "output_type": "stream",
1161 | "text": [
1162 | "Fitting 3 folds for each of 100 candidates, totalling 300 fits\n"
1163 | ]
1164 | },
1165 | {
1166 | "name": "stderr",
1167 | "output_type": "stream",
1168 | "text": [
1169 | "[Parallel(n_jobs=-1)]: Using backend LokyBackend with 4 concurrent workers.\n",
1170 | "[Parallel(n_jobs=-1)]: Done 33 tasks | elapsed: 35.2s\n",
1171 | "[Parallel(n_jobs=-1)]: Done 154 tasks | elapsed: 2.7min\n",
1172 | "[Parallel(n_jobs=-1)]: Done 300 out of 300 | elapsed: 5.0min finished\n"
1173 | ]
1174 | },
1175 | {
1176 | "name": "stdout",
1177 | "output_type": "stream",
1178 | "text": [
1179 | "MAE: 0.565409210526331\n",
1180 | "MSE: 1.071250076830035\n",
1181 | "RMSE: 1.0350121143397477\n",
1182 | "R squared: 0.9545764748937227\n"
1183 | ]
1184 | }
1185 | ],
1186 | "source": [
1187 | "r=RandomForestRegressor(n_estimators=100)\n",
1188 | "rf = RandomForestRegressor()\n",
1189 | "rf_random = RandomizedSearchCV(estimator = rf, param_distributions = random_grid, n_iter = 100, cv = 3, verbose=2, random_state=42, n_jobs = -1)\n",
1190 | "rf_random.fit(x_train,y_train)\n",
1191 | "prediction = rf_random.predict(x_test)\n",
1192 | "print('MAE: ',metrics.mean_absolute_error(y_test,prediction))\n",
1193 | "print('MSE: ',metrics.mean_squared_error(y_test,prediction))\n",
1194 | "print('RMSE: ',np.sqrt(metrics.mean_squared_error(y_test,prediction)))\n",
1195 | "print('R squared: ',metrics.r2_score(y_test,prediction))"
1196 | ]
1197 | },
1198 | {
1199 | "cell_type": "code",
1200 | "execution_count": 36,
1201 | "metadata": {},
1202 | "outputs": [
1203 | {
1204 | "name": "stdout",
1205 | "output_type": "stream",
1206 | "text": [
1207 | "MAE: 0.49281447368421116\n",
1208 | "MSE: 0.603024184078948\n",
1209 | "RMSE: 0.7765463180512467\n",
1210 | "R squared: 0.9744303550051941\n"
1211 | ]
1212 | }
1213 | ],
1214 | "source": [
1215 | "r=RandomForestRegressor(n_estimators=100)\n",
1216 | "\n",
1217 | "r.fit(x_train,y_train)\n",
1218 | "prediction = r.predict(x_test)\n",
1219 | "print('MAE: ',metrics.mean_absolute_error(y_test,prediction))\n",
1220 | "print('MSE: ',metrics.mean_squared_error(y_test,prediction))\n",
1221 | "print('RMSE: ',np.sqrt(metrics.mean_squared_error(y_test,prediction)))\n",
1222 | "print('R squared: ',metrics.r2_score(y_test,prediction))"
1223 | ]
1224 | },
1225 | {
1226 | "cell_type": "code",
1227 | "execution_count": 38,
1228 | "metadata": {},
1229 | "outputs": [],
1230 | "source": [
1231 | "import pickle \n",
1232 | "pickle.dump(r,open('model.pkl','wb'))"
1233 | ]
1234 | },
1235 | {
1236 | "cell_type": "code",
1237 | "execution_count": null,
1238 | "metadata": {},
1239 | "outputs": [],
1240 | "source": []
1241 | }
1242 | ],
1243 | "metadata": {
1244 | "kernelspec": {
1245 | "display_name": "Python 3",
1246 | "language": "python",
1247 | "name": "python3"
1248 | },
1249 | "language_info": {
1250 | "codemirror_mode": {
1251 | "name": "ipython",
1252 | "version": 3
1253 | },
1254 | "file_extension": ".py",
1255 | "mimetype": "text/x-python",
1256 | "name": "python",
1257 | "nbconvert_exporter": "python",
1258 | "pygments_lexer": "ipython3",
1259 | "version": "3.7.6"
1260 | }
1261 | },
1262 | "nbformat": 4,
1263 | "nbformat_minor": 4
1264 | }
1265 |
--------------------------------------------------------------------------------
/Procfile:
--------------------------------------------------------------------------------
1 | web: gunicorn app:app
2 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Car-Price-Prediction
2 | * This is a machine learning model made using python and flask which predicts the selling price of second-hand cars.
3 | * Do ⭐ the repository, if it helped you in anyway.
4 | * If you want to try this out, head to https://car-price-pr.herokuapp.com
5 |
6 | ## Data source:
7 | https://www.kaggle.com/nehalbirla/vehicle-dataset-from-cardekho?select=car+data.csv
8 |
9 | ## Dependencies:
10 | * Python - 3.7
11 | * Scikit-Learn
12 | * Pandas
13 | * Numpy
14 | * Matplotlib
15 | * Seaborn
16 |
17 | ## Algorithms Used:
18 | * Linear Regression
19 | * Ridge Regression
20 | * Lasso Regression
21 | * Random Forest Regression
22 |
23 |
24 | ## A glimpse of the web app:
25 | 
26 |
--------------------------------------------------------------------------------
/app.py:
--------------------------------------------------------------------------------
1 | from flask import Flask, redirect, url_for, request, render_template
2 | import pickle
3 | import sklearn
4 | from sklearn.preprocessing import StandardScaler
5 | app = Flask(__name__)
6 | model = pickle.load(open('model.pkl', 'rb'))
7 | standard_to = StandardScaler()
8 |
9 |
10 | @app.route('/',methods=['GET'])
11 | def Home():
12 | return render_template('index.html')
13 |
14 |
15 | @app.route("/predict", methods=['POST'])
16 | def predict():
17 | Fuel_Type_Diesel=0
18 | if request.method == 'POST':
19 | Year = int(request.form['Year'])
20 | Present_Price=float(request.form['Present_Price'])
21 | Kms_Driven=int(request.form['Kms_Driven'])
22 | Owner=int(request.form['Owner'])
23 | Fuel_Type_Petrol=request.form['Fuel_Type_Petrol']
24 | if(Fuel_Type_Petrol=='CNG'):
25 | Fuel_Type_CNG=1
26 | Fuel_Type_Diesel=0
27 | Fuel_Type_Petrol=0
28 | elif(Fuel_Type_Petrol=='Diesel'):
29 | Fuel_Type_CNG=0
30 | Fuel_Type_Diesel=1
31 | Fuel_Type_Petrol=0
32 | else:
33 | Fuel_Type_CNG=0
34 | Fuel_Type_Diesel=0
35 | Fuel_Type_Petrol=1
36 |
37 | Year=2020-Year
38 | Seller_Type_Individual=request.form['Seller_Type_Individual']
39 | if(Seller_Type_Individual=='Individual'):
40 | Seller_Type_Individual=1
41 | Seller_Type_Dealer=0
42 | else:
43 | Seller_Type_Dealer=1
44 | Seller_Type_Individual=0
45 | Transmission_Mannual=request.form['Transmission_Mannual']
46 | if(Transmission_Mannual=='Mannual'):
47 | Transmission_Mannual=1
48 | Transmission_Automatic=0
49 | else:
50 | Transmission_Automatic=1
51 | Transmission_Mannual=0
52 | prediction=model.predict([[Present_Price,Kms_Driven,Owner,Year,Fuel_Type_CNG,Fuel_Type_Diesel,Fuel_Type_Petrol,Seller_Type_Dealer,Seller_Type_Individual,Transmission_Automatic,Transmission_Mannual]])
53 | output=round(prediction[0],2)
54 | if output<0:
55 | return render_template('index.html',prediction_texts="Sorry you cannot sell this car")
56 | else:
57 | return render_template('index.html',prediction_text="You Can Sell Your Car at {} Lakhs".format(output))
58 | else:
59 | return render_template('index.html')
60 |
61 | if __name__=="__main__":
62 | app.run(debug = True)
63 |
64 |
--------------------------------------------------------------------------------
/car data.csv:
--------------------------------------------------------------------------------
1 | Car_Name,Year,Selling_Price,Present_Price,Kms_Driven,Fuel_Type,Seller_Type,Transmission,Owner
2 | ritz,2014,3.35,5.59,27000,Petrol,Dealer,Manual,0
3 | sx4,2013,4.75,9.54,43000,Diesel,Dealer,Manual,0
4 | ciaz,2017,7.25,9.85,6900,Petrol,Dealer,Manual,0
5 | wagon r,2011,2.85,4.15,5200,Petrol,Dealer,Manual,0
6 | swift,2014,4.6,6.87,42450,Diesel,Dealer,Manual,0
7 | vitara brezza,2018,9.25,9.83,2071,Diesel,Dealer,Manual,0
8 | ciaz,2015,6.75,8.12,18796,Petrol,Dealer,Manual,0
9 | s cross,2015,6.5,8.61,33429,Diesel,Dealer,Manual,0
10 | ciaz,2016,8.75,8.89,20273,Diesel,Dealer,Manual,0
11 | ciaz,2015,7.45,8.92,42367,Diesel,Dealer,Manual,0
12 | alto 800,2017,2.85,3.6,2135,Petrol,Dealer,Manual,0
13 | ciaz,2015,6.85,10.38,51000,Diesel,Dealer,Manual,0
14 | ciaz,2015,7.5,9.94,15000,Petrol,Dealer,Automatic,0
15 | ertiga,2015,6.1,7.71,26000,Petrol,Dealer,Manual,0
16 | dzire,2009,2.25,7.21,77427,Petrol,Dealer,Manual,0
17 | ertiga,2016,7.75,10.79,43000,Diesel,Dealer,Manual,0
18 | ertiga,2015,7.25,10.79,41678,Diesel,Dealer,Manual,0
19 | ertiga,2016,7.75,10.79,43000,Diesel,Dealer,Manual,0
20 | wagon r,2015,3.25,5.09,35500,CNG,Dealer,Manual,0
21 | sx4,2010,2.65,7.98,41442,Petrol,Dealer,Manual,0
22 | alto k10,2016,2.85,3.95,25000,Petrol,Dealer,Manual,0
23 | ignis,2017,4.9,5.71,2400,Petrol,Dealer,Manual,0
24 | sx4,2011,4.4,8.01,50000,Petrol,Dealer,Automatic,0
25 | alto k10,2014,2.5,3.46,45280,Petrol,Dealer,Manual,0
26 | wagon r,2013,2.9,4.41,56879,Petrol,Dealer,Manual,0
27 | swift,2011,3,4.99,20000,Petrol,Dealer,Manual,0
28 | swift,2013,4.15,5.87,55138,Petrol,Dealer,Manual,0
29 | swift,2017,6,6.49,16200,Petrol,Individual,Manual,0
30 | alto k10,2010,1.95,3.95,44542,Petrol,Dealer,Manual,0
31 | ciaz,2015,7.45,10.38,45000,Diesel,Dealer,Manual,0
32 | ritz,2012,3.1,5.98,51439,Diesel,Dealer,Manual,0
33 | ritz,2011,2.35,4.89,54200,Petrol,Dealer,Manual,0
34 | swift,2014,4.95,7.49,39000,Diesel,Dealer,Manual,0
35 | ertiga,2014,6,9.95,45000,Diesel,Dealer,Manual,0
36 | dzire,2014,5.5,8.06,45000,Diesel,Dealer,Manual,0
37 | sx4,2011,2.95,7.74,49998,CNG,Dealer,Manual,0
38 | dzire,2015,4.65,7.2,48767,Petrol,Dealer,Manual,0
39 | 800,2003,0.35,2.28,127000,Petrol,Individual,Manual,0
40 | alto k10,2016,3,3.76,10079,Petrol,Dealer,Manual,0
41 | sx4,2003,2.25,7.98,62000,Petrol,Dealer,Manual,0
42 | baleno,2016,5.85,7.87,24524,Petrol,Dealer,Automatic,0
43 | alto k10,2014,2.55,3.98,46706,Petrol,Dealer,Manual,0
44 | sx4,2008,1.95,7.15,58000,Petrol,Dealer,Manual,0
45 | dzire,2014,5.5,8.06,45780,Diesel,Dealer,Manual,0
46 | omni,2012,1.25,2.69,50000,Petrol,Dealer,Manual,0
47 | ciaz,2014,7.5,12.04,15000,Petrol,Dealer,Automatic,0
48 | ritz,2013,2.65,4.89,64532,Petrol,Dealer,Manual,0
49 | wagon r,2006,1.05,4.15,65000,Petrol,Dealer,Manual,0
50 | ertiga,2015,5.8,7.71,25870,Petrol,Dealer,Manual,0
51 | ciaz,2017,7.75,9.29,37000,Petrol,Dealer,Automatic,0
52 | fortuner,2012,14.9,30.61,104707,Diesel,Dealer,Automatic,0
53 | fortuner,2015,23,30.61,40000,Diesel,Dealer,Automatic,0
54 | innova,2017,18,19.77,15000,Diesel,Dealer,Automatic,0
55 | fortuner,2013,16,30.61,135000,Diesel,Individual,Automatic,0
56 | innova,2005,2.75,10.21,90000,Petrol,Individual,Manual,0
57 | corolla altis,2009,3.6,15.04,70000,Petrol,Dealer,Automatic,0
58 | etios cross,2015,4.5,7.27,40534,Petrol,Dealer,Manual,0
59 | corolla altis,2010,4.75,18.54,50000,Petrol,Dealer,Manual,0
60 | etios g,2014,4.1,6.8,39485,Petrol,Dealer,Manual,1
61 | fortuner,2014,19.99,35.96,41000,Diesel,Dealer,Automatic,0
62 | corolla altis,2013,6.95,18.61,40001,Petrol,Dealer,Manual,0
63 | etios cross,2015,4.5,7.7,40588,Petrol,Dealer,Manual,0
64 | fortuner,2014,18.75,35.96,78000,Diesel,Dealer,Automatic,0
65 | fortuner,2015,23.5,35.96,47000,Diesel,Dealer,Automatic,0
66 | fortuner,2017,33,36.23,6000,Diesel,Dealer,Automatic,0
67 | etios liva,2014,4.75,6.95,45000,Diesel,Dealer,Manual,0
68 | innova,2017,19.75,23.15,11000,Petrol,Dealer,Automatic,0
69 | fortuner,2010,9.25,20.45,59000,Diesel,Dealer,Manual,0
70 | corolla altis,2011,4.35,13.74,88000,Petrol,Dealer,Manual,0
71 | corolla altis,2016,14.25,20.91,12000,Petrol,Dealer,Manual,0
72 | etios liva,2014,3.95,6.76,71000,Diesel,Dealer,Manual,0
73 | corolla altis,2011,4.5,12.48,45000,Diesel,Dealer,Manual,0
74 | corolla altis,2013,7.45,18.61,56001,Petrol,Dealer,Manual,0
75 | etios liva,2011,2.65,5.71,43000,Petrol,Dealer,Manual,0
76 | etios cross,2014,4.9,8.93,83000,Diesel,Dealer,Manual,0
77 | etios g,2015,3.95,6.8,36000,Petrol,Dealer,Manual,0
78 | corolla altis,2013,5.5,14.68,72000,Petrol,Dealer,Manual,0
79 | corolla,2004,1.5,12.35,135154,Petrol,Dealer,Automatic,0
80 | corolla altis,2010,5.25,22.83,80000,Petrol,Dealer,Automatic,0
81 | fortuner,2012,14.5,30.61,89000,Diesel,Dealer,Automatic,0
82 | corolla altis,2016,14.73,14.89,23000,Diesel,Dealer,Manual,0
83 | etios gd,2015,4.75,7.85,40000,Diesel,Dealer,Manual,0
84 | innova,2017,23,25.39,15000,Diesel,Dealer,Automatic,0
85 | innova,2015,12.5,13.46,38000,Diesel,Dealer,Manual,0
86 | innova,2005,3.49,13.46,197176,Diesel,Dealer,Manual,0
87 | camry,2006,2.5,23.73,142000,Petrol,Individual,Automatic,3
88 | land cruiser,2010,35,92.6,78000,Diesel,Dealer,Manual,0
89 | corolla altis,2012,5.9,13.74,56000,Petrol,Dealer,Manual,0
90 | etios liva,2013,3.45,6.05,47000,Petrol,Dealer,Manual,0
91 | etios g,2014,4.75,6.76,40000,Petrol,Dealer,Manual,0
92 | corolla altis,2009,3.8,18.61,62000,Petrol,Dealer,Manual,0
93 | innova,2014,11.25,16.09,58242,Diesel,Dealer,Manual,0
94 | innova,2005,3.51,13.7,75000,Petrol,Dealer,Manual,0
95 | fortuner,2015,23,30.61,40000,Diesel,Dealer,Automatic,0
96 | corolla altis,2008,4,22.78,89000,Petrol,Dealer,Automatic,0
97 | corolla altis,2012,5.85,18.61,72000,Petrol,Dealer,Manual,0
98 | innova,2016,20.75,25.39,29000,Diesel,Dealer,Automatic,0
99 | corolla altis,2017,17,18.64,8700,Petrol,Dealer,Manual,0
100 | corolla altis,2013,7.05,18.61,45000,Petrol,Dealer,Manual,0
101 | fortuner,2010,9.65,20.45,50024,Diesel,Dealer,Manual,0
102 | Royal Enfield Thunder 500,2016,1.75,1.9,3000,Petrol,Individual,Manual,0
103 | UM Renegade Mojave,2017,1.7,1.82,1400,Petrol,Individual,Manual,0
104 | KTM RC200,2017,1.65,1.78,4000,Petrol,Individual,Manual,0
105 | Bajaj Dominar 400,2017,1.45,1.6,1200,Petrol,Individual,Manual,0
106 | Royal Enfield Classic 350,2017,1.35,1.47,4100,Petrol,Individual,Manual,0
107 | KTM RC390,2015,1.35,2.37,21700,Petrol,Individual,Manual,0
108 | Hyosung GT250R,2014,1.35,3.45,16500,Petrol,Individual,Manual,1
109 | Royal Enfield Thunder 350,2013,1.25,1.5,15000,Petrol,Individual,Manual,0
110 | Royal Enfield Thunder 350,2016,1.2,1.5,18000,Petrol,Individual,Manual,0
111 | Royal Enfield Classic 350,2017,1.2,1.47,11000,Petrol,Individual,Manual,0
112 | KTM RC200,2016,1.2,1.78,6000,Petrol,Individual,Manual,0
113 | Royal Enfield Thunder 350,2016,1.15,1.5,8700,Petrol,Individual,Manual,0
114 | KTM 390 Duke ,2014,1.15,2.4,7000,Petrol,Individual,Manual,0
115 | Mahindra Mojo XT300,2016,1.15,1.4,35000,Petrol,Individual,Manual,0
116 | Royal Enfield Classic 350,2015,1.15,1.47,17000,Petrol,Individual,Manual,0
117 | Royal Enfield Classic 350,2015,1.11,1.47,17500,Petrol,Individual,Manual,0
118 | Royal Enfield Classic 350,2013,1.1,1.47,33000,Petrol,Individual,Manual,0
119 | Royal Enfield Thunder 500,2015,1.1,1.9,14000,Petrol,Individual,Manual,0
120 | Royal Enfield Classic 350,2015,1.1,1.47,26000,Petrol,Individual,Manual,0
121 | Royal Enfield Thunder 500,2013,1.05,1.9,5400,Petrol,Individual,Manual,0
122 | Bajaj Pulsar RS200,2016,1.05,1.26,5700,Petrol,Individual,Manual,0
123 | Royal Enfield Thunder 350,2011,1.05,1.5,6900,Petrol,Individual,Manual,0
124 | Royal Enfield Bullet 350,2016,1.05,1.17,6000,Petrol,Individual,Manual,0
125 | Royal Enfield Classic 350,2013,1,1.47,46500,Petrol,Individual,Manual,0
126 | Royal Enfield Classic 500,2012,0.95,1.75,11500,Petrol,Individual,Manual,0
127 | Royal Enfield Classic 500,2009,0.9,1.75,40000,Petrol,Individual,Manual,0
128 | Bajaj Avenger 220,2017,0.9,0.95,1300,Petrol,Individual,Manual,0
129 | Bajaj Avenger 150,2016,0.75,0.8,7000,Petrol,Individual,Manual,0
130 | Honda CB Hornet 160R,2017,0.8,0.87,3000,Petrol,Individual,Manual,0
131 | Yamaha FZ S V 2.0,2017,0.78,0.84,5000,Petrol,Individual,Manual,0
132 | Honda CB Hornet 160R,2017,0.75,0.87,11000,Petrol,Individual,Manual,0
133 | Yamaha FZ 16,2015,0.75,0.82,18000,Petrol,Individual,Manual,0
134 | Bajaj Avenger 220,2017,0.75,0.95,3500,Petrol,Individual,Manual,0
135 | Bajaj Avenger 220,2016,0.72,0.95,500,Petrol,Individual,Manual,0
136 | TVS Apache RTR 160,2017,0.65,0.81,11800,Petrol,Individual,Manual,0
137 | Bajaj Pulsar 150,2015,0.65,0.74,5000,Petrol,Individual,Manual,0
138 | Honda CBR 150,2014,0.65,1.2,23500,Petrol,Individual,Manual,0
139 | Hero Extreme,2013,0.65,0.787,16000,Petrol,Individual,Manual,0
140 | Honda CB Hornet 160R,2016,0.6,0.87,15000,Petrol,Individual,Manual,0
141 | Bajaj Avenger 220 dtsi,2015,0.6,0.95,16600,Petrol,Individual,Manual,0
142 | Honda CBR 150,2013,0.6,1.2,32000,Petrol,Individual,Manual,0
143 | Bajaj Avenger 150 street,2016,0.6,0.8,20000,Petrol,Individual,Manual,0
144 | Yamaha FZ v 2.0,2015,0.6,0.84,29000,Petrol,Individual,Manual,0
145 | Yamaha FZ v 2.0,2016,0.6,0.84,25000,Petrol,Individual,Manual,0
146 | Bajaj Pulsar NS 200,2014,0.6,0.99,25000,Petrol,Individual,Manual,0
147 | TVS Apache RTR 160,2012,0.6,0.81,19000,Petrol,Individual,Manual,0
148 | Hero Extreme,2014,0.55,0.787,15000,Petrol,Individual,Manual,0
149 | Yamaha FZ S V 2.0,2015,0.55,0.84,58000,Petrol,Individual,Manual,0
150 | Bajaj Pulsar 220 F,2010,0.52,0.94,45000,Petrol,Individual,Manual,0
151 | Bajaj Pulsar 220 F,2016,0.51,0.94,24000,Petrol,Individual,Manual,0
152 | TVS Apache RTR 180,2011,0.5,0.826,6000,Petrol,Individual,Manual,0
153 | Hero Passion X pro,2016,0.5,0.55,31000,Petrol,Individual,Manual,0
154 | Bajaj Pulsar NS 200,2012,0.5,0.99,13000,Petrol,Individual,Manual,0
155 | Bajaj Pulsar NS 200,2013,0.5,0.99,45000,Petrol,Individual,Manual,0
156 | Yamaha Fazer ,2014,0.5,0.88,8000,Petrol,Individual,Manual,0
157 | Honda Activa 4G,2017,0.48,0.51,4300,Petrol,Individual,Automatic,0
158 | TVS Sport ,2017,0.48,0.52,15000,Petrol,Individual,Manual,0
159 | Yamaha FZ S V 2.0,2015,0.48,0.84,23000,Petrol,Individual,Manual,0
160 | Honda Dream Yuga ,2017,0.48,0.54,8600,Petrol,Individual,Manual,0
161 | Honda Activa 4G,2017,0.45,0.51,4000,Petrol,Individual,Automatic,0
162 | Bajaj Avenger Street 220,2011,0.45,0.95,24000,Petrol,Individual,Manual,0
163 | TVS Apache RTR 180,2014,0.45,0.826,23000,Petrol,Individual,Manual,0
164 | Bajaj Pulsar NS 200,2012,0.45,0.99,14500,Petrol,Individual,Manual,0
165 | Bajaj Avenger 220 dtsi,2010,0.45,0.95,27000,Petrol,Individual,Manual,0
166 | Hero Splender iSmart,2016,0.45,0.54,14000,Petrol,Individual,Manual,0
167 | Activa 3g,2016,0.45,0.54,500,Petrol,Individual,Automatic,0
168 | Hero Passion Pro,2016,0.45,0.55,1000,Petrol,Individual,Manual,0
169 | TVS Apache RTR 160,2014,0.42,0.81,42000,Petrol,Individual,Manual,0
170 | Honda CB Trigger,2013,0.42,0.73,12000,Petrol,Individual,Manual,0
171 | Hero Splender iSmart,2015,0.4,0.54,14000,Petrol,Individual,Manual,0
172 | Yamaha FZ S ,2012,0.4,0.83,5500,Petrol,Individual,Manual,0
173 | Hero Passion Pro,2015,0.4,0.55,6700,Petrol,Individual,Manual,0
174 | Bajaj Pulsar 135 LS,2014,0.4,0.64,13700,Petrol,Individual,Manual,0
175 | Activa 4g,2017,0.4,0.51,1300,Petrol,Individual,Automatic,0
176 | Honda CB Unicorn,2015,0.38,0.72,38600,Petrol,Individual,Manual,0
177 | Hero Honda CBZ extreme,2011,0.38,0.787,75000,Petrol,Individual,Manual,0
178 | Honda Karizma,2011,0.35,1.05,30000,Petrol,Individual,Manual,0
179 | Honda Activa 125,2016,0.35,0.57,24000,Petrol,Individual,Automatic,0
180 | TVS Jupyter,2014,0.35,0.52,19000,Petrol,Individual,Automatic,0
181 | Honda Karizma,2010,0.31,1.05,213000,Petrol,Individual,Manual,0
182 | Hero Honda Passion Pro,2012,0.3,0.51,60000,Petrol,Individual,Manual,0
183 | Hero Splender Plus,2016,0.3,0.48,50000,Petrol,Individual,Manual,0
184 | Honda CB Shine,2013,0.3,0.58,30000,Petrol,Individual,Manual,0
185 | Bajaj Discover 100,2013,0.27,0.47,21000,Petrol,Individual,Manual,0
186 | Bajaj Pulsar 150,2008,0.25,0.75,26000,Petrol,Individual,Manual,1
187 | Suzuki Access 125,2008,0.25,0.58,1900,Petrol,Individual,Automatic,0
188 | TVS Wego,2010,0.25,0.52,22000,Petrol,Individual,Automatic,0
189 | Honda CB twister,2013,0.25,0.51,32000,Petrol,Individual,Manual,0
190 | Hero Glamour,2013,0.25,0.57,18000,Petrol,Individual,Manual,0
191 | Hero Super Splendor,2005,0.2,0.57,55000,Petrol,Individual,Manual,0
192 | Bajaj Pulsar 150,2008,0.2,0.75,60000,Petrol,Individual,Manual,0
193 | Bajaj Discover 125,2012,0.2,0.57,25000,Petrol,Individual,Manual,1
194 | Hero Hunk,2007,0.2,0.75,49000,Petrol,Individual,Manual,1
195 | Hero Ignitor Disc,2013,0.2,0.65,24000,Petrol,Individual,Manual,1
196 | Hero CBZ Xtreme,2008,0.2,0.787,50000,Petrol,Individual,Manual,0
197 | Bajaj ct 100,2015,0.18,0.32,35000,Petrol,Individual,Manual,0
198 | Activa 3g,2008,0.17,0.52,500000,Petrol,Individual,Automatic,0
199 | Honda CB twister,2010,0.16,0.51,33000,Petrol,Individual,Manual,0
200 | Bajaj Discover 125,2011,0.15,0.57,35000,Petrol,Individual,Manual,1
201 | Honda CB Shine,2007,0.12,0.58,53000,Petrol,Individual,Manual,0
202 | Bajaj Pulsar 150,2006,0.1,0.75,92233,Petrol,Individual,Manual,0
203 | i20,2010,3.25,6.79,58000,Diesel,Dealer,Manual,1
204 | grand i10,2015,4.4,5.7,28200,Petrol,Dealer,Manual,0
205 | i10,2011,2.95,4.6,53460,Petrol,Dealer,Manual,0
206 | eon,2015,2.75,4.43,28282,Petrol,Dealer,Manual,0
207 | grand i10,2016,5.25,5.7,3493,Petrol,Dealer,Manual,1
208 | xcent,2017,5.75,7.13,12479,Petrol,Dealer,Manual,0
209 | grand i10,2015,5.15,5.7,34797,Petrol,Dealer,Automatic,0
210 | i20,2017,7.9,8.1,3435,Petrol,Dealer,Manual,0
211 | grand i10,2015,4.85,5.7,21125,Diesel,Dealer,Manual,0
212 | i10,2012,3.1,4.6,35775,Petrol,Dealer,Manual,0
213 | elantra,2015,11.75,14.79,43535,Diesel,Dealer,Manual,0
214 | creta,2016,11.25,13.6,22671,Petrol,Dealer,Manual,0
215 | i20,2011,2.9,6.79,31604,Petrol,Dealer,Manual,0
216 | grand i10,2017,5.25,5.7,20114,Petrol,Dealer,Manual,0
217 | verna,2012,4.5,9.4,36100,Petrol,Dealer,Manual,0
218 | eon,2016,2.9,4.43,12500,Petrol,Dealer,Manual,0
219 | eon,2016,3.15,4.43,15000,Petrol,Dealer,Manual,0
220 | verna,2014,6.45,9.4,45078,Petrol,Dealer,Manual,0
221 | verna,2012,4.5,9.4,36000,Petrol,Dealer,Manual,0
222 | eon,2017,3.5,4.43,38488,Petrol,Dealer,Manual,0
223 | i20,2013,4.5,6.79,32000,Petrol,Dealer,Automatic,0
224 | i20,2014,6,7.6,77632,Diesel,Dealer,Manual,0
225 | verna,2015,8.25,9.4,61381,Diesel,Dealer,Manual,0
226 | verna,2013,5.11,9.4,36198,Petrol,Dealer,Automatic,0
227 | i10,2011,2.7,4.6,22517,Petrol,Dealer,Manual,0
228 | grand i10,2015,5.25,5.7,24678,Petrol,Dealer,Manual,0
229 | i10,2011,2.55,4.43,57000,Petrol,Dealer,Manual,0
230 | verna,2012,4.95,9.4,60000,Diesel,Dealer,Manual,0
231 | i20,2012,3.1,6.79,52132,Diesel,Dealer,Manual,0
232 | verna,2013,6.15,9.4,45000,Diesel,Dealer,Manual,0
233 | verna,2017,9.25,9.4,15001,Petrol,Dealer,Manual,0
234 | elantra,2015,11.45,14.79,12900,Petrol,Dealer,Automatic,0
235 | grand i10,2013,3.9,5.7,53000,Diesel,Dealer,Manual,0
236 | grand i10,2015,5.5,5.7,4492,Petrol,Dealer,Manual,0
237 | verna,2017,9.1,9.4,15141,Petrol,Dealer,Manual,0
238 | eon,2016,3.1,4.43,11849,Petrol,Dealer,Manual,0
239 | creta,2015,11.25,13.6,68000,Diesel,Dealer,Manual,0
240 | verna,2013,4.8,9.4,60241,Petrol,Dealer,Manual,0
241 | eon,2012,2,4.43,23709,Petrol,Dealer,Manual,0
242 | verna,2012,5.35,9.4,32322,Diesel,Dealer,Manual,0
243 | xcent,2015,4.75,7.13,35866,Petrol,Dealer,Manual,1
244 | xcent,2014,4.4,7.13,34000,Petrol,Dealer,Manual,0
245 | i20,2016,6.25,7.6,7000,Petrol,Dealer,Manual,0
246 | verna,2013,5.95,9.4,49000,Diesel,Dealer,Manual,0
247 | verna,2012,5.2,9.4,71000,Diesel,Dealer,Manual,0
248 | i20,2012,3.75,6.79,35000,Petrol,Dealer,Manual,0
249 | verna,2015,5.95,9.4,36000,Petrol,Dealer,Manual,0
250 | i10,2013,4,4.6,30000,Petrol,Dealer,Manual,0
251 | i20,2016,5.25,7.6,17000,Petrol,Dealer,Manual,0
252 | creta,2016,12.9,13.6,35934,Diesel,Dealer,Manual,0
253 | city,2013,5,9.9,56701,Petrol,Dealer,Manual,0
254 | brio,2015,5.4,6.82,31427,Petrol,Dealer,Automatic,0
255 | city,2014,7.2,9.9,48000,Diesel,Dealer,Manual,0
256 | city,2013,5.25,9.9,54242,Petrol,Dealer,Manual,0
257 | brio,2012,3,5.35,53675,Petrol,Dealer,Manual,0
258 | city,2016,10.25,13.6,49562,Petrol,Dealer,Manual,0
259 | city,2015,8.5,13.6,40324,Petrol,Dealer,Manual,0
260 | city,2015,8.4,13.6,25000,Petrol,Dealer,Manual,0
261 | amaze,2014,3.9,7,36054,Petrol,Dealer,Manual,0
262 | city,2016,9.15,13.6,29223,Petrol,Dealer,Manual,0
263 | brio,2016,5.5,5.97,5600,Petrol,Dealer,Manual,0
264 | amaze,2015,4,5.8,40023,Petrol,Dealer,Manual,0
265 | jazz,2016,6.6,7.7,16002,Petrol,Dealer,Manual,0
266 | amaze,2015,4,7,40026,Petrol,Dealer,Manual,0
267 | jazz,2017,6.5,8.7,21200,Petrol,Dealer,Manual,0
268 | amaze,2014,3.65,7,35000,Petrol,Dealer,Manual,0
269 | city,2016,8.35,9.4,19434,Diesel,Dealer,Manual,0
270 | brio,2017,4.8,5.8,19000,Petrol,Dealer,Manual,0
271 | city,2015,6.7,10,18828,Petrol,Dealer,Manual,0
272 | city,2011,4.1,10,69341,Petrol,Dealer,Manual,0
273 | city,2009,3,10,69562,Petrol,Dealer,Manual,0
274 | city,2015,7.5,10,27600,Petrol,Dealer,Manual,0
275 | jazz,2010,2.25,7.5,61203,Petrol,Dealer,Manual,0
276 | brio,2014,5.3,6.8,16500,Petrol,Dealer,Manual,0
277 | city,2016,10.9,13.6,30753,Petrol,Dealer,Automatic,0
278 | city,2015,8.65,13.6,24800,Petrol,Dealer,Manual,0
279 | city,2015,9.7,13.6,21780,Petrol,Dealer,Manual,0
280 | jazz,2016,6,8.4,4000,Petrol,Dealer,Manual,0
281 | city,2014,6.25,13.6,40126,Petrol,Dealer,Manual,0
282 | brio,2015,5.25,5.9,14465,Petrol,Dealer,Manual,0
283 | city,2006,2.1,7.6,50456,Petrol,Dealer,Manual,0
284 | city,2014,8.25,14,63000,Diesel,Dealer,Manual,0
285 | city,2016,8.99,11.8,9010,Petrol,Dealer,Manual,0
286 | brio,2013,3.5,5.9,9800,Petrol,Dealer,Manual,0
287 | jazz,2016,7.4,8.5,15059,Petrol,Dealer,Automatic,0
288 | jazz,2016,5.65,7.9,28569,Petrol,Dealer,Manual,0
289 | amaze,2015,5.75,7.5,44000,Petrol,Dealer,Automatic,0
290 | city,2015,8.4,13.6,34000,Petrol,Dealer,Manual,0
291 | city,2016,10.11,13.6,10980,Petrol,Dealer,Manual,0
292 | amaze,2014,4.5,6.4,19000,Petrol,Dealer,Manual,0
293 | brio,2015,5.4,6.1,31427,Petrol,Dealer,Manual,0
294 | jazz,2016,6.4,8.4,12000,Petrol,Dealer,Manual,0
295 | city,2010,3.25,9.9,38000,Petrol,Dealer,Manual,0
296 | amaze,2014,3.75,6.8,33019,Petrol,Dealer,Manual,0
297 | city,2015,8.55,13.09,60076,Diesel,Dealer,Manual,0
298 | city,2016,9.5,11.6,33988,Diesel,Dealer,Manual,0
299 | brio,2015,4,5.9,60000,Petrol,Dealer,Manual,0
300 | city,2009,3.35,11,87934,Petrol,Dealer,Manual,0
301 | city,2017,11.5,12.5,9000,Diesel,Dealer,Manual,0
302 | brio,2016,5.3,5.9,5464,Petrol,Dealer,Manual,0
303 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
23 |
24 |
57 |
58 | Car Price Prediction
59 |
60 |
61 |
62 | CAR PRICE PREDICTION
63 | Machine Learning Model
64 |
105 |
106 |
--------------------------------------------------------------------------------
/model.pkl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Rohanvp07/Car-Price-Prediction/da17c8671439ba6de32949f6c04dd483c170ae3f/model.pkl
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | Flask==1.1.1
2 | gunicorn==19.9.0
3 | itsdangerous==1.1.0
4 | Jinja2==2.10.1
5 | MarkupSafe==1.1.1
6 | Werkzeug==0.15.5
7 | numpy>=1.9.2
8 | scipy>=0.15.1
9 | scikit-learn>=0.18
10 | matplotlib>=1.4.3
11 | pandas>=0.19
12 |
--------------------------------------------------------------------------------
/templates/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
23 |
24 |
57 |
58 | Car Price Prediction
59 |
60 |
61 |
62 | CAR PRICE PREDICTION
63 | Machine Learning Model
64 |
105 |
106 |
107 |
--------------------------------------------------------------------------------