From f2d956ed9922bb904b94a6f4aaaf48344c818e7b Mon Sep 17 00:00:00 2001 From: Zaid Rasool Date: Sun, 17 Aug 2025 14:08:50 +0500 Subject: [PATCH 1/3] specified the language folders and added them to respective folders --- .../linear-regression(grade prediction).R | 0 ArrayOfObject in Java => c/ArrayOfObject in Java | 0 Bubble_sort.c => c/Bubble_sort.c | 0 .../C_Program_to_Swap_Two_Numbers.c | 0 CircularQueue.c => c/CircularQueue.c | 0 FactLargeNo.c => c/FactLargeNo.c | 0 HuffmanCoding.c => c/HuffmanCoding.c | 0 Insertion sort => c/Insertion sort | 0 JobSequencing => c/JobSequencing | 0 Palindrome Partition => c/Palindrome Partition | 0 Queue.c => c/Queue.c | 0 Stack.c => c/Stack.c | 0 Taskmanager.c => c/Taskmanager.c | 0 binary_search.c => c/binary_search.c | 0 binarytree.c => c/binarytree.c | 0 bubbleSort => c/bubbleSort | 0 clone => c/clone | 0 clone-graph => c/clone-graph | 0 cloning => c/cloning | 0 combinationFormula.c => c/combinationFormula.c | 0 double_linked_list.c => c/double_linked_list.c | 0 efficientExponent.c => c/efficientExponent.c | 0 graph_ques => c/graph_ques | 0 greedyalgorithum.c => c/greedyalgorithum.c | 0 guessTheNumber.c => c/guessTheNumber.c | 0 infix-to-postfix.c => c/infix-to-postfix.c | 0 insertionsort.c => c/insertionsort.c | 0 is_real_number.c => c/is_real_number.c | 0 linked_list.c => c/linked_list.c | 0 manojbank.c => c/manojbank.c | 0 .../minimum distance bw A and B (bfs) | 0 recordofdtuusingfile.c => c/recordofdtuusingfile.c | 0 .../stackoperationusingarray.c | 0 .../terraform-create-ec2.tf | 0 time.c => c/time.c | 0 2stacks_in_array.cpp => cpp/2stacks_in_array.cpp | 0 AVL.cpp => cpp/AVL.cpp | 0 .../Boruvka's_Algorithm_MSt.cpp | 0 BucketSort.cpp => cpp/BucketSort.cpp | 0 CheckWhether.cpp => cpp/CheckWhether.cpp | 0 ChineseTheorem.cpp => cpp/ChineseTheorem.cpp | 0 .../Chinese_Remainder_Theorem.cpp | 0 .../Constructor and destructor.cpp | 0 Covid.cpp => cpp/Covid.cpp | 0 .../DSU_implementation.cpp | 0 EvenOddChecker.cpp => cpp/EvenOddChecker.cpp | 0 .../Expression_Evaluation.cpp | 0 .../Find Kth Largest Number STL.cpp | 0 ...ank - Sorting - Intro to Tutorial Challenges.cpp | 0 Heap Sort.cpp => cpp/Heap Sort.cpp | 0 Heap-Sort.cpp => cpp/Heap-Sort.cpp | 0 Knapsack.cpp => cpp/Knapsack.cpp | 0 .../Largest_lexicographic_Array.cpp | 0 .../Longest_increaing_subseqeunce.cpp | 0 .../Merge Sorted Array.cpp | 0 Min_Stack.cpp => cpp/Min_Stack.cpp | 0 NQueenProblem.cpp => cpp/NQueenProblem.cpp | 0 .../PerfectionCalculator.cpp | 0 .../Prime Path (SPOJ) using bfs.cpp | 0 Reverse_String.cpp => cpp/Reverse_String.cpp | 0 .../RivestShamirAdleman.cpp | 0 RotateList.cpp => cpp/RotateList.cpp | 0 SCC.cpp => cpp/SCC.cpp | 0 SchedulingAlgo.cpp => cpp/SchedulingAlgo.cpp | 0 SelectionSort.cpp => cpp/SelectionSort.cpp | 0 SimpleSnakeGame.cpp => cpp/SimpleSnakeGame.cpp | 0 SinglyLinkedList.cpp => cpp/SinglyLinkedList.cpp | 0 Stack_LinkedList.cpp => cpp/Stack_LinkedList.cpp | 0 .../Subarray_with_a_sum.cpp | 0 SubsetSum.cpp => cpp/SubsetSum.cpp | 0 TimSort.cpp => cpp/TimSort.cpp | 0 TowerOfHanoi.cpp => cpp/TowerOfHanoi.cpp | 0 addTwoNums.cpp => cpp/addTwoNums.cpp | 0 agressiveCows.cpp => cpp/agressiveCows.cpp | 0 .../all_sub_sequence_string.cpp | 0 arrQ.cpp => cpp/arrQ.cpp | 0 .../balancedparenthesis.cpp | 0 .../bankers_algorithm_safe_state.cpp | 0 bfs.cpp => cpp/bfs.cpp | 0 .../binary exponent loop.cpp | 0 .../binary exponent recursive.cpp | 0 binarySearch.cpp => cpp/binarySearch.cpp | 0 binarysearch.cpp => cpp/binarysearch.cpp | 0 bit.cpp => cpp/bit.cpp | 0 bit_set_or_not.cpp => cpp/bit_set_or_not.cpp | 0 chess_borad.cpp => cpp/chess_borad.cpp | 0 chineseRemainder.cpp => cpp/chineseRemainder.cpp | 0 coinTower.cpp => cpp/coinTower.cpp | 0 countSort.cpp => cpp/countSort.cpp | 0 cpp-addressof.cpp => cpp/cpp-addressof.cpp | 0 .../createaalinkedlist.cpp | 0 createalinkedlist.cpp => cpp/createalinkedlist.cpp | 0 cycle_detect.cpp => cpp/cycle_detect.cpp | 0 defish_images.cpp => cpp/defish_images.cpp | 0 deleteNode.cpp => cpp/deleteNode.cpp | 0 .../divide-et-impera-sumofarray.cpp | 0 .../divide_and_conquer_minmax.cpp | 0 djkshtra_algo.cpp => cpp/djkshtra_algo.cpp | 0 dutchflag.cpp => cpp/dutchflag.cpp | 0 .../et or pfi using seive way.cpp | 0 .../etf or phi in sqrt(n).cpp | 0 euclid extended.cpp => cpp/euclid extended.cpp | 0 euclidproblem.cpp => cpp/euclidproblem.cpp | 0 externalsort-algo.cpp => cpp/externalsort-algo.cpp | 0 fibonacci_series.cpp => cpp/fibonacci_series.cpp | 0 gcd.cpp => cpp/gcd.cpp | 0 guessing game.cpp => cpp/guessing game.cpp | 0 implementaion.cpp => cpp/implementaion.cpp | 0 insertionSort.cpp => cpp/insertionSort.cpp | 0 insertion_sort.cpp => cpp/insertion_sort.cpp | 0 inversionCount.cpp => cpp/inversionCount.cpp | 0 keyPadCharactors.cpp => cpp/keyPadCharactors.cpp | 0 kmp_algo.cpp => cpp/kmp_algo.cpp | 0 knightsTour.cpp => cpp/knightsTour.cpp | 0 krusgal.cpp => cpp/krusgal.cpp | 0 leetcode 12.cpp => cpp/leetcode 12.cpp | 0 leetcode 123.cpp => cpp/leetcode 123.cpp | 0 leetcode 345.cpp => cpp/leetcode 345.cpp | 0 leetcode 456.cpp => cpp/leetcode 456.cpp | 0 leetcode 678.cpp => cpp/leetcode 678.cpp | 0 leetcode 901.cpp => cpp/leetcode 901.cpp | 0 .../letterCasePermutations.cpp | 0 linearsearch.cpp => cpp/linearsearch.cpp | 0 ll.cpp => cpp/ll.cpp | 0 lnkdsort.cpp => cpp/lnkdsort.cpp | 0 longestPalindrome.cpp => cpp/longestPalindrome.cpp | 0 maxGCD.cpp => cpp/maxGCD.cpp | 0 mergesort-algo.cpp => cpp/mergesort-algo.cpp | 0 minmax.cpp => cpp/minmax.cpp | 0 modexp.cpp => cpp/modexp.cpp | 0 .../modular exponent loop.cpp | 0 .../modular exponent recursion.cpp | 0 new.cpp => cpp/new.cpp | 0 .../no of div with seive.cpp | 0 .../no of div without seive.cpp | 0 palindromeORnot.cpp => cpp/palindromeORnot.cpp | 0 postfixevaluation.cpp => cpp/postfixevaluation.cpp | 0 prims_algo.cpp => cpp/prims_algo.cpp | 0 .../printallduplicates.cpp | 0 questions.cpp => cpp/questions.cpp | 0 .../queues_implementation.cpp | 0 queueusingstacks.cpp => cpp/queueusingstacks.cpp | 0 queueusingstacks2.cpp => cpp/queueusingstacks2.cpp | 0 quick_sort.cpp => cpp/quick_sort.cpp | 0 quicksort-algo.cpp => cpp/quicksort-algo.cpp | 0 radixsort-algo.cpp => cpp/radixsort-algo.cpp | 0 redundant.cpp => cpp/redundant.cpp | 0 regex-match.cpp => cpp/regex-match.cpp | 0 reversestring.cpp => cpp/reversestring.cpp | 0 searchInBST.cpp => cpp/searchInBST.cpp | 0 stoogesort.cpp => cpp/stoogesort.cpp | 0 .../stringsarerotation.cpp | 0 subtractTwoNums.cpp => cpp/subtractTwoNums.cpp | 0 sudokuSolver.cpp => cpp/sudokuSolver.cpp | 0 .../sum of all div using seive.cpp | 0 .../sum of all prime using seive.cpp | 0 ternarySearch.cpp => cpp/ternarySearch.cpp | 0 topologicalSort.cpp => cpp/topologicalSort.cpp | 0 .../total_number_set_bit.cpp | 0 .../transformation_in_2D_triangle.cpp | 0 version.cpp => cpp/version.cpp | 0 insertion_sort.cs => csharp/insertion_sort.cs | 0 HashJoin.go => go/HashJoin.go | 0 HeapSort.go => go/HeapSort.go | 0 Automorphic Number => html/Automorphic Number | 0 JS-MOUSE-EVENT.HTML => html/JS-MOUSE-EVENT.HTML | 0 Studentform.html => html/Studentform.html | 0 .../client-side_validation | 0 form.html => html/form.html | 0 index.html => html/index.html | 0 js-arraydata.html => html/js-arraydata.html | 0 js-evenodd.html => html/js-evenodd.html | 0 .../js-formvalidation.html | 0 js-read-h1.html => html/js-read-h1.html | 0 js-value-textbox.html => html/js-value-textbox.html | 0 paralax.html => html/paralax.html | 0 stats.html => html/stats.html | 0 .../Question.pdf | Bin .../Solution.java | 0 Gt$Node.class => java/Gt$Node.class | Bin Gt.class => java/Gt.class | Bin Gt.java => java/Gt.java | 0 Island Perimeter => java/Island Perimeter | 0 {Java_Leap_year => java/Java_Leap_year}/demo_2.java | 0 KaratsubaAlgo.java => java/KaratsubaAlgo.java | 0 .../KnapSack}/KnapSackZeroOneRecursive.java | 0 MeanMedian2.java => java/MeanMedian2.java | 0 .../.idea/$PRODUCT_WORKSPACE_FILE$ | 0 .../Movie Recommender System}/.idea/.gitignore | 0 .../Movie Recommender System}/.idea/misc.xml | 0 .../Movie Recommender System}/.idea/modules.xml | 0 .../Movie Recommender System}/.idea/vcs.xml | 0 .../Movie Recommender System}/OOP Project.iml | 0 .../Movie Recommender System}/README.md | 0 .../out/production/OOP Project/Check.class | Bin .../out/production/OOP Project/Login.class | Bin .../out/production/OOP Project/MovieList.class | Bin .../out/production/OOP Project/MovieSuggester.class | Bin .../out/production/OOP Project/MyException.class | Bin .../out/production/OOP Project/SignUp.class | Bin .../out/production/OOP Project/User.class | Bin .../out/production/OOP Project/WriteToFile.class | Bin .../Movie Recommender System}/src/Check.java | 0 .../Movie Recommender System}/src/EraserThread.java | 0 .../Movie Recommender System}/src/Login.java | 0 .../Movie Recommender System}/src/MovieList.java | 0 .../src/MovieSuggester.java | 0 .../Movie Recommender System}/src/MyException.java | 0 .../src/PasswordField.java | 0 .../Movie Recommender System}/src/SignUp.java | 0 .../Movie Recommender System}/src/User.java | 0 .../Movie Recommender System}/src/WriteToFile.java | 0 PrimeCheck.java => java/PrimeCheck.java | 0 RandomGuess4.java => java/RandomGuess4.java | 0 StockBuySell.java => java/StockBuySell.java | 0 StringSort.java => java/StringSort.java | 0 .../Two Dimensional Array.java | 0 .../hotel-management-system.java | 0 leetcode 789.java => java/leetcode 789.java | 0 merge_sort.java => java/merge_sort.java | 0 optimizedprime.java => java/optimizedprime.java | 0 .../caesars-cipher.txt | 0 .../cash-register.txt | 0 .../palindrome-checker.txt | 0 .../roman-numeral-converter.txt | 0 .../telephone-number-validator.txt | 0 Bubble sort => js/Bubble sort | 0 HelloWorld.js => js/HelloWorld.js | 0 alpha_sort.js => js/alpha_sort.js | 0 binary_search.js => js/binary_search.js | 0 bracketNotation.js => js/bracketNotation.js | 0 factorial.js => js/factorial.js | 0 fibonacci.js => js/fibonacci.js | 0 given_sum.js => js/given_sum.js | 0 golfArray.js => js/golfArray.js | 0 isArray.js => js/isArray.js | 0 leetcode 43.js => js/leetcode 43.js | 0 lengthOfAString.js => js/lengthOfAString.js | 0 mergesort.js => js/mergesort.js | 0 minimum-swapper-2.js => js/minimum-swapper-2.js | 0 node-rectangle.js => js/node-rectangle.js | 0 order_by_index.js => js/order_by_index.js | 0 prime_number.js => js/prime_number.js | 0 quick_sort.js => js/quick_sort.js | 0 reverseAString.js => js/reverseAString.js | 0 reverse_str.js => js/reverse_str.js | 0 romanize.js => js/romanize.js | 0 .../rotate-array-from-left.js | 0 .../selecting WithSwitchStmts.js | 0 selection-sort.js => js/selection-sort.js | 0 Helloworld.php => php/Helloworld.php | 0 core.php => php/core.php | 0 AVL_tree_Deletion.py => python/AVL_tree_Deletion.py | 0 .../AVL_tree_Insertion.py | 0 BST.py => python/BST.py | 0 Binarysearch.py => python/Binarysearch.py | 0 BitonicSort.py => python/BitonicSort.py | 0 .../Catalan_Number_python.py | 0 .../CountPrimesUsingSieve.py | 0 CyclicSort.py => python/CyclicSort.py | 0 Fisher_Yates.py => python/Fisher_Yates.py | 0 GUI_AgeCalculator.py => python/GUI_AgeCalculator.py | 0 Guessing_Number.py => python/Guessing_Number.py | 0 .../Inorder_Successor_BinaryTree.py | 0 .../JPGtoPNG_Converter.py | 0 KadaneAlgorithm.py => python/KadaneAlgorithm.py | 0 Larry's-Array.py => python/Larry's-Array.py | 0 .../Level_Order_Traversal(BFS).py | 0 Linear_search.py => python/Linear_search.py | 0 List.ipynb => python/List.ipynb | 0 ...T Classification using Stacked Autoencoder.ipynb | 0 MSP.py => python/MSP.py | 0 Max_Subarray.py => python/Max_Subarray.py | 0 .../MergeSortPythonCCSC.py | 0 PathSum.py => python/PathSum.py | 0 Peak_array.py => python/Peak_array.py | 0 QueenAttack.py => python/QueenAttack.py | 0 QuickSort.py => python/QuickSort.py | 0 SelectionSort.py => python/SelectionSort.py | 0 Siteblocker.py => python/Siteblocker.py | 0 Stack.py => python/Stack.py | 0 .../StonePaperScissors.py | 0 TowerOfHanoi.py => python/TowerOfHanoi.py | 0 aes.py => python/aes.py | 0 aks prime test.py => python/aks prime test.py | 0 .../balanced_paranthesis.py | 0 bellmenford.py => python/bellmenford.py | 0 binary_search.py => python/binary_search.py | 0 bmi-calculator.py => python/bmi-calculator.py | 0 bmi.py => python/bmi.py | 0 bubble_sort.py => python/bubble_sort.py | 0 calculator.py => python/calculator.py | 0 clock.py => python/clock.py | 0 count_inversions.py => python/count_inversions.py | 0 cycleSort.py => python/cycleSort.py | 0 .../cycle_detection_linked_list.py | 0 diameter_Btree.py => python/diameter_Btree.py | 0 dijkstra.py => python/dijkstra.py | 0 fraction.py => python/fraction.py | 0 hybrid_sort.py => python/hybrid_sort.py | 0 insertion-sort.py => python/insertion-sort.py | 0 knapsack.py => python/knapsack.py | 0 kruskal.py => python/kruskal.py | 0 livecliterminal.py => python/livecliterminal.py | 0 mandelbrot_Set.py => python/mandelbrot_Set.py | 0 matching_paren.py => python/matching_paren.py | 0 .../matplotlib_graphs.ipynb | 0 matrixMultiply.py => python/matrixMultiply.py | 0 merge_sort.py => python/merge_sort.py | 0 .../min_in_sorted_&_rotated_array.py | 0 mirror_matrix.ipynb => python/mirror_matrix.ipynb | 0 missing-number.py => python/missing-number.py | 0 .../nlp_with_python.ipynb | 0 numberguesser.py => python/numberguesser.py | 0 numpy_basic.py => python/numpy_basic.py | 0 numpy_basics.ipynb => python/numpy_basics.ipynb | 0 palindrome.py => python/palindrome.py | 0 pandas_basics.ipynb => python/pandas_basics.ipynb | 0 permutermIndex.py => python/permutermIndex.py | 0 pong.py => python/pong.py | 0 prim.py => python/prim.py | 0 primefactor.py => python/primefactor.py | 0 quickselect_algo.py => python/quickselect_algo.py | 0 .../random_num_generator.py | 0 readability.py => python/readability.py | 0 scicalculator.py => python/scicalculator.py | 0 scorenotifier.py => python/scorenotifier.py | 0 snake-game.py => python/snake-game.py | 0 snakeGame.py => python/snakeGame.py | 0 speech_to_text.py => python/speech_to_text.py | 0 sudoku.py => python/sudoku.py | 0 telegrambot.py => python/telegrambot.py | 0 temp => python/temp | 0 tictactoe.py => python/tictactoe.py | 0 to_roman_numerals.py => python/to_roman_numerals.py | 0 url_shortner.py => python/url_shortner.py | 0 variableprogram.py => python/variableprogram.py | 0 bubble.rs => rust/bubble.rs | 0 .../burrows_wheeler_transform.rs | 0 hello.sh => shell scripts/hello.sh | 0 ping_host.sh => shell scripts/ping_host.sh | 0 341 files changed, 0 insertions(+), 0 deletions(-) rename linear-regression(grade prediction).R => R/linear-regression(grade prediction).R (100%) rename ArrayOfObject in Java => c/ArrayOfObject in Java (100%) rename Bubble_sort.c => c/Bubble_sort.c (100%) rename C_Program_to_Swap_Two_Numbers.c => c/C_Program_to_Swap_Two_Numbers.c (100%) rename CircularQueue.c => c/CircularQueue.c (100%) rename FactLargeNo.c => c/FactLargeNo.c (100%) rename HuffmanCoding.c => c/HuffmanCoding.c (100%) rename Insertion sort => c/Insertion sort (100%) rename JobSequencing => c/JobSequencing (100%) rename Palindrome Partition => c/Palindrome Partition (100%) rename Queue.c => c/Queue.c (100%) rename Stack.c => c/Stack.c (100%) rename Taskmanager.c => c/Taskmanager.c (100%) rename binary_search.c => c/binary_search.c (100%) rename binarytree.c => c/binarytree.c (100%) rename bubbleSort => c/bubbleSort (100%) rename clone => c/clone (100%) rename clone-graph => c/clone-graph (100%) rename cloning => c/cloning (100%) rename combinationFormula.c => c/combinationFormula.c (100%) rename double_linked_list.c => c/double_linked_list.c (100%) rename efficientExponent.c => c/efficientExponent.c (100%) rename graph_ques => c/graph_ques (100%) rename greedyalgorithum.c => c/greedyalgorithum.c (100%) rename guessTheNumber.c => c/guessTheNumber.c (100%) rename infix-to-postfix.c => c/infix-to-postfix.c (100%) rename insertionsort.c => c/insertionsort.c (100%) rename is_real_number.c => c/is_real_number.c (100%) rename linked_list.c => c/linked_list.c (100%) rename manojbank.c => c/manojbank.c (100%) rename minimum distance bw A and B (bfs) => c/minimum distance bw A and B (bfs) (100%) rename recordofdtuusingfile.c => c/recordofdtuusingfile.c (100%) rename stackoperationusingarray.c => c/stackoperationusingarray.c (100%) rename terraform-create-ec2.tf => c/terraform-create-ec2.tf (100%) rename time.c => c/time.c (100%) rename 2stacks_in_array.cpp => cpp/2stacks_in_array.cpp (100%) rename AVL.cpp => cpp/AVL.cpp (100%) rename Boruvka's_Algorithm_MSt.cpp => cpp/Boruvka's_Algorithm_MSt.cpp (100%) rename BucketSort.cpp => cpp/BucketSort.cpp (100%) rename CheckWhether.cpp => cpp/CheckWhether.cpp (100%) rename ChineseTheorem.cpp => cpp/ChineseTheorem.cpp (100%) rename Chinese_Remainder_Theorem.cpp => cpp/Chinese_Remainder_Theorem.cpp (100%) rename {Constructor and destructor => cpp/Constructor and destructor}/Constructor and destructor.cpp (100%) rename Covid.cpp => cpp/Covid.cpp (100%) rename DSU_implementation.cpp => cpp/DSU_implementation.cpp (100%) rename EvenOddChecker.cpp => cpp/EvenOddChecker.cpp (100%) rename Expression_Evaluation.cpp => cpp/Expression_Evaluation.cpp (100%) rename Find Kth Largest Number STL.cpp => cpp/Find Kth Largest Number STL.cpp (100%) rename Hackerrank - Sorting - Intro to Tutorial Challenges.cpp => cpp/Hackerrank - Sorting - Intro to Tutorial Challenges.cpp (100%) rename Heap Sort.cpp => cpp/Heap Sort.cpp (100%) rename Heap-Sort.cpp => cpp/Heap-Sort.cpp (100%) rename Knapsack.cpp => cpp/Knapsack.cpp (100%) rename Largest_lexicographic_Array.cpp => cpp/Largest_lexicographic_Array.cpp (100%) rename Longest_increaing_subseqeunce.cpp => cpp/Longest_increaing_subseqeunce.cpp (100%) rename Merge Sorted Array.cpp => cpp/Merge Sorted Array.cpp (100%) rename Min_Stack.cpp => cpp/Min_Stack.cpp (100%) rename NQueenProblem.cpp => cpp/NQueenProblem.cpp (100%) rename PerfectionCalculator.cpp => cpp/PerfectionCalculator.cpp (100%) rename Prime Path (SPOJ) using bfs.cpp => cpp/Prime Path (SPOJ) using bfs.cpp (100%) rename Reverse_String.cpp => cpp/Reverse_String.cpp (100%) rename RivestShamirAdleman.cpp => cpp/RivestShamirAdleman.cpp (100%) rename RotateList.cpp => cpp/RotateList.cpp (100%) rename SCC.cpp => cpp/SCC.cpp (100%) rename SchedulingAlgo.cpp => cpp/SchedulingAlgo.cpp (100%) rename SelectionSort.cpp => cpp/SelectionSort.cpp (100%) rename SimpleSnakeGame.cpp => cpp/SimpleSnakeGame.cpp (100%) rename SinglyLinkedList.cpp => cpp/SinglyLinkedList.cpp (100%) rename Stack_LinkedList.cpp => cpp/Stack_LinkedList.cpp (100%) rename Subarray_with_a_sum.cpp => cpp/Subarray_with_a_sum.cpp (100%) rename SubsetSum.cpp => cpp/SubsetSum.cpp (100%) rename TimSort.cpp => cpp/TimSort.cpp (100%) rename TowerOfHanoi.cpp => cpp/TowerOfHanoi.cpp (100%) rename addTwoNums.cpp => cpp/addTwoNums.cpp (100%) rename agressiveCows.cpp => cpp/agressiveCows.cpp (100%) rename all_sub_sequence_string.cpp => cpp/all_sub_sequence_string.cpp (100%) rename arrQ.cpp => cpp/arrQ.cpp (100%) rename balancedparenthesis.cpp => cpp/balancedparenthesis.cpp (100%) rename bankers_algorithm_safe_state.cpp => cpp/bankers_algorithm_safe_state.cpp (100%) rename bfs.cpp => cpp/bfs.cpp (100%) rename binary exponent loop.cpp => cpp/binary exponent loop.cpp (100%) rename binary exponent recursive.cpp => cpp/binary exponent recursive.cpp (100%) rename binarySearch.cpp => cpp/binarySearch.cpp (100%) rename binarysearch.cpp => cpp/binarysearch.cpp (100%) rename bit.cpp => cpp/bit.cpp (100%) rename bit_set_or_not.cpp => cpp/bit_set_or_not.cpp (100%) rename chess_borad.cpp => cpp/chess_borad.cpp (100%) rename chineseRemainder.cpp => cpp/chineseRemainder.cpp (100%) rename coinTower.cpp => cpp/coinTower.cpp (100%) rename countSort.cpp => cpp/countSort.cpp (100%) rename cpp-addressof.cpp => cpp/cpp-addressof.cpp (100%) rename createaalinkedlist.cpp => cpp/createaalinkedlist.cpp (100%) rename createalinkedlist.cpp => cpp/createalinkedlist.cpp (100%) rename cycle_detect.cpp => cpp/cycle_detect.cpp (100%) rename defish_images.cpp => cpp/defish_images.cpp (100%) rename deleteNode.cpp => cpp/deleteNode.cpp (100%) rename divide-et-impera-sumofarray.cpp => cpp/divide-et-impera-sumofarray.cpp (100%) rename divide_and_conquer_minmax.cpp => cpp/divide_and_conquer_minmax.cpp (100%) rename djkshtra_algo.cpp => cpp/djkshtra_algo.cpp (100%) rename dutchflag.cpp => cpp/dutchflag.cpp (100%) rename et or pfi using seive way.cpp => cpp/et or pfi using seive way.cpp (100%) rename etf or phi in sqrt(n).cpp => cpp/etf or phi in sqrt(n).cpp (100%) rename euclid extended.cpp => cpp/euclid extended.cpp (100%) rename euclidproblem.cpp => cpp/euclidproblem.cpp (100%) rename externalsort-algo.cpp => cpp/externalsort-algo.cpp (100%) rename fibonacci_series.cpp => cpp/fibonacci_series.cpp (100%) rename gcd.cpp => cpp/gcd.cpp (100%) rename guessing game.cpp => cpp/guessing game.cpp (100%) rename implementaion.cpp => cpp/implementaion.cpp (100%) rename insertionSort.cpp => cpp/insertionSort.cpp (100%) rename insertion_sort.cpp => cpp/insertion_sort.cpp (100%) rename inversionCount.cpp => cpp/inversionCount.cpp (100%) rename keyPadCharactors.cpp => cpp/keyPadCharactors.cpp (100%) rename kmp_algo.cpp => cpp/kmp_algo.cpp (100%) rename knightsTour.cpp => cpp/knightsTour.cpp (100%) rename krusgal.cpp => cpp/krusgal.cpp (100%) rename leetcode 12.cpp => cpp/leetcode 12.cpp (100%) rename leetcode 123.cpp => cpp/leetcode 123.cpp (100%) rename leetcode 345.cpp => cpp/leetcode 345.cpp (100%) rename leetcode 456.cpp => cpp/leetcode 456.cpp (100%) rename leetcode 678.cpp => cpp/leetcode 678.cpp (100%) rename leetcode 901.cpp => cpp/leetcode 901.cpp (100%) rename letterCasePermutations.cpp => cpp/letterCasePermutations.cpp (100%) rename linearsearch.cpp => cpp/linearsearch.cpp (100%) rename ll.cpp => cpp/ll.cpp (100%) rename lnkdsort.cpp => cpp/lnkdsort.cpp (100%) rename longestPalindrome.cpp => cpp/longestPalindrome.cpp (100%) rename maxGCD.cpp => cpp/maxGCD.cpp (100%) rename mergesort-algo.cpp => cpp/mergesort-algo.cpp (100%) rename minmax.cpp => cpp/minmax.cpp (100%) rename modexp.cpp => cpp/modexp.cpp (100%) rename modular exponent loop.cpp => cpp/modular exponent loop.cpp (100%) rename modular exponent recursion.cpp => cpp/modular exponent recursion.cpp (100%) rename new.cpp => cpp/new.cpp (100%) rename no of div with seive.cpp => cpp/no of div with seive.cpp (100%) rename no of div without seive.cpp => cpp/no of div without seive.cpp (100%) rename palindromeORnot.cpp => cpp/palindromeORnot.cpp (100%) rename postfixevaluation.cpp => cpp/postfixevaluation.cpp (100%) rename prims_algo.cpp => cpp/prims_algo.cpp (100%) rename printallduplicates.cpp => cpp/printallduplicates.cpp (100%) rename questions.cpp => cpp/questions.cpp (100%) rename queues_implementation.cpp => cpp/queues_implementation.cpp (100%) rename queueusingstacks.cpp => cpp/queueusingstacks.cpp (100%) rename queueusingstacks2.cpp => cpp/queueusingstacks2.cpp (100%) rename quick_sort.cpp => cpp/quick_sort.cpp (100%) rename quicksort-algo.cpp => cpp/quicksort-algo.cpp (100%) rename radixsort-algo.cpp => cpp/radixsort-algo.cpp (100%) rename redundant.cpp => cpp/redundant.cpp (100%) rename regex-match.cpp => cpp/regex-match.cpp (100%) rename reversestring.cpp => cpp/reversestring.cpp (100%) rename searchInBST.cpp => cpp/searchInBST.cpp (100%) rename stoogesort.cpp => cpp/stoogesort.cpp (100%) rename stringsarerotation.cpp => cpp/stringsarerotation.cpp (100%) rename subtractTwoNums.cpp => cpp/subtractTwoNums.cpp (100%) rename sudokuSolver.cpp => cpp/sudokuSolver.cpp (100%) rename sum of all div using seive.cpp => cpp/sum of all div using seive.cpp (100%) rename sum of all prime using seive.cpp => cpp/sum of all prime using seive.cpp (100%) rename ternarySearch.cpp => cpp/ternarySearch.cpp (100%) rename topologicalSort.cpp => cpp/topologicalSort.cpp (100%) rename total_number_set_bit.cpp => cpp/total_number_set_bit.cpp (100%) rename transformation_in_2D_triangle.cpp => cpp/transformation_in_2D_triangle.cpp (100%) rename version.cpp => cpp/version.cpp (100%) rename insertion_sort.cs => csharp/insertion_sort.cs (100%) rename HashJoin.go => go/HashJoin.go (100%) rename HeapSort.go => go/HeapSort.go (100%) rename Automorphic Number => html/Automorphic Number (100%) rename JS-MOUSE-EVENT.HTML => html/JS-MOUSE-EVENT.HTML (100%) rename Studentform.html => html/Studentform.html (100%) rename client-side_validation => html/client-side_validation (100%) rename form.html => html/form.html (100%) rename index.html => html/index.html (100%) rename js-arraydata.html => html/js-arraydata.html (100%) rename js-evenodd.html => html/js-evenodd.html (100%) rename js-formvalidation.html => html/js-formvalidation.html (100%) rename js-read-h1.html => html/js-read-h1.html (100%) rename js-value-textbox.html => html/js-value-textbox.html (100%) rename paralax.html => html/paralax.html (100%) rename stats.html => html/stats.html (100%) rename {Game Of Maximization(Hackerrank Hackfest 2020) => java/Game Of Maximization(Hackerrank Hackfest 2020)}/Question.pdf (100%) rename {Game Of Maximization(Hackerrank Hackfest 2020) => java/Game Of Maximization(Hackerrank Hackfest 2020)}/Solution.java (100%) rename Gt$Node.class => java/Gt$Node.class (100%) rename Gt.class => java/Gt.class (100%) rename Gt.java => java/Gt.java (100%) rename Island Perimeter => java/Island Perimeter (100%) rename {Java_Leap_year => java/Java_Leap_year}/demo_2.java (100%) rename KaratsubaAlgo.java => java/KaratsubaAlgo.java (100%) rename {KnapSack => java/KnapSack}/KnapSackZeroOneRecursive.java (100%) rename MeanMedian2.java => java/MeanMedian2.java (100%) rename {Movie Recommender System => java/Movie Recommender System}/.idea/$PRODUCT_WORKSPACE_FILE$ (100%) rename {Movie Recommender System => java/Movie Recommender System}/.idea/.gitignore (100%) rename {Movie Recommender System => java/Movie Recommender System}/.idea/misc.xml (100%) rename {Movie Recommender System => java/Movie Recommender System}/.idea/modules.xml (100%) rename {Movie Recommender System => java/Movie Recommender System}/.idea/vcs.xml (100%) rename {Movie Recommender System => java/Movie Recommender System}/OOP Project.iml (100%) rename {Movie Recommender System => java/Movie Recommender System}/README.md (100%) rename {Movie Recommender System => java/Movie Recommender System}/out/production/OOP Project/Check.class (100%) rename {Movie Recommender System => java/Movie Recommender System}/out/production/OOP Project/Login.class (100%) rename {Movie Recommender System => java/Movie Recommender System}/out/production/OOP Project/MovieList.class (100%) rename {Movie Recommender System => java/Movie Recommender System}/out/production/OOP Project/MovieSuggester.class (100%) rename {Movie Recommender System => java/Movie Recommender System}/out/production/OOP Project/MyException.class (100%) rename {Movie Recommender System => java/Movie Recommender System}/out/production/OOP Project/SignUp.class (100%) rename {Movie Recommender System => java/Movie Recommender System}/out/production/OOP Project/User.class (100%) rename {Movie Recommender System => java/Movie Recommender System}/out/production/OOP Project/WriteToFile.class (100%) rename {Movie Recommender System => java/Movie Recommender System}/src/Check.java (100%) rename {Movie Recommender System => java/Movie Recommender System}/src/EraserThread.java (100%) rename {Movie Recommender System => java/Movie Recommender System}/src/Login.java (100%) rename {Movie Recommender System => java/Movie Recommender System}/src/MovieList.java (100%) rename {Movie Recommender System => java/Movie Recommender System}/src/MovieSuggester.java (100%) rename {Movie Recommender System => java/Movie Recommender System}/src/MyException.java (100%) rename {Movie Recommender System => java/Movie Recommender System}/src/PasswordField.java (100%) rename {Movie Recommender System => java/Movie Recommender System}/src/SignUp.java (100%) rename {Movie Recommender System => java/Movie Recommender System}/src/User.java (100%) rename {Movie Recommender System => java/Movie Recommender System}/src/WriteToFile.java (100%) rename PrimeCheck.java => java/PrimeCheck.java (100%) rename RandomGuess4.java => java/RandomGuess4.java (100%) rename StockBuySell.java => java/StockBuySell.java (100%) rename StringSort.java => java/StringSort.java (100%) rename Two Dimensional Array.java => java/Two Dimensional Array.java (100%) rename hotel-management-system.java => java/hotel-management-system.java (100%) rename leetcode 789.java => java/leetcode 789.java (100%) rename merge_sort.java => java/merge_sort.java (100%) rename optimizedprime.java => java/optimizedprime.java (100%) rename {All FCC javascript and datastructures challenge solutions => js/All FCC javascript and datastructures challenge solutions}/caesars-cipher.txt (100%) rename {All FCC javascript and datastructures challenge solutions => js/All FCC javascript and datastructures challenge solutions}/cash-register.txt (100%) rename {All FCC javascript and datastructures challenge solutions => js/All FCC javascript and datastructures challenge solutions}/palindrome-checker.txt (100%) rename {All FCC javascript and datastructures challenge solutions => js/All FCC javascript and datastructures challenge solutions}/roman-numeral-converter.txt (100%) rename {All FCC javascript and datastructures challenge solutions => js/All FCC javascript and datastructures challenge solutions}/telephone-number-validator.txt (100%) rename Bubble sort => js/Bubble sort (100%) rename HelloWorld.js => js/HelloWorld.js (100%) rename alpha_sort.js => js/alpha_sort.js (100%) rename binary_search.js => js/binary_search.js (100%) rename bracketNotation.js => js/bracketNotation.js (100%) rename factorial.js => js/factorial.js (100%) rename fibonacci.js => js/fibonacci.js (100%) rename given_sum.js => js/given_sum.js (100%) rename golfArray.js => js/golfArray.js (100%) rename isArray.js => js/isArray.js (100%) rename leetcode 43.js => js/leetcode 43.js (100%) rename lengthOfAString.js => js/lengthOfAString.js (100%) rename mergesort.js => js/mergesort.js (100%) rename minimum-swapper-2.js => js/minimum-swapper-2.js (100%) rename node-rectangle.js => js/node-rectangle.js (100%) rename order_by_index.js => js/order_by_index.js (100%) rename prime_number.js => js/prime_number.js (100%) rename quick_sort.js => js/quick_sort.js (100%) rename reverseAString.js => js/reverseAString.js (100%) rename reverse_str.js => js/reverse_str.js (100%) rename romanize.js => js/romanize.js (100%) rename rotate-array-from-left.js => js/rotate-array-from-left.js (100%) rename selecting WithSwitchStmts.js => js/selecting WithSwitchStmts.js (100%) rename selection-sort.js => js/selection-sort.js (100%) rename Helloworld.php => php/Helloworld.php (100%) rename core.php => php/core.php (100%) rename AVL_tree_Deletion.py => python/AVL_tree_Deletion.py (100%) rename AVL_tree_Insertion.py => python/AVL_tree_Insertion.py (100%) rename BST.py => python/BST.py (100%) rename Binarysearch.py => python/Binarysearch.py (100%) rename BitonicSort.py => python/BitonicSort.py (100%) rename Catalan_Number_python.py => python/Catalan_Number_python.py (100%) rename CountPrimesUsingSieve.py => python/CountPrimesUsingSieve.py (100%) rename CyclicSort.py => python/CyclicSort.py (100%) rename Fisher_Yates.py => python/Fisher_Yates.py (100%) rename GUI_AgeCalculator.py => python/GUI_AgeCalculator.py (100%) rename Guessing_Number.py => python/Guessing_Number.py (100%) rename Inorder_Successor_BinaryTree.py => python/Inorder_Successor_BinaryTree.py (100%) rename JPGtoPNG_Converter.py => python/JPGtoPNG_Converter.py (100%) rename KadaneAlgorithm.py => python/KadaneAlgorithm.py (100%) rename Larry's-Array.py => python/Larry's-Array.py (100%) rename Level_Order_Traversal(BFS).py => python/Level_Order_Traversal(BFS).py (100%) rename Linear_search.py => python/Linear_search.py (100%) rename List.ipynb => python/List.ipynb (100%) rename MNIST Classification using Stacked Autoencoder.ipynb => python/MNIST Classification using Stacked Autoencoder.ipynb (100%) rename MSP.py => python/MSP.py (100%) rename Max_Subarray.py => python/Max_Subarray.py (100%) rename MergeSortPythonCCSC.py => python/MergeSortPythonCCSC.py (100%) rename PathSum.py => python/PathSum.py (100%) rename Peak_array.py => python/Peak_array.py (100%) rename QueenAttack.py => python/QueenAttack.py (100%) rename QuickSort.py => python/QuickSort.py (100%) rename SelectionSort.py => python/SelectionSort.py (100%) rename Siteblocker.py => python/Siteblocker.py (100%) rename Stack.py => python/Stack.py (100%) rename StonePaperScissors.py => python/StonePaperScissors.py (100%) rename TowerOfHanoi.py => python/TowerOfHanoi.py (100%) rename aes.py => python/aes.py (100%) rename aks prime test.py => python/aks prime test.py (100%) rename balanced_paranthesis.py => python/balanced_paranthesis.py (100%) rename bellmenford.py => python/bellmenford.py (100%) rename binary_search.py => python/binary_search.py (100%) rename bmi-calculator.py => python/bmi-calculator.py (100%) rename bmi.py => python/bmi.py (100%) rename bubble_sort.py => python/bubble_sort.py (100%) rename calculator.py => python/calculator.py (100%) rename clock.py => python/clock.py (100%) rename count_inversions.py => python/count_inversions.py (100%) rename cycleSort.py => python/cycleSort.py (100%) rename cycle_detection_linked_list.py => python/cycle_detection_linked_list.py (100%) rename diameter_Btree.py => python/diameter_Btree.py (100%) rename dijkstra.py => python/dijkstra.py (100%) rename fraction.py => python/fraction.py (100%) rename hybrid_sort.py => python/hybrid_sort.py (100%) rename insertion-sort.py => python/insertion-sort.py (100%) rename knapsack.py => python/knapsack.py (100%) rename kruskal.py => python/kruskal.py (100%) rename livecliterminal.py => python/livecliterminal.py (100%) rename mandelbrot_Set.py => python/mandelbrot_Set.py (100%) rename matching_paren.py => python/matching_paren.py (100%) rename matplotlib_graphs.ipynb => python/matplotlib_graphs.ipynb (100%) rename matrixMultiply.py => python/matrixMultiply.py (100%) rename merge_sort.py => python/merge_sort.py (100%) rename min_in_sorted_&_rotated_array.py => python/min_in_sorted_&_rotated_array.py (100%) rename mirror_matrix.ipynb => python/mirror_matrix.ipynb (100%) rename missing-number.py => python/missing-number.py (100%) rename nlp_with_python.ipynb => python/nlp_with_python.ipynb (100%) rename numberguesser.py => python/numberguesser.py (100%) rename numpy_basic.py => python/numpy_basic.py (100%) rename numpy_basics.ipynb => python/numpy_basics.ipynb (100%) rename palindrome.py => python/palindrome.py (100%) rename pandas_basics.ipynb => python/pandas_basics.ipynb (100%) rename permutermIndex.py => python/permutermIndex.py (100%) rename pong.py => python/pong.py (100%) rename prim.py => python/prim.py (100%) rename primefactor.py => python/primefactor.py (100%) rename quickselect_algo.py => python/quickselect_algo.py (100%) rename random_num_generator.py => python/random_num_generator.py (100%) rename readability.py => python/readability.py (100%) rename scicalculator.py => python/scicalculator.py (100%) rename scorenotifier.py => python/scorenotifier.py (100%) rename snake-game.py => python/snake-game.py (100%) rename snakeGame.py => python/snakeGame.py (100%) rename speech_to_text.py => python/speech_to_text.py (100%) rename sudoku.py => python/sudoku.py (100%) rename telegrambot.py => python/telegrambot.py (100%) rename temp => python/temp (100%) rename tictactoe.py => python/tictactoe.py (100%) rename to_roman_numerals.py => python/to_roman_numerals.py (100%) rename url_shortner.py => python/url_shortner.py (100%) rename variableprogram.py => python/variableprogram.py (100%) rename bubble.rs => rust/bubble.rs (100%) rename burrows_wheeler_transform.rs => rust/burrows_wheeler_transform.rs (100%) rename hello.sh => shell scripts/hello.sh (100%) rename ping_host.sh => shell scripts/ping_host.sh (100%) diff --git a/linear-regression(grade prediction).R b/R/linear-regression(grade prediction).R similarity index 100% rename from linear-regression(grade prediction).R rename to R/linear-regression(grade prediction).R diff --git a/ArrayOfObject in Java b/c/ArrayOfObject in Java similarity index 100% rename from ArrayOfObject in Java rename to c/ArrayOfObject in Java diff --git a/Bubble_sort.c b/c/Bubble_sort.c similarity index 100% rename from Bubble_sort.c rename to c/Bubble_sort.c diff --git a/C_Program_to_Swap_Two_Numbers.c b/c/C_Program_to_Swap_Two_Numbers.c similarity index 100% rename from C_Program_to_Swap_Two_Numbers.c rename to c/C_Program_to_Swap_Two_Numbers.c diff --git a/CircularQueue.c b/c/CircularQueue.c similarity index 100% rename from CircularQueue.c rename to c/CircularQueue.c diff --git a/FactLargeNo.c b/c/FactLargeNo.c similarity index 100% rename from FactLargeNo.c rename to c/FactLargeNo.c diff --git a/HuffmanCoding.c b/c/HuffmanCoding.c similarity index 100% rename from HuffmanCoding.c rename to c/HuffmanCoding.c diff --git a/Insertion sort b/c/Insertion sort similarity index 100% rename from Insertion sort rename to c/Insertion sort diff --git a/JobSequencing b/c/JobSequencing similarity index 100% rename from JobSequencing rename to c/JobSequencing diff --git a/Palindrome Partition b/c/Palindrome Partition similarity index 100% rename from Palindrome Partition rename to c/Palindrome Partition diff --git a/Queue.c b/c/Queue.c similarity index 100% rename from Queue.c rename to c/Queue.c diff --git a/Stack.c b/c/Stack.c similarity index 100% rename from Stack.c rename to c/Stack.c diff --git a/Taskmanager.c b/c/Taskmanager.c similarity index 100% rename from Taskmanager.c rename to c/Taskmanager.c diff --git a/binary_search.c b/c/binary_search.c similarity index 100% rename from binary_search.c rename to c/binary_search.c diff --git a/binarytree.c b/c/binarytree.c similarity index 100% rename from binarytree.c rename to c/binarytree.c diff --git a/bubbleSort b/c/bubbleSort similarity index 100% rename from bubbleSort rename to c/bubbleSort diff --git a/clone b/c/clone similarity index 100% rename from clone rename to c/clone diff --git a/clone-graph b/c/clone-graph similarity index 100% rename from clone-graph rename to c/clone-graph diff --git a/cloning b/c/cloning similarity index 100% rename from cloning rename to c/cloning diff --git a/combinationFormula.c b/c/combinationFormula.c similarity index 100% rename from combinationFormula.c rename to c/combinationFormula.c diff --git a/double_linked_list.c b/c/double_linked_list.c similarity index 100% rename from double_linked_list.c rename to c/double_linked_list.c diff --git a/efficientExponent.c b/c/efficientExponent.c similarity index 100% rename from efficientExponent.c rename to c/efficientExponent.c diff --git a/graph_ques b/c/graph_ques similarity index 100% rename from graph_ques rename to c/graph_ques diff --git a/greedyalgorithum.c b/c/greedyalgorithum.c similarity index 100% rename from greedyalgorithum.c rename to c/greedyalgorithum.c diff --git a/guessTheNumber.c b/c/guessTheNumber.c similarity index 100% rename from guessTheNumber.c rename to c/guessTheNumber.c diff --git a/infix-to-postfix.c b/c/infix-to-postfix.c similarity index 100% rename from infix-to-postfix.c rename to c/infix-to-postfix.c diff --git a/insertionsort.c b/c/insertionsort.c similarity index 100% rename from insertionsort.c rename to c/insertionsort.c diff --git a/is_real_number.c b/c/is_real_number.c similarity index 100% rename from is_real_number.c rename to c/is_real_number.c diff --git a/linked_list.c b/c/linked_list.c similarity index 100% rename from linked_list.c rename to c/linked_list.c diff --git a/manojbank.c b/c/manojbank.c similarity index 100% rename from manojbank.c rename to c/manojbank.c diff --git a/minimum distance bw A and B (bfs) b/c/minimum distance bw A and B (bfs) similarity index 100% rename from minimum distance bw A and B (bfs) rename to c/minimum distance bw A and B (bfs) diff --git a/recordofdtuusingfile.c b/c/recordofdtuusingfile.c similarity index 100% rename from recordofdtuusingfile.c rename to c/recordofdtuusingfile.c diff --git a/stackoperationusingarray.c b/c/stackoperationusingarray.c similarity index 100% rename from stackoperationusingarray.c rename to c/stackoperationusingarray.c diff --git a/terraform-create-ec2.tf b/c/terraform-create-ec2.tf similarity index 100% rename from terraform-create-ec2.tf rename to c/terraform-create-ec2.tf diff --git a/time.c b/c/time.c similarity index 100% rename from time.c rename to c/time.c diff --git a/2stacks_in_array.cpp b/cpp/2stacks_in_array.cpp similarity index 100% rename from 2stacks_in_array.cpp rename to cpp/2stacks_in_array.cpp diff --git a/AVL.cpp b/cpp/AVL.cpp similarity index 100% rename from AVL.cpp rename to cpp/AVL.cpp diff --git a/Boruvka's_Algorithm_MSt.cpp b/cpp/Boruvka's_Algorithm_MSt.cpp similarity index 100% rename from Boruvka's_Algorithm_MSt.cpp rename to cpp/Boruvka's_Algorithm_MSt.cpp diff --git a/BucketSort.cpp b/cpp/BucketSort.cpp similarity index 100% rename from BucketSort.cpp rename to cpp/BucketSort.cpp diff --git a/CheckWhether.cpp b/cpp/CheckWhether.cpp similarity index 100% rename from CheckWhether.cpp rename to cpp/CheckWhether.cpp diff --git a/ChineseTheorem.cpp b/cpp/ChineseTheorem.cpp similarity index 100% rename from ChineseTheorem.cpp rename to cpp/ChineseTheorem.cpp diff --git a/Chinese_Remainder_Theorem.cpp b/cpp/Chinese_Remainder_Theorem.cpp similarity index 100% rename from Chinese_Remainder_Theorem.cpp rename to cpp/Chinese_Remainder_Theorem.cpp diff --git a/Constructor and destructor/Constructor and destructor.cpp b/cpp/Constructor and destructor/Constructor and destructor.cpp similarity index 100% rename from Constructor and destructor/Constructor and destructor.cpp rename to cpp/Constructor and destructor/Constructor and destructor.cpp diff --git a/Covid.cpp b/cpp/Covid.cpp similarity index 100% rename from Covid.cpp rename to cpp/Covid.cpp diff --git a/DSU_implementation.cpp b/cpp/DSU_implementation.cpp similarity index 100% rename from DSU_implementation.cpp rename to cpp/DSU_implementation.cpp diff --git a/EvenOddChecker.cpp b/cpp/EvenOddChecker.cpp similarity index 100% rename from EvenOddChecker.cpp rename to cpp/EvenOddChecker.cpp diff --git a/Expression_Evaluation.cpp b/cpp/Expression_Evaluation.cpp similarity index 100% rename from Expression_Evaluation.cpp rename to cpp/Expression_Evaluation.cpp diff --git a/Find Kth Largest Number STL.cpp b/cpp/Find Kth Largest Number STL.cpp similarity index 100% rename from Find Kth Largest Number STL.cpp rename to cpp/Find Kth Largest Number STL.cpp diff --git a/Hackerrank - Sorting - Intro to Tutorial Challenges.cpp b/cpp/Hackerrank - Sorting - Intro to Tutorial Challenges.cpp similarity index 100% rename from Hackerrank - Sorting - Intro to Tutorial Challenges.cpp rename to cpp/Hackerrank - Sorting - Intro to Tutorial Challenges.cpp diff --git a/Heap Sort.cpp b/cpp/Heap Sort.cpp similarity index 100% rename from Heap Sort.cpp rename to cpp/Heap Sort.cpp diff --git a/Heap-Sort.cpp b/cpp/Heap-Sort.cpp similarity index 100% rename from Heap-Sort.cpp rename to cpp/Heap-Sort.cpp diff --git a/Knapsack.cpp b/cpp/Knapsack.cpp similarity index 100% rename from Knapsack.cpp rename to cpp/Knapsack.cpp diff --git a/Largest_lexicographic_Array.cpp b/cpp/Largest_lexicographic_Array.cpp similarity index 100% rename from Largest_lexicographic_Array.cpp rename to cpp/Largest_lexicographic_Array.cpp diff --git a/Longest_increaing_subseqeunce.cpp b/cpp/Longest_increaing_subseqeunce.cpp similarity index 100% rename from Longest_increaing_subseqeunce.cpp rename to cpp/Longest_increaing_subseqeunce.cpp diff --git a/Merge Sorted Array.cpp b/cpp/Merge Sorted Array.cpp similarity index 100% rename from Merge Sorted Array.cpp rename to cpp/Merge Sorted Array.cpp diff --git a/Min_Stack.cpp b/cpp/Min_Stack.cpp similarity index 100% rename from Min_Stack.cpp rename to cpp/Min_Stack.cpp diff --git a/NQueenProblem.cpp b/cpp/NQueenProblem.cpp similarity index 100% rename from NQueenProblem.cpp rename to cpp/NQueenProblem.cpp diff --git a/PerfectionCalculator.cpp b/cpp/PerfectionCalculator.cpp similarity index 100% rename from PerfectionCalculator.cpp rename to cpp/PerfectionCalculator.cpp diff --git a/Prime Path (SPOJ) using bfs.cpp b/cpp/Prime Path (SPOJ) using bfs.cpp similarity index 100% rename from Prime Path (SPOJ) using bfs.cpp rename to cpp/Prime Path (SPOJ) using bfs.cpp diff --git a/Reverse_String.cpp b/cpp/Reverse_String.cpp similarity index 100% rename from Reverse_String.cpp rename to cpp/Reverse_String.cpp diff --git a/RivestShamirAdleman.cpp b/cpp/RivestShamirAdleman.cpp similarity index 100% rename from RivestShamirAdleman.cpp rename to cpp/RivestShamirAdleman.cpp diff --git a/RotateList.cpp b/cpp/RotateList.cpp similarity index 100% rename from RotateList.cpp rename to cpp/RotateList.cpp diff --git a/SCC.cpp b/cpp/SCC.cpp similarity index 100% rename from SCC.cpp rename to cpp/SCC.cpp diff --git a/SchedulingAlgo.cpp b/cpp/SchedulingAlgo.cpp similarity index 100% rename from SchedulingAlgo.cpp rename to cpp/SchedulingAlgo.cpp diff --git a/SelectionSort.cpp b/cpp/SelectionSort.cpp similarity index 100% rename from SelectionSort.cpp rename to cpp/SelectionSort.cpp diff --git a/SimpleSnakeGame.cpp b/cpp/SimpleSnakeGame.cpp similarity index 100% rename from SimpleSnakeGame.cpp rename to cpp/SimpleSnakeGame.cpp diff --git a/SinglyLinkedList.cpp b/cpp/SinglyLinkedList.cpp similarity index 100% rename from SinglyLinkedList.cpp rename to cpp/SinglyLinkedList.cpp diff --git a/Stack_LinkedList.cpp b/cpp/Stack_LinkedList.cpp similarity index 100% rename from Stack_LinkedList.cpp rename to cpp/Stack_LinkedList.cpp diff --git a/Subarray_with_a_sum.cpp b/cpp/Subarray_with_a_sum.cpp similarity index 100% rename from Subarray_with_a_sum.cpp rename to cpp/Subarray_with_a_sum.cpp diff --git a/SubsetSum.cpp b/cpp/SubsetSum.cpp similarity index 100% rename from SubsetSum.cpp rename to cpp/SubsetSum.cpp diff --git a/TimSort.cpp b/cpp/TimSort.cpp similarity index 100% rename from TimSort.cpp rename to cpp/TimSort.cpp diff --git a/TowerOfHanoi.cpp b/cpp/TowerOfHanoi.cpp similarity index 100% rename from TowerOfHanoi.cpp rename to cpp/TowerOfHanoi.cpp diff --git a/addTwoNums.cpp b/cpp/addTwoNums.cpp similarity index 100% rename from addTwoNums.cpp rename to cpp/addTwoNums.cpp diff --git a/agressiveCows.cpp b/cpp/agressiveCows.cpp similarity index 100% rename from agressiveCows.cpp rename to cpp/agressiveCows.cpp diff --git a/all_sub_sequence_string.cpp b/cpp/all_sub_sequence_string.cpp similarity index 100% rename from all_sub_sequence_string.cpp rename to cpp/all_sub_sequence_string.cpp diff --git a/arrQ.cpp b/cpp/arrQ.cpp similarity index 100% rename from arrQ.cpp rename to cpp/arrQ.cpp diff --git a/balancedparenthesis.cpp b/cpp/balancedparenthesis.cpp similarity index 100% rename from balancedparenthesis.cpp rename to cpp/balancedparenthesis.cpp diff --git a/bankers_algorithm_safe_state.cpp b/cpp/bankers_algorithm_safe_state.cpp similarity index 100% rename from bankers_algorithm_safe_state.cpp rename to cpp/bankers_algorithm_safe_state.cpp diff --git a/bfs.cpp b/cpp/bfs.cpp similarity index 100% rename from bfs.cpp rename to cpp/bfs.cpp diff --git a/binary exponent loop.cpp b/cpp/binary exponent loop.cpp similarity index 100% rename from binary exponent loop.cpp rename to cpp/binary exponent loop.cpp diff --git a/binary exponent recursive.cpp b/cpp/binary exponent recursive.cpp similarity index 100% rename from binary exponent recursive.cpp rename to cpp/binary exponent recursive.cpp diff --git a/binarySearch.cpp b/cpp/binarySearch.cpp similarity index 100% rename from binarySearch.cpp rename to cpp/binarySearch.cpp diff --git a/binarysearch.cpp b/cpp/binarysearch.cpp similarity index 100% rename from binarysearch.cpp rename to cpp/binarysearch.cpp diff --git a/bit.cpp b/cpp/bit.cpp similarity index 100% rename from bit.cpp rename to cpp/bit.cpp diff --git a/bit_set_or_not.cpp b/cpp/bit_set_or_not.cpp similarity index 100% rename from bit_set_or_not.cpp rename to cpp/bit_set_or_not.cpp diff --git a/chess_borad.cpp b/cpp/chess_borad.cpp similarity index 100% rename from chess_borad.cpp rename to cpp/chess_borad.cpp diff --git a/chineseRemainder.cpp b/cpp/chineseRemainder.cpp similarity index 100% rename from chineseRemainder.cpp rename to cpp/chineseRemainder.cpp diff --git a/coinTower.cpp b/cpp/coinTower.cpp similarity index 100% rename from coinTower.cpp rename to cpp/coinTower.cpp diff --git a/countSort.cpp b/cpp/countSort.cpp similarity index 100% rename from countSort.cpp rename to cpp/countSort.cpp diff --git a/cpp-addressof.cpp b/cpp/cpp-addressof.cpp similarity index 100% rename from cpp-addressof.cpp rename to cpp/cpp-addressof.cpp diff --git a/createaalinkedlist.cpp b/cpp/createaalinkedlist.cpp similarity index 100% rename from createaalinkedlist.cpp rename to cpp/createaalinkedlist.cpp diff --git a/createalinkedlist.cpp b/cpp/createalinkedlist.cpp similarity index 100% rename from createalinkedlist.cpp rename to cpp/createalinkedlist.cpp diff --git a/cycle_detect.cpp b/cpp/cycle_detect.cpp similarity index 100% rename from cycle_detect.cpp rename to cpp/cycle_detect.cpp diff --git a/defish_images.cpp b/cpp/defish_images.cpp similarity index 100% rename from defish_images.cpp rename to cpp/defish_images.cpp diff --git a/deleteNode.cpp b/cpp/deleteNode.cpp similarity index 100% rename from deleteNode.cpp rename to cpp/deleteNode.cpp diff --git a/divide-et-impera-sumofarray.cpp b/cpp/divide-et-impera-sumofarray.cpp similarity index 100% rename from divide-et-impera-sumofarray.cpp rename to cpp/divide-et-impera-sumofarray.cpp diff --git a/divide_and_conquer_minmax.cpp b/cpp/divide_and_conquer_minmax.cpp similarity index 100% rename from divide_and_conquer_minmax.cpp rename to cpp/divide_and_conquer_minmax.cpp diff --git a/djkshtra_algo.cpp b/cpp/djkshtra_algo.cpp similarity index 100% rename from djkshtra_algo.cpp rename to cpp/djkshtra_algo.cpp diff --git a/dutchflag.cpp b/cpp/dutchflag.cpp similarity index 100% rename from dutchflag.cpp rename to cpp/dutchflag.cpp diff --git a/et or pfi using seive way.cpp b/cpp/et or pfi using seive way.cpp similarity index 100% rename from et or pfi using seive way.cpp rename to cpp/et or pfi using seive way.cpp diff --git a/etf or phi in sqrt(n).cpp b/cpp/etf or phi in sqrt(n).cpp similarity index 100% rename from etf or phi in sqrt(n).cpp rename to cpp/etf or phi in sqrt(n).cpp diff --git a/euclid extended.cpp b/cpp/euclid extended.cpp similarity index 100% rename from euclid extended.cpp rename to cpp/euclid extended.cpp diff --git a/euclidproblem.cpp b/cpp/euclidproblem.cpp similarity index 100% rename from euclidproblem.cpp rename to cpp/euclidproblem.cpp diff --git a/externalsort-algo.cpp b/cpp/externalsort-algo.cpp similarity index 100% rename from externalsort-algo.cpp rename to cpp/externalsort-algo.cpp diff --git a/fibonacci_series.cpp b/cpp/fibonacci_series.cpp similarity index 100% rename from fibonacci_series.cpp rename to cpp/fibonacci_series.cpp diff --git a/gcd.cpp b/cpp/gcd.cpp similarity index 100% rename from gcd.cpp rename to cpp/gcd.cpp diff --git a/guessing game.cpp b/cpp/guessing game.cpp similarity index 100% rename from guessing game.cpp rename to cpp/guessing game.cpp diff --git a/implementaion.cpp b/cpp/implementaion.cpp similarity index 100% rename from implementaion.cpp rename to cpp/implementaion.cpp diff --git a/insertionSort.cpp b/cpp/insertionSort.cpp similarity index 100% rename from insertionSort.cpp rename to cpp/insertionSort.cpp diff --git a/insertion_sort.cpp b/cpp/insertion_sort.cpp similarity index 100% rename from insertion_sort.cpp rename to cpp/insertion_sort.cpp diff --git a/inversionCount.cpp b/cpp/inversionCount.cpp similarity index 100% rename from inversionCount.cpp rename to cpp/inversionCount.cpp diff --git a/keyPadCharactors.cpp b/cpp/keyPadCharactors.cpp similarity index 100% rename from keyPadCharactors.cpp rename to cpp/keyPadCharactors.cpp diff --git a/kmp_algo.cpp b/cpp/kmp_algo.cpp similarity index 100% rename from kmp_algo.cpp rename to cpp/kmp_algo.cpp diff --git a/knightsTour.cpp b/cpp/knightsTour.cpp similarity index 100% rename from knightsTour.cpp rename to cpp/knightsTour.cpp diff --git a/krusgal.cpp b/cpp/krusgal.cpp similarity index 100% rename from krusgal.cpp rename to cpp/krusgal.cpp diff --git a/leetcode 12.cpp b/cpp/leetcode 12.cpp similarity index 100% rename from leetcode 12.cpp rename to cpp/leetcode 12.cpp diff --git a/leetcode 123.cpp b/cpp/leetcode 123.cpp similarity index 100% rename from leetcode 123.cpp rename to cpp/leetcode 123.cpp diff --git a/leetcode 345.cpp b/cpp/leetcode 345.cpp similarity index 100% rename from leetcode 345.cpp rename to cpp/leetcode 345.cpp diff --git a/leetcode 456.cpp b/cpp/leetcode 456.cpp similarity index 100% rename from leetcode 456.cpp rename to cpp/leetcode 456.cpp diff --git a/leetcode 678.cpp b/cpp/leetcode 678.cpp similarity index 100% rename from leetcode 678.cpp rename to cpp/leetcode 678.cpp diff --git a/leetcode 901.cpp b/cpp/leetcode 901.cpp similarity index 100% rename from leetcode 901.cpp rename to cpp/leetcode 901.cpp diff --git a/letterCasePermutations.cpp b/cpp/letterCasePermutations.cpp similarity index 100% rename from letterCasePermutations.cpp rename to cpp/letterCasePermutations.cpp diff --git a/linearsearch.cpp b/cpp/linearsearch.cpp similarity index 100% rename from linearsearch.cpp rename to cpp/linearsearch.cpp diff --git a/ll.cpp b/cpp/ll.cpp similarity index 100% rename from ll.cpp rename to cpp/ll.cpp diff --git a/lnkdsort.cpp b/cpp/lnkdsort.cpp similarity index 100% rename from lnkdsort.cpp rename to cpp/lnkdsort.cpp diff --git a/longestPalindrome.cpp b/cpp/longestPalindrome.cpp similarity index 100% rename from longestPalindrome.cpp rename to cpp/longestPalindrome.cpp diff --git a/maxGCD.cpp b/cpp/maxGCD.cpp similarity index 100% rename from maxGCD.cpp rename to cpp/maxGCD.cpp diff --git a/mergesort-algo.cpp b/cpp/mergesort-algo.cpp similarity index 100% rename from mergesort-algo.cpp rename to cpp/mergesort-algo.cpp diff --git a/minmax.cpp b/cpp/minmax.cpp similarity index 100% rename from minmax.cpp rename to cpp/minmax.cpp diff --git a/modexp.cpp b/cpp/modexp.cpp similarity index 100% rename from modexp.cpp rename to cpp/modexp.cpp diff --git a/modular exponent loop.cpp b/cpp/modular exponent loop.cpp similarity index 100% rename from modular exponent loop.cpp rename to cpp/modular exponent loop.cpp diff --git a/modular exponent recursion.cpp b/cpp/modular exponent recursion.cpp similarity index 100% rename from modular exponent recursion.cpp rename to cpp/modular exponent recursion.cpp diff --git a/new.cpp b/cpp/new.cpp similarity index 100% rename from new.cpp rename to cpp/new.cpp diff --git a/no of div with seive.cpp b/cpp/no of div with seive.cpp similarity index 100% rename from no of div with seive.cpp rename to cpp/no of div with seive.cpp diff --git a/no of div without seive.cpp b/cpp/no of div without seive.cpp similarity index 100% rename from no of div without seive.cpp rename to cpp/no of div without seive.cpp diff --git a/palindromeORnot.cpp b/cpp/palindromeORnot.cpp similarity index 100% rename from palindromeORnot.cpp rename to cpp/palindromeORnot.cpp diff --git a/postfixevaluation.cpp b/cpp/postfixevaluation.cpp similarity index 100% rename from postfixevaluation.cpp rename to cpp/postfixevaluation.cpp diff --git a/prims_algo.cpp b/cpp/prims_algo.cpp similarity index 100% rename from prims_algo.cpp rename to cpp/prims_algo.cpp diff --git a/printallduplicates.cpp b/cpp/printallduplicates.cpp similarity index 100% rename from printallduplicates.cpp rename to cpp/printallduplicates.cpp diff --git a/questions.cpp b/cpp/questions.cpp similarity index 100% rename from questions.cpp rename to cpp/questions.cpp diff --git a/queues_implementation.cpp b/cpp/queues_implementation.cpp similarity index 100% rename from queues_implementation.cpp rename to cpp/queues_implementation.cpp diff --git a/queueusingstacks.cpp b/cpp/queueusingstacks.cpp similarity index 100% rename from queueusingstacks.cpp rename to cpp/queueusingstacks.cpp diff --git a/queueusingstacks2.cpp b/cpp/queueusingstacks2.cpp similarity index 100% rename from queueusingstacks2.cpp rename to cpp/queueusingstacks2.cpp diff --git a/quick_sort.cpp b/cpp/quick_sort.cpp similarity index 100% rename from quick_sort.cpp rename to cpp/quick_sort.cpp diff --git a/quicksort-algo.cpp b/cpp/quicksort-algo.cpp similarity index 100% rename from quicksort-algo.cpp rename to cpp/quicksort-algo.cpp diff --git a/radixsort-algo.cpp b/cpp/radixsort-algo.cpp similarity index 100% rename from radixsort-algo.cpp rename to cpp/radixsort-algo.cpp diff --git a/redundant.cpp b/cpp/redundant.cpp similarity index 100% rename from redundant.cpp rename to cpp/redundant.cpp diff --git a/regex-match.cpp b/cpp/regex-match.cpp similarity index 100% rename from regex-match.cpp rename to cpp/regex-match.cpp diff --git a/reversestring.cpp b/cpp/reversestring.cpp similarity index 100% rename from reversestring.cpp rename to cpp/reversestring.cpp diff --git a/searchInBST.cpp b/cpp/searchInBST.cpp similarity index 100% rename from searchInBST.cpp rename to cpp/searchInBST.cpp diff --git a/stoogesort.cpp b/cpp/stoogesort.cpp similarity index 100% rename from stoogesort.cpp rename to cpp/stoogesort.cpp diff --git a/stringsarerotation.cpp b/cpp/stringsarerotation.cpp similarity index 100% rename from stringsarerotation.cpp rename to cpp/stringsarerotation.cpp diff --git a/subtractTwoNums.cpp b/cpp/subtractTwoNums.cpp similarity index 100% rename from subtractTwoNums.cpp rename to cpp/subtractTwoNums.cpp diff --git a/sudokuSolver.cpp b/cpp/sudokuSolver.cpp similarity index 100% rename from sudokuSolver.cpp rename to cpp/sudokuSolver.cpp diff --git a/sum of all div using seive.cpp b/cpp/sum of all div using seive.cpp similarity index 100% rename from sum of all div using seive.cpp rename to cpp/sum of all div using seive.cpp diff --git a/sum of all prime using seive.cpp b/cpp/sum of all prime using seive.cpp similarity index 100% rename from sum of all prime using seive.cpp rename to cpp/sum of all prime using seive.cpp diff --git a/ternarySearch.cpp b/cpp/ternarySearch.cpp similarity index 100% rename from ternarySearch.cpp rename to cpp/ternarySearch.cpp diff --git a/topologicalSort.cpp b/cpp/topologicalSort.cpp similarity index 100% rename from topologicalSort.cpp rename to cpp/topologicalSort.cpp diff --git a/total_number_set_bit.cpp b/cpp/total_number_set_bit.cpp similarity index 100% rename from total_number_set_bit.cpp rename to cpp/total_number_set_bit.cpp diff --git a/transformation_in_2D_triangle.cpp b/cpp/transformation_in_2D_triangle.cpp similarity index 100% rename from transformation_in_2D_triangle.cpp rename to cpp/transformation_in_2D_triangle.cpp diff --git a/version.cpp b/cpp/version.cpp similarity index 100% rename from version.cpp rename to cpp/version.cpp diff --git a/insertion_sort.cs b/csharp/insertion_sort.cs similarity index 100% rename from insertion_sort.cs rename to csharp/insertion_sort.cs diff --git a/HashJoin.go b/go/HashJoin.go similarity index 100% rename from HashJoin.go rename to go/HashJoin.go diff --git a/HeapSort.go b/go/HeapSort.go similarity index 100% rename from HeapSort.go rename to go/HeapSort.go diff --git a/Automorphic Number b/html/Automorphic Number similarity index 100% rename from Automorphic Number rename to html/Automorphic Number diff --git a/JS-MOUSE-EVENT.HTML b/html/JS-MOUSE-EVENT.HTML similarity index 100% rename from JS-MOUSE-EVENT.HTML rename to html/JS-MOUSE-EVENT.HTML diff --git a/Studentform.html b/html/Studentform.html similarity index 100% rename from Studentform.html rename to html/Studentform.html diff --git a/client-side_validation b/html/client-side_validation similarity index 100% rename from client-side_validation rename to html/client-side_validation diff --git a/form.html b/html/form.html similarity index 100% rename from form.html rename to html/form.html diff --git a/index.html b/html/index.html similarity index 100% rename from index.html rename to html/index.html diff --git a/js-arraydata.html b/html/js-arraydata.html similarity index 100% rename from js-arraydata.html rename to html/js-arraydata.html diff --git a/js-evenodd.html b/html/js-evenodd.html similarity index 100% rename from js-evenodd.html rename to html/js-evenodd.html diff --git a/js-formvalidation.html b/html/js-formvalidation.html similarity index 100% rename from js-formvalidation.html rename to html/js-formvalidation.html diff --git a/js-read-h1.html b/html/js-read-h1.html similarity index 100% rename from js-read-h1.html rename to html/js-read-h1.html diff --git a/js-value-textbox.html b/html/js-value-textbox.html similarity index 100% rename from js-value-textbox.html rename to html/js-value-textbox.html diff --git a/paralax.html b/html/paralax.html similarity index 100% rename from paralax.html rename to html/paralax.html diff --git a/stats.html b/html/stats.html similarity index 100% rename from stats.html rename to html/stats.html diff --git a/Game Of Maximization(Hackerrank Hackfest 2020)/Question.pdf b/java/Game Of Maximization(Hackerrank Hackfest 2020)/Question.pdf similarity index 100% rename from Game Of Maximization(Hackerrank Hackfest 2020)/Question.pdf rename to java/Game Of Maximization(Hackerrank Hackfest 2020)/Question.pdf diff --git a/Game Of Maximization(Hackerrank Hackfest 2020)/Solution.java b/java/Game Of Maximization(Hackerrank Hackfest 2020)/Solution.java similarity index 100% rename from Game Of Maximization(Hackerrank Hackfest 2020)/Solution.java rename to java/Game Of Maximization(Hackerrank Hackfest 2020)/Solution.java diff --git a/Gt$Node.class b/java/Gt$Node.class similarity index 100% rename from Gt$Node.class rename to java/Gt$Node.class diff --git a/Gt.class b/java/Gt.class similarity index 100% rename from Gt.class rename to java/Gt.class diff --git a/Gt.java b/java/Gt.java similarity index 100% rename from Gt.java rename to java/Gt.java diff --git a/Island Perimeter b/java/Island Perimeter similarity index 100% rename from Island Perimeter rename to java/Island Perimeter diff --git a/Java_Leap_year/demo_2.java b/java/Java_Leap_year/demo_2.java similarity index 100% rename from Java_Leap_year/demo_2.java rename to java/Java_Leap_year/demo_2.java diff --git a/KaratsubaAlgo.java b/java/KaratsubaAlgo.java similarity index 100% rename from KaratsubaAlgo.java rename to java/KaratsubaAlgo.java diff --git a/KnapSack/KnapSackZeroOneRecursive.java b/java/KnapSack/KnapSackZeroOneRecursive.java similarity index 100% rename from KnapSack/KnapSackZeroOneRecursive.java rename to java/KnapSack/KnapSackZeroOneRecursive.java diff --git a/MeanMedian2.java b/java/MeanMedian2.java similarity index 100% rename from MeanMedian2.java rename to java/MeanMedian2.java diff --git a/Movie Recommender System/.idea/$PRODUCT_WORKSPACE_FILE$ b/java/Movie Recommender System/.idea/$PRODUCT_WORKSPACE_FILE$ similarity index 100% rename from Movie Recommender System/.idea/$PRODUCT_WORKSPACE_FILE$ rename to java/Movie Recommender System/.idea/$PRODUCT_WORKSPACE_FILE$ diff --git a/Movie Recommender System/.idea/.gitignore b/java/Movie Recommender System/.idea/.gitignore similarity index 100% rename from Movie Recommender System/.idea/.gitignore rename to java/Movie Recommender System/.idea/.gitignore diff --git a/Movie Recommender System/.idea/misc.xml b/java/Movie Recommender System/.idea/misc.xml similarity index 100% rename from Movie Recommender System/.idea/misc.xml rename to java/Movie Recommender System/.idea/misc.xml diff --git a/Movie Recommender System/.idea/modules.xml b/java/Movie Recommender System/.idea/modules.xml similarity index 100% rename from Movie Recommender System/.idea/modules.xml rename to java/Movie Recommender System/.idea/modules.xml diff --git a/Movie Recommender System/.idea/vcs.xml b/java/Movie Recommender System/.idea/vcs.xml similarity index 100% rename from Movie Recommender System/.idea/vcs.xml rename to java/Movie Recommender System/.idea/vcs.xml diff --git a/Movie Recommender System/OOP Project.iml b/java/Movie Recommender System/OOP Project.iml similarity index 100% rename from Movie Recommender System/OOP Project.iml rename to java/Movie Recommender System/OOP Project.iml diff --git a/Movie Recommender System/README.md b/java/Movie Recommender System/README.md similarity index 100% rename from Movie Recommender System/README.md rename to java/Movie Recommender System/README.md diff --git a/Movie Recommender System/out/production/OOP Project/Check.class b/java/Movie Recommender System/out/production/OOP Project/Check.class similarity index 100% rename from Movie Recommender System/out/production/OOP Project/Check.class rename to java/Movie Recommender System/out/production/OOP Project/Check.class diff --git a/Movie Recommender System/out/production/OOP Project/Login.class b/java/Movie Recommender System/out/production/OOP Project/Login.class similarity index 100% rename from Movie Recommender System/out/production/OOP Project/Login.class rename to java/Movie Recommender System/out/production/OOP Project/Login.class diff --git a/Movie Recommender System/out/production/OOP Project/MovieList.class b/java/Movie Recommender System/out/production/OOP Project/MovieList.class similarity index 100% rename from Movie Recommender System/out/production/OOP Project/MovieList.class rename to java/Movie Recommender System/out/production/OOP Project/MovieList.class diff --git a/Movie Recommender System/out/production/OOP Project/MovieSuggester.class b/java/Movie Recommender System/out/production/OOP Project/MovieSuggester.class similarity index 100% rename from Movie Recommender System/out/production/OOP Project/MovieSuggester.class rename to java/Movie Recommender System/out/production/OOP Project/MovieSuggester.class diff --git a/Movie Recommender System/out/production/OOP Project/MyException.class b/java/Movie Recommender System/out/production/OOP Project/MyException.class similarity index 100% rename from Movie Recommender System/out/production/OOP Project/MyException.class rename to java/Movie Recommender System/out/production/OOP Project/MyException.class diff --git a/Movie Recommender System/out/production/OOP Project/SignUp.class b/java/Movie Recommender System/out/production/OOP Project/SignUp.class similarity index 100% rename from Movie Recommender System/out/production/OOP Project/SignUp.class rename to java/Movie Recommender System/out/production/OOP Project/SignUp.class diff --git a/Movie Recommender System/out/production/OOP Project/User.class b/java/Movie Recommender System/out/production/OOP Project/User.class similarity index 100% rename from Movie Recommender System/out/production/OOP Project/User.class rename to java/Movie Recommender System/out/production/OOP Project/User.class diff --git a/Movie Recommender System/out/production/OOP Project/WriteToFile.class b/java/Movie Recommender System/out/production/OOP Project/WriteToFile.class similarity index 100% rename from Movie Recommender System/out/production/OOP Project/WriteToFile.class rename to java/Movie Recommender System/out/production/OOP Project/WriteToFile.class diff --git a/Movie Recommender System/src/Check.java b/java/Movie Recommender System/src/Check.java similarity index 100% rename from Movie Recommender System/src/Check.java rename to java/Movie Recommender System/src/Check.java diff --git a/Movie Recommender System/src/EraserThread.java b/java/Movie Recommender System/src/EraserThread.java similarity index 100% rename from Movie Recommender System/src/EraserThread.java rename to java/Movie Recommender System/src/EraserThread.java diff --git a/Movie Recommender System/src/Login.java b/java/Movie Recommender System/src/Login.java similarity index 100% rename from Movie Recommender System/src/Login.java rename to java/Movie Recommender System/src/Login.java diff --git a/Movie Recommender System/src/MovieList.java b/java/Movie Recommender System/src/MovieList.java similarity index 100% rename from Movie Recommender System/src/MovieList.java rename to java/Movie Recommender System/src/MovieList.java diff --git a/Movie Recommender System/src/MovieSuggester.java b/java/Movie Recommender System/src/MovieSuggester.java similarity index 100% rename from Movie Recommender System/src/MovieSuggester.java rename to java/Movie Recommender System/src/MovieSuggester.java diff --git a/Movie Recommender System/src/MyException.java b/java/Movie Recommender System/src/MyException.java similarity index 100% rename from Movie Recommender System/src/MyException.java rename to java/Movie Recommender System/src/MyException.java diff --git a/Movie Recommender System/src/PasswordField.java b/java/Movie Recommender System/src/PasswordField.java similarity index 100% rename from Movie Recommender System/src/PasswordField.java rename to java/Movie Recommender System/src/PasswordField.java diff --git a/Movie Recommender System/src/SignUp.java b/java/Movie Recommender System/src/SignUp.java similarity index 100% rename from Movie Recommender System/src/SignUp.java rename to java/Movie Recommender System/src/SignUp.java diff --git a/Movie Recommender System/src/User.java b/java/Movie Recommender System/src/User.java similarity index 100% rename from Movie Recommender System/src/User.java rename to java/Movie Recommender System/src/User.java diff --git a/Movie Recommender System/src/WriteToFile.java b/java/Movie Recommender System/src/WriteToFile.java similarity index 100% rename from Movie Recommender System/src/WriteToFile.java rename to java/Movie Recommender System/src/WriteToFile.java diff --git a/PrimeCheck.java b/java/PrimeCheck.java similarity index 100% rename from PrimeCheck.java rename to java/PrimeCheck.java diff --git a/RandomGuess4.java b/java/RandomGuess4.java similarity index 100% rename from RandomGuess4.java rename to java/RandomGuess4.java diff --git a/StockBuySell.java b/java/StockBuySell.java similarity index 100% rename from StockBuySell.java rename to java/StockBuySell.java diff --git a/StringSort.java b/java/StringSort.java similarity index 100% rename from StringSort.java rename to java/StringSort.java diff --git a/Two Dimensional Array.java b/java/Two Dimensional Array.java similarity index 100% rename from Two Dimensional Array.java rename to java/Two Dimensional Array.java diff --git a/hotel-management-system.java b/java/hotel-management-system.java similarity index 100% rename from hotel-management-system.java rename to java/hotel-management-system.java diff --git a/leetcode 789.java b/java/leetcode 789.java similarity index 100% rename from leetcode 789.java rename to java/leetcode 789.java diff --git a/merge_sort.java b/java/merge_sort.java similarity index 100% rename from merge_sort.java rename to java/merge_sort.java diff --git a/optimizedprime.java b/java/optimizedprime.java similarity index 100% rename from optimizedprime.java rename to java/optimizedprime.java diff --git a/All FCC javascript and datastructures challenge solutions/caesars-cipher.txt b/js/All FCC javascript and datastructures challenge solutions/caesars-cipher.txt similarity index 100% rename from All FCC javascript and datastructures challenge solutions/caesars-cipher.txt rename to js/All FCC javascript and datastructures challenge solutions/caesars-cipher.txt diff --git a/All FCC javascript and datastructures challenge solutions/cash-register.txt b/js/All FCC javascript and datastructures challenge solutions/cash-register.txt similarity index 100% rename from All FCC javascript and datastructures challenge solutions/cash-register.txt rename to js/All FCC javascript and datastructures challenge solutions/cash-register.txt diff --git a/All FCC javascript and datastructures challenge solutions/palindrome-checker.txt b/js/All FCC javascript and datastructures challenge solutions/palindrome-checker.txt similarity index 100% rename from All FCC javascript and datastructures challenge solutions/palindrome-checker.txt rename to js/All FCC javascript and datastructures challenge solutions/palindrome-checker.txt diff --git a/All FCC javascript and datastructures challenge solutions/roman-numeral-converter.txt b/js/All FCC javascript and datastructures challenge solutions/roman-numeral-converter.txt similarity index 100% rename from All FCC javascript and datastructures challenge solutions/roman-numeral-converter.txt rename to js/All FCC javascript and datastructures challenge solutions/roman-numeral-converter.txt diff --git a/All FCC javascript and datastructures challenge solutions/telephone-number-validator.txt b/js/All FCC javascript and datastructures challenge solutions/telephone-number-validator.txt similarity index 100% rename from All FCC javascript and datastructures challenge solutions/telephone-number-validator.txt rename to js/All FCC javascript and datastructures challenge solutions/telephone-number-validator.txt diff --git a/Bubble sort b/js/Bubble sort similarity index 100% rename from Bubble sort rename to js/Bubble sort diff --git a/HelloWorld.js b/js/HelloWorld.js similarity index 100% rename from HelloWorld.js rename to js/HelloWorld.js diff --git a/alpha_sort.js b/js/alpha_sort.js similarity index 100% rename from alpha_sort.js rename to js/alpha_sort.js diff --git a/binary_search.js b/js/binary_search.js similarity index 100% rename from binary_search.js rename to js/binary_search.js diff --git a/bracketNotation.js b/js/bracketNotation.js similarity index 100% rename from bracketNotation.js rename to js/bracketNotation.js diff --git a/factorial.js b/js/factorial.js similarity index 100% rename from factorial.js rename to js/factorial.js diff --git a/fibonacci.js b/js/fibonacci.js similarity index 100% rename from fibonacci.js rename to js/fibonacci.js diff --git a/given_sum.js b/js/given_sum.js similarity index 100% rename from given_sum.js rename to js/given_sum.js diff --git a/golfArray.js b/js/golfArray.js similarity index 100% rename from golfArray.js rename to js/golfArray.js diff --git a/isArray.js b/js/isArray.js similarity index 100% rename from isArray.js rename to js/isArray.js diff --git a/leetcode 43.js b/js/leetcode 43.js similarity index 100% rename from leetcode 43.js rename to js/leetcode 43.js diff --git a/lengthOfAString.js b/js/lengthOfAString.js similarity index 100% rename from lengthOfAString.js rename to js/lengthOfAString.js diff --git a/mergesort.js b/js/mergesort.js similarity index 100% rename from mergesort.js rename to js/mergesort.js diff --git a/minimum-swapper-2.js b/js/minimum-swapper-2.js similarity index 100% rename from minimum-swapper-2.js rename to js/minimum-swapper-2.js diff --git a/node-rectangle.js b/js/node-rectangle.js similarity index 100% rename from node-rectangle.js rename to js/node-rectangle.js diff --git a/order_by_index.js b/js/order_by_index.js similarity index 100% rename from order_by_index.js rename to js/order_by_index.js diff --git a/prime_number.js b/js/prime_number.js similarity index 100% rename from prime_number.js rename to js/prime_number.js diff --git a/quick_sort.js b/js/quick_sort.js similarity index 100% rename from quick_sort.js rename to js/quick_sort.js diff --git a/reverseAString.js b/js/reverseAString.js similarity index 100% rename from reverseAString.js rename to js/reverseAString.js diff --git a/reverse_str.js b/js/reverse_str.js similarity index 100% rename from reverse_str.js rename to js/reverse_str.js diff --git a/romanize.js b/js/romanize.js similarity index 100% rename from romanize.js rename to js/romanize.js diff --git a/rotate-array-from-left.js b/js/rotate-array-from-left.js similarity index 100% rename from rotate-array-from-left.js rename to js/rotate-array-from-left.js diff --git a/selecting WithSwitchStmts.js b/js/selecting WithSwitchStmts.js similarity index 100% rename from selecting WithSwitchStmts.js rename to js/selecting WithSwitchStmts.js diff --git a/selection-sort.js b/js/selection-sort.js similarity index 100% rename from selection-sort.js rename to js/selection-sort.js diff --git a/Helloworld.php b/php/Helloworld.php similarity index 100% rename from Helloworld.php rename to php/Helloworld.php diff --git a/core.php b/php/core.php similarity index 100% rename from core.php rename to php/core.php diff --git a/AVL_tree_Deletion.py b/python/AVL_tree_Deletion.py similarity index 100% rename from AVL_tree_Deletion.py rename to python/AVL_tree_Deletion.py diff --git a/AVL_tree_Insertion.py b/python/AVL_tree_Insertion.py similarity index 100% rename from AVL_tree_Insertion.py rename to python/AVL_tree_Insertion.py diff --git a/BST.py b/python/BST.py similarity index 100% rename from BST.py rename to python/BST.py diff --git a/Binarysearch.py b/python/Binarysearch.py similarity index 100% rename from Binarysearch.py rename to python/Binarysearch.py diff --git a/BitonicSort.py b/python/BitonicSort.py similarity index 100% rename from BitonicSort.py rename to python/BitonicSort.py diff --git a/Catalan_Number_python.py b/python/Catalan_Number_python.py similarity index 100% rename from Catalan_Number_python.py rename to python/Catalan_Number_python.py diff --git a/CountPrimesUsingSieve.py b/python/CountPrimesUsingSieve.py similarity index 100% rename from CountPrimesUsingSieve.py rename to python/CountPrimesUsingSieve.py diff --git a/CyclicSort.py b/python/CyclicSort.py similarity index 100% rename from CyclicSort.py rename to python/CyclicSort.py diff --git a/Fisher_Yates.py b/python/Fisher_Yates.py similarity index 100% rename from Fisher_Yates.py rename to python/Fisher_Yates.py diff --git a/GUI_AgeCalculator.py b/python/GUI_AgeCalculator.py similarity index 100% rename from GUI_AgeCalculator.py rename to python/GUI_AgeCalculator.py diff --git a/Guessing_Number.py b/python/Guessing_Number.py similarity index 100% rename from Guessing_Number.py rename to python/Guessing_Number.py diff --git a/Inorder_Successor_BinaryTree.py b/python/Inorder_Successor_BinaryTree.py similarity index 100% rename from Inorder_Successor_BinaryTree.py rename to python/Inorder_Successor_BinaryTree.py diff --git a/JPGtoPNG_Converter.py b/python/JPGtoPNG_Converter.py similarity index 100% rename from JPGtoPNG_Converter.py rename to python/JPGtoPNG_Converter.py diff --git a/KadaneAlgorithm.py b/python/KadaneAlgorithm.py similarity index 100% rename from KadaneAlgorithm.py rename to python/KadaneAlgorithm.py diff --git a/Larry's-Array.py b/python/Larry's-Array.py similarity index 100% rename from Larry's-Array.py rename to python/Larry's-Array.py diff --git a/Level_Order_Traversal(BFS).py b/python/Level_Order_Traversal(BFS).py similarity index 100% rename from Level_Order_Traversal(BFS).py rename to python/Level_Order_Traversal(BFS).py diff --git a/Linear_search.py b/python/Linear_search.py similarity index 100% rename from Linear_search.py rename to python/Linear_search.py diff --git a/List.ipynb b/python/List.ipynb similarity index 100% rename from List.ipynb rename to python/List.ipynb diff --git a/MNIST Classification using Stacked Autoencoder.ipynb b/python/MNIST Classification using Stacked Autoencoder.ipynb similarity index 100% rename from MNIST Classification using Stacked Autoencoder.ipynb rename to python/MNIST Classification using Stacked Autoencoder.ipynb diff --git a/MSP.py b/python/MSP.py similarity index 100% rename from MSP.py rename to python/MSP.py diff --git a/Max_Subarray.py b/python/Max_Subarray.py similarity index 100% rename from Max_Subarray.py rename to python/Max_Subarray.py diff --git a/MergeSortPythonCCSC.py b/python/MergeSortPythonCCSC.py similarity index 100% rename from MergeSortPythonCCSC.py rename to python/MergeSortPythonCCSC.py diff --git a/PathSum.py b/python/PathSum.py similarity index 100% rename from PathSum.py rename to python/PathSum.py diff --git a/Peak_array.py b/python/Peak_array.py similarity index 100% rename from Peak_array.py rename to python/Peak_array.py diff --git a/QueenAttack.py b/python/QueenAttack.py similarity index 100% rename from QueenAttack.py rename to python/QueenAttack.py diff --git a/QuickSort.py b/python/QuickSort.py similarity index 100% rename from QuickSort.py rename to python/QuickSort.py diff --git a/SelectionSort.py b/python/SelectionSort.py similarity index 100% rename from SelectionSort.py rename to python/SelectionSort.py diff --git a/Siteblocker.py b/python/Siteblocker.py similarity index 100% rename from Siteblocker.py rename to python/Siteblocker.py diff --git a/Stack.py b/python/Stack.py similarity index 100% rename from Stack.py rename to python/Stack.py diff --git a/StonePaperScissors.py b/python/StonePaperScissors.py similarity index 100% rename from StonePaperScissors.py rename to python/StonePaperScissors.py diff --git a/TowerOfHanoi.py b/python/TowerOfHanoi.py similarity index 100% rename from TowerOfHanoi.py rename to python/TowerOfHanoi.py diff --git a/aes.py b/python/aes.py similarity index 100% rename from aes.py rename to python/aes.py diff --git a/aks prime test.py b/python/aks prime test.py similarity index 100% rename from aks prime test.py rename to python/aks prime test.py diff --git a/balanced_paranthesis.py b/python/balanced_paranthesis.py similarity index 100% rename from balanced_paranthesis.py rename to python/balanced_paranthesis.py diff --git a/bellmenford.py b/python/bellmenford.py similarity index 100% rename from bellmenford.py rename to python/bellmenford.py diff --git a/binary_search.py b/python/binary_search.py similarity index 100% rename from binary_search.py rename to python/binary_search.py diff --git a/bmi-calculator.py b/python/bmi-calculator.py similarity index 100% rename from bmi-calculator.py rename to python/bmi-calculator.py diff --git a/bmi.py b/python/bmi.py similarity index 100% rename from bmi.py rename to python/bmi.py diff --git a/bubble_sort.py b/python/bubble_sort.py similarity index 100% rename from bubble_sort.py rename to python/bubble_sort.py diff --git a/calculator.py b/python/calculator.py similarity index 100% rename from calculator.py rename to python/calculator.py diff --git a/clock.py b/python/clock.py similarity index 100% rename from clock.py rename to python/clock.py diff --git a/count_inversions.py b/python/count_inversions.py similarity index 100% rename from count_inversions.py rename to python/count_inversions.py diff --git a/cycleSort.py b/python/cycleSort.py similarity index 100% rename from cycleSort.py rename to python/cycleSort.py diff --git a/cycle_detection_linked_list.py b/python/cycle_detection_linked_list.py similarity index 100% rename from cycle_detection_linked_list.py rename to python/cycle_detection_linked_list.py diff --git a/diameter_Btree.py b/python/diameter_Btree.py similarity index 100% rename from diameter_Btree.py rename to python/diameter_Btree.py diff --git a/dijkstra.py b/python/dijkstra.py similarity index 100% rename from dijkstra.py rename to python/dijkstra.py diff --git a/fraction.py b/python/fraction.py similarity index 100% rename from fraction.py rename to python/fraction.py diff --git a/hybrid_sort.py b/python/hybrid_sort.py similarity index 100% rename from hybrid_sort.py rename to python/hybrid_sort.py diff --git a/insertion-sort.py b/python/insertion-sort.py similarity index 100% rename from insertion-sort.py rename to python/insertion-sort.py diff --git a/knapsack.py b/python/knapsack.py similarity index 100% rename from knapsack.py rename to python/knapsack.py diff --git a/kruskal.py b/python/kruskal.py similarity index 100% rename from kruskal.py rename to python/kruskal.py diff --git a/livecliterminal.py b/python/livecliterminal.py similarity index 100% rename from livecliterminal.py rename to python/livecliterminal.py diff --git a/mandelbrot_Set.py b/python/mandelbrot_Set.py similarity index 100% rename from mandelbrot_Set.py rename to python/mandelbrot_Set.py diff --git a/matching_paren.py b/python/matching_paren.py similarity index 100% rename from matching_paren.py rename to python/matching_paren.py diff --git a/matplotlib_graphs.ipynb b/python/matplotlib_graphs.ipynb similarity index 100% rename from matplotlib_graphs.ipynb rename to python/matplotlib_graphs.ipynb diff --git a/matrixMultiply.py b/python/matrixMultiply.py similarity index 100% rename from matrixMultiply.py rename to python/matrixMultiply.py diff --git a/merge_sort.py b/python/merge_sort.py similarity index 100% rename from merge_sort.py rename to python/merge_sort.py diff --git a/min_in_sorted_&_rotated_array.py b/python/min_in_sorted_&_rotated_array.py similarity index 100% rename from min_in_sorted_&_rotated_array.py rename to python/min_in_sorted_&_rotated_array.py diff --git a/mirror_matrix.ipynb b/python/mirror_matrix.ipynb similarity index 100% rename from mirror_matrix.ipynb rename to python/mirror_matrix.ipynb diff --git a/missing-number.py b/python/missing-number.py similarity index 100% rename from missing-number.py rename to python/missing-number.py diff --git a/nlp_with_python.ipynb b/python/nlp_with_python.ipynb similarity index 100% rename from nlp_with_python.ipynb rename to python/nlp_with_python.ipynb diff --git a/numberguesser.py b/python/numberguesser.py similarity index 100% rename from numberguesser.py rename to python/numberguesser.py diff --git a/numpy_basic.py b/python/numpy_basic.py similarity index 100% rename from numpy_basic.py rename to python/numpy_basic.py diff --git a/numpy_basics.ipynb b/python/numpy_basics.ipynb similarity index 100% rename from numpy_basics.ipynb rename to python/numpy_basics.ipynb diff --git a/palindrome.py b/python/palindrome.py similarity index 100% rename from palindrome.py rename to python/palindrome.py diff --git a/pandas_basics.ipynb b/python/pandas_basics.ipynb similarity index 100% rename from pandas_basics.ipynb rename to python/pandas_basics.ipynb diff --git a/permutermIndex.py b/python/permutermIndex.py similarity index 100% rename from permutermIndex.py rename to python/permutermIndex.py diff --git a/pong.py b/python/pong.py similarity index 100% rename from pong.py rename to python/pong.py diff --git a/prim.py b/python/prim.py similarity index 100% rename from prim.py rename to python/prim.py diff --git a/primefactor.py b/python/primefactor.py similarity index 100% rename from primefactor.py rename to python/primefactor.py diff --git a/quickselect_algo.py b/python/quickselect_algo.py similarity index 100% rename from quickselect_algo.py rename to python/quickselect_algo.py diff --git a/random_num_generator.py b/python/random_num_generator.py similarity index 100% rename from random_num_generator.py rename to python/random_num_generator.py diff --git a/readability.py b/python/readability.py similarity index 100% rename from readability.py rename to python/readability.py diff --git a/scicalculator.py b/python/scicalculator.py similarity index 100% rename from scicalculator.py rename to python/scicalculator.py diff --git a/scorenotifier.py b/python/scorenotifier.py similarity index 100% rename from scorenotifier.py rename to python/scorenotifier.py diff --git a/snake-game.py b/python/snake-game.py similarity index 100% rename from snake-game.py rename to python/snake-game.py diff --git a/snakeGame.py b/python/snakeGame.py similarity index 100% rename from snakeGame.py rename to python/snakeGame.py diff --git a/speech_to_text.py b/python/speech_to_text.py similarity index 100% rename from speech_to_text.py rename to python/speech_to_text.py diff --git a/sudoku.py b/python/sudoku.py similarity index 100% rename from sudoku.py rename to python/sudoku.py diff --git a/telegrambot.py b/python/telegrambot.py similarity index 100% rename from telegrambot.py rename to python/telegrambot.py diff --git a/temp b/python/temp similarity index 100% rename from temp rename to python/temp diff --git a/tictactoe.py b/python/tictactoe.py similarity index 100% rename from tictactoe.py rename to python/tictactoe.py diff --git a/to_roman_numerals.py b/python/to_roman_numerals.py similarity index 100% rename from to_roman_numerals.py rename to python/to_roman_numerals.py diff --git a/url_shortner.py b/python/url_shortner.py similarity index 100% rename from url_shortner.py rename to python/url_shortner.py diff --git a/variableprogram.py b/python/variableprogram.py similarity index 100% rename from variableprogram.py rename to python/variableprogram.py diff --git a/bubble.rs b/rust/bubble.rs similarity index 100% rename from bubble.rs rename to rust/bubble.rs diff --git a/burrows_wheeler_transform.rs b/rust/burrows_wheeler_transform.rs similarity index 100% rename from burrows_wheeler_transform.rs rename to rust/burrows_wheeler_transform.rs diff --git a/hello.sh b/shell scripts/hello.sh similarity index 100% rename from hello.sh rename to shell scripts/hello.sh diff --git a/ping_host.sh b/shell scripts/ping_host.sh similarity index 100% rename from ping_host.sh rename to shell scripts/ping_host.sh From e1acca2f2d7b591373ad4f095ce3d99eaf42a412 Mon Sep 17 00:00:00 2001 From: Zaid Rasool Date: Sun, 17 Aug 2025 14:17:06 +0500 Subject: [PATCH 2/3] Updated the readme file --- README.md | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/README.md b/README.md index ba93e10..256bb8b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,53 @@ # [Hacktober-Open](https://client69.github.io/Hacktober-Open/) ## You can add some good algorithms (in any language) which can be helpful for competitive programmers.
I will merge it with hacktoberfest-accepted label + +Welcome to **Open** — a community-driven collection of open source code, snippets, and small projects. +This repository is designed to help **new contributors** learn, practice, and share useful code across different languages. + +All contributions are welcome! 🚀 + +--- + +## 📌 How You Can Contribute +1. Fork this repository. +2. Add your script, project, or snippet in the appropriate folder. + - Example: add a Python script in `/python/` + - Or create a small project inside `/projects/` +3. Update the README in your folder (if needed). +4. Make a Pull Request (PR). + +--- + +## 📂 Repository Structure +- `python/` → Python programs +- `javascript/` → JavaScript programs +- `algorithms/` → Common algorithms in any language +- `projects/` → Small apps, CLI tools, or experiments +- `docs/` → Guides, notes, or tutorials +- `Rust/` → Rust programs +- Or any other language of your choice. If the folder doesn't exist create one. + So the structure of repository remains consistent + +--- + +## 🎯 Contribution Guidelines +- Keep your code clean and well-documented. +- Use meaningful file names (e.g., `fibonacci.py` not `script1.py`). +- Add comments where necessary to help beginners understand. +- If submitting a project, include a short `README.md` explaining how it works. + +--- + +## 🏷 Hacktoberfest +This repository is **Hacktoberfest-friendly** 💻🎉 +All accepted PRs will be labeled **hacktoberfest-accepted**. + +--- + +## 📜 License +This project is licensed under the MIT License — feel free to use the code anywhere with attribution. + ## How to contribute 1) Fork this repo by clicking the fork button on the top right. 2) Clone the forked repo on your pc (open a terminal and run this command). From 9d89a57bd89cbc1701f44074930978c0c3e6b389 Mon Sep 17 00:00:00 2001 From: Zaid Rasool Date: Sun, 17 Aug 2025 14:22:36 +0500 Subject: [PATCH 3/3] added sklearn and XGBoost basics for newlearners --- python/XGBoost.ipynb | 4247 ++++++++++++++++++++++++++++++++++++++++++ python/sklearn.ipynb | 409 ++++ 2 files changed, 4656 insertions(+) create mode 100644 python/XGBoost.ipynb create mode 100644 python/sklearn.ipynb diff --git a/python/XGBoost.ipynb b/python/XGBoost.ipynb new file mode 100644 index 0000000..fb51ab7 --- /dev/null +++ b/python/XGBoost.ipynb @@ -0,0 +1,4247 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "fd0d7a63", + "metadata": {}, + "source": [ + "Bank marketing dateset taken from UCI \n", + "Link : https://archive.ics.uci.edu/dataset/222/bank+marketing \n" + ] + }, + { + "cell_type": "markdown", + "id": "4d9b2d88", + "metadata": {}, + "source": [ + "The data is related with direct marketing campaigns of a Portuguese banking institution. The marketing campaigns were based on phone calls. Often, more than one contact to the same client was required, in order to access if the product (bank term deposit) would be ('yes') or not ('no') subscribed. \n", + "The classification goal is to predict if the client will subscribe (yes/no) a term deposit (variable y).\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "643147f7", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "4e9098ea", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from sklearn.model_selection import train_test_split\n", + "from xgboost import XGBClassifier\n", + "from sklearn.pipeline import Pipeline\n", + "from category_encoders.target_encoder import TargetEncoder\n", + "from skopt import BayesSearchCV\n", + "from skopt.space import Real, Categorical, Integer\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "5368de6c", + "metadata": {}, + "outputs": [], + "source": [ + "#loading dataset\n", + "df = pd.read_csv('bank-additional-full.csv', delimiter=';')\n", + "#dropping columns that might be less related to desired output\n", + "drop_columns = [ 'duration','emp.var.rate', 'cons.price.idx', 'cons.conf.idx', 'euribor3m', 'nr.employed']\n", + "#rename columns for better understanding\n", + "df = df.rename(columns={'job': 'job_type', 'default': 'default_status',\n", + " 'housing': 'housing_loan_status', 'loan': 'personal_loan_status',\n", + " 'contact': 'contact_type', 'month': 'contact_month',\n", + " 'day_of_week': 'contact_day_of_week', 'campaign': 'num_contacts',\n", + " 'pdays': 'days_last_contact', 'previous': 'previous_contacts',\n", + " 'poutcome': 'previous_outcome',\n", + " 'y': 'result'\n", + " })\n", + "# Drop the specified columns\n", + "df = df.drop(columns=drop_columns, errors='ignore')\n", + "#convert target to numerical values\n", + "#specify the column and map its distinct values to numerical values\n", + "df['result'] = df['result'].map({'yes':1, 'no':0})" + ] + }, + { + "cell_type": "markdown", + "id": "0616b74b", + "metadata": {}, + "source": [ + "Lets look at the dataset now" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "98d0c69e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
agejob_typemaritaleducationdefault_statushousing_loan_statuspersonal_loan_statuscontact_typecontact_monthcontact_day_of_weeknum_contactsdays_last_contactprevious_contactsprevious_outcomeresult
056housemaidmarriedbasic.4ynononotelephonemaymon19990nonexistent0
157servicesmarriedhigh.schoolunknownnonotelephonemaymon19990nonexistent0
237servicesmarriedhigh.schoolnoyesnotelephonemaymon19990nonexistent0
340admin.marriedbasic.6ynononotelephonemaymon19990nonexistent0
456servicesmarriedhigh.schoolnonoyestelephonemaymon19990nonexistent0
\n", + "
" + ], + "text/plain": [ + " age job_type marital education default_status housing_loan_status \\\n", + "0 56 housemaid married basic.4y no no \n", + "1 57 services married high.school unknown no \n", + "2 37 services married high.school no yes \n", + "3 40 admin. married basic.6y no no \n", + "4 56 services married high.school no no \n", + "\n", + " personal_loan_status contact_type contact_month contact_day_of_week \\\n", + "0 no telephone may mon \n", + "1 no telephone may mon \n", + "2 no telephone may mon \n", + "3 no telephone may mon \n", + "4 yes telephone may mon \n", + "\n", + " num_contacts days_last_contact previous_contacts previous_outcome result \n", + "0 1 999 0 nonexistent 0 \n", + "1 1 999 0 nonexistent 0 \n", + "2 1 999 0 nonexistent 0 \n", + "3 1 999 0 nonexistent 0 \n", + "4 1 999 0 nonexistent 0 " + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "c3e9b37b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 41188 entries, 0 to 41187\n", + "Data columns (total 15 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 41188 non-null int64 \n", + " 1 job_type 41188 non-null object\n", + " 2 marital 41188 non-null object\n", + " 3 education 41188 non-null object\n", + " 4 default_status 41188 non-null object\n", + " 5 housing_loan_status 41188 non-null object\n", + " 6 personal_loan_status 41188 non-null object\n", + " 7 contact_type 41188 non-null object\n", + " 8 contact_month 41188 non-null object\n", + " 9 contact_day_of_week 41188 non-null object\n", + " 10 num_contacts 41188 non-null int64 \n", + " 11 days_last_contact 41188 non-null int64 \n", + " 12 previous_contacts 41188 non-null int64 \n", + " 13 previous_outcome 41188 non-null object\n", + " 14 result 41188 non-null int64 \n", + "dtypes: int64(5), object(10)\n", + "memory usage: 4.7+ MB\n" + ] + } + ], + "source": [ + "df.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "29831d95", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "result\n", + "0 36548\n", + "1 4640\n", + "Name: count, dtype: int64" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['result'].value_counts()" + ] + }, + { + "cell_type": "markdown", + "id": "2c873e61", + "metadata": {}, + "source": [ + "Train test split" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "1c94a136", + "metadata": {}, + "outputs": [], + "source": [ + "X = df.drop(columns=['result'])\n", + "y = df['result']\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=8)" + ] + }, + { + "cell_type": "markdown", + "id": "8b800de9", + "metadata": {}, + "source": [ + "Pipeline" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "96711915", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
Pipeline(steps=[('encoder', TargetEncoder()),\n",
+       "                ('clf',\n",
+       "                 XGBClassifier(base_score=None, booster=None, callbacks=None,\n",
+       "                               colsample_bylevel=None, colsample_bynode=None,\n",
+       "                               colsample_bytree=None, device=None,\n",
+       "                               early_stopping_rounds=None,\n",
+       "                               enable_categorical=False, eval_metric=None,\n",
+       "                               feature_types=None, feature_weights=None,\n",
+       "                               gamma=None, grow_policy=None,\n",
+       "                               importance_type=None,\n",
+       "                               interaction_constraints=None, learning_rate=None,\n",
+       "                               max_bin=None, max_cat_threshold=None,\n",
+       "                               max_cat_to_onehot=None, max_delta_step=None,\n",
+       "                               max_depth=None, max_leaves=None,\n",
+       "                               min_child_weight=None, missing=nan,\n",
+       "                               monotone_constraints=None, multi_strategy=None,\n",
+       "                               n_estimators=None, n_jobs=None,\n",
+       "                               num_parallel_tree=None, ...))])
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ], + "text/plain": [ + "Pipeline(steps=[('encoder', TargetEncoder()),\n", + " ('clf',\n", + " XGBClassifier(base_score=None, booster=None, callbacks=None,\n", + " colsample_bylevel=None, colsample_bynode=None,\n", + " colsample_bytree=None, device=None,\n", + " early_stopping_rounds=None,\n", + " enable_categorical=False, eval_metric=None,\n", + " feature_types=None, feature_weights=None,\n", + " gamma=None, grow_policy=None,\n", + " importance_type=None,\n", + " interaction_constraints=None, learning_rate=None,\n", + " max_bin=None, max_cat_threshold=None,\n", + " max_cat_to_onehot=None, max_delta_step=None,\n", + " max_depth=None, max_leaves=None,\n", + " min_child_weight=None, missing=nan,\n", + " monotone_constraints=None, multi_strategy=None,\n", + " n_estimators=None, n_jobs=None,\n", + " num_parallel_tree=None, ...))])" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "estimators = [\n", + " ('encoder', TargetEncoder()),\n", + " ('clf', XGBClassifier(random_state=8)) # can customize objective function with the objective parameter\n", + "]\n", + "pipe = Pipeline(steps=estimators)\n", + "pipe" + ] + }, + { + "cell_type": "markdown", + "id": "5697f92a", + "metadata": {}, + "source": [ + "Hyper Parameter Tuning" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "ae23227a", + "metadata": {}, + "outputs": [], + "source": [ + "search_space = {#within the estimator calling the parameters, Clf is the name of the classifier \n", + "# previously defined in the pipeline\n", + " 'clf__max_depth': Integer(2,8),\n", + " 'clf__learning_rate': Real(0.001, 1.0, prior='log-uniform'),\n", + " 'clf__subsample': Real(0.5, 1.0),\n", + " 'clf__colsample_bytree': Real(0.5, 1.0),\n", + " 'clf__colsample_bylevel': Real(0.5, 1.0),\n", + " 'clf__colsample_bynode' : Real(0.5, 1.0),\n", + " 'clf__reg_alpha': Real(0.0, 10.0),\n", + " 'clf__reg_lambda': Real(0.0, 10.0),\n", + " 'clf__gamma': Real(0.0, 10.0)\n", + "}\n", + "#Note: The search space can be customized based on the specific needs of the model and the dataset.\n", + "#BayesSearchCV is used for hyperparameter tuning using Bayesian optimization\n", + "#It allows for efficient exploration of the hyperparameter space.\n", + "#bayes_search requirese pipeline and search space to be defined\n", + "opt = BayesSearchCV(\n", + " estimator=pipe,\n", + " search_spaces=search_space,\n", + " n_iter=30,\n", + " scoring='roc_auc', \n", + " cv=3,\n", + " n_jobs=-1,\n", + " random_state=8,\n", + " verbose=2,\n", + " return_train_score=True,\n", + " #is_classifier=True\n", + ")\n" + ] + }, + { + "cell_type": "markdown", + "id": "351702bb", + "metadata": {}, + "source": [ + "Train the XGBoost model" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "026d07ad", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=0.5331080642783614, clf__colsample_bynode=0.7262320733948379, clf__colsample_bytree=0.5362052518135637, clf__gamma=7.436578137661654, clf__learning_rate=0.0011002938624638172, clf__max_depth=5, clf__reg_alpha=5.016505750780453, clf__reg_lambda=1.964788283871643, clf__subsample=0.5258638996089925; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.5331080642783614, clf__colsample_bynode=0.7262320733948379, clf__colsample_bytree=0.5362052518135637, clf__gamma=7.436578137661654, clf__learning_rate=0.0011002938624638172, clf__max_depth=5, clf__reg_alpha=5.016505750780453, clf__reg_lambda=1.964788283871643, clf__subsample=0.5258638996089925; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.5331080642783614, clf__colsample_bynode=0.7262320733948379, clf__colsample_bytree=0.5362052518135637, clf__gamma=7.436578137661654, clf__learning_rate=0.0011002938624638172, clf__max_depth=5, clf__reg_alpha=5.016505750780453, clf__reg_lambda=1.964788283871643, clf__subsample=0.5258638996089925; total time= 0.4s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=0.7098720980049984, clf__colsample_bynode=0.5395172405909037, clf__colsample_bytree=0.5048675793234745, clf__gamma=3.4426412862156925, clf__learning_rate=0.002566198468819385, clf__max_depth=4, clf__reg_alpha=6.94019423320267, clf__reg_lambda=1.9029714271812788, clf__subsample=0.8480768493236798; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.7098720980049984, clf__colsample_bynode=0.5395172405909037, clf__colsample_bytree=0.5048675793234745, clf__gamma=3.4426412862156925, clf__learning_rate=0.002566198468819385, clf__max_depth=4, clf__reg_alpha=6.94019423320267, clf__reg_lambda=1.9029714271812788, clf__subsample=0.8480768493236798; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.7098720980049984, clf__colsample_bynode=0.5395172405909037, clf__colsample_bytree=0.5048675793234745, clf__gamma=3.4426412862156925, clf__learning_rate=0.002566198468819385, clf__max_depth=4, clf__reg_alpha=6.94019423320267, clf__reg_lambda=1.9029714271812788, clf__subsample=0.8480768493236798; total time= 0.4s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=0.6301181140809947, clf__colsample_bynode=0.7703817113387359, clf__colsample_bytree=0.506103014140404, clf__gamma=2.079165271399323, clf__learning_rate=0.0031574039841631043, clf__max_depth=3, clf__reg_alpha=3.9908788581451304, clf__reg_lambda=4.068904354579378, clf__subsample=0.691339226818626; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.6301181140809947, clf__colsample_bynode=0.7703817113387359, clf__colsample_bytree=0.506103014140404, clf__gamma=2.079165271399323, clf__learning_rate=0.0031574039841631043, clf__max_depth=3, clf__reg_alpha=3.9908788581451304, clf__reg_lambda=4.068904354579378, clf__subsample=0.691339226818626; total time= 0.3s\n", + "[CV] END clf__colsample_bylevel=0.6301181140809947, clf__colsample_bynode=0.7703817113387359, clf__colsample_bytree=0.506103014140404, clf__gamma=2.079165271399323, clf__learning_rate=0.0031574039841631043, clf__max_depth=3, clf__reg_alpha=3.9908788581451304, clf__reg_lambda=4.068904354579378, clf__subsample=0.691339226818626; total time= 0.3s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=0.7750018497221565, clf__colsample_bynode=0.5614437441596264, clf__colsample_bytree=0.9126202065825759, clf__gamma=8.289497472648083, clf__learning_rate=0.4299244814327041, clf__max_depth=6, clf__reg_alpha=2.784887532399771, clf__reg_lambda=1.67027558902639, clf__subsample=0.5966102807384807; total time= 0.3s\n", + "[CV] END clf__colsample_bylevel=0.7750018497221565, clf__colsample_bynode=0.5614437441596264, clf__colsample_bytree=0.9126202065825759, clf__gamma=8.289497472648083, clf__learning_rate=0.4299244814327041, clf__max_depth=6, clf__reg_alpha=2.784887532399771, clf__reg_lambda=1.67027558902639, clf__subsample=0.5966102807384807; total time= 0.3s\n", + "[CV] END clf__colsample_bylevel=0.7750018497221565, clf__colsample_bynode=0.5614437441596264, clf__colsample_bytree=0.9126202065825759, clf__gamma=8.289497472648083, clf__learning_rate=0.4299244814327041, clf__max_depth=6, clf__reg_alpha=2.784887532399771, clf__reg_lambda=1.67027558902639, clf__subsample=0.5966102807384807; total time= 0.3s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=0.9425384185492701, clf__colsample_bynode=0.9095956806239844, clf__colsample_bytree=0.706128679361455, clf__gamma=1.6598135411398998, clf__learning_rate=0.7929828265552742, clf__max_depth=7, clf__reg_alpha=6.127334959237263, clf__reg_lambda=4.20954286031855, clf__subsample=0.9992625073567596; total time= 0.3s\n", + "[CV] END clf__colsample_bylevel=0.9425384185492701, clf__colsample_bynode=0.9095956806239844, clf__colsample_bytree=0.706128679361455, clf__gamma=1.6598135411398998, clf__learning_rate=0.7929828265552742, clf__max_depth=7, clf__reg_alpha=6.127334959237263, clf__reg_lambda=4.20954286031855, clf__subsample=0.9992625073567596; total time= 0.3s\n", + "[CV] END clf__colsample_bylevel=0.9425384185492701, clf__colsample_bynode=0.9095956806239844, clf__colsample_bytree=0.706128679361455, clf__gamma=1.6598135411398998, clf__learning_rate=0.7929828265552742, clf__max_depth=7, clf__reg_alpha=6.127334959237263, clf__reg_lambda=4.20954286031855, clf__subsample=0.9992625073567596; total time= 0.3s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=0.5056087634867006, clf__colsample_bynode=0.6000722403604478, clf__colsample_bytree=0.7220415864598968, clf__gamma=5.107918246929528, clf__learning_rate=0.00770902165228149, clf__max_depth=3, clf__reg_alpha=7.419482800525566, clf__reg_lambda=5.853383854066662, clf__subsample=0.9585647835362849; total time= 0.3s\n", + "[CV] END clf__colsample_bylevel=0.5056087634867006, clf__colsample_bynode=0.6000722403604478, clf__colsample_bytree=0.7220415864598968, clf__gamma=5.107918246929528, clf__learning_rate=0.00770902165228149, clf__max_depth=3, clf__reg_alpha=7.419482800525566, clf__reg_lambda=5.853383854066662, clf__subsample=0.9585647835362849; total time= 0.3s\n", + "[CV] END clf__colsample_bylevel=0.5056087634867006, clf__colsample_bynode=0.6000722403604478, clf__colsample_bytree=0.7220415864598968, clf__gamma=5.107918246929528, clf__learning_rate=0.00770902165228149, clf__max_depth=3, clf__reg_alpha=7.419482800525566, clf__reg_lambda=5.853383854066662, clf__subsample=0.9585647835362849; total time= 0.3s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=0.935225370284509, clf__colsample_bynode=0.5390519575908672, clf__colsample_bytree=0.6298025462003691, clf__gamma=8.638048955941981, clf__learning_rate=0.014685268484248162, clf__max_depth=6, clf__reg_alpha=9.596594920803778, clf__reg_lambda=1.7891228625458846, clf__subsample=0.6457705718332348; total time= 0.3s\n", + "[CV] END clf__colsample_bylevel=0.935225370284509, clf__colsample_bynode=0.5390519575908672, clf__colsample_bytree=0.6298025462003691, clf__gamma=8.638048955941981, clf__learning_rate=0.014685268484248162, clf__max_depth=6, clf__reg_alpha=9.596594920803778, clf__reg_lambda=1.7891228625458846, clf__subsample=0.6457705718332348; total time= 0.3s\n", + "[CV] END clf__colsample_bylevel=0.935225370284509, clf__colsample_bynode=0.5390519575908672, clf__colsample_bytree=0.6298025462003691, clf__gamma=8.638048955941981, clf__learning_rate=0.014685268484248162, clf__max_depth=6, clf__reg_alpha=9.596594920803778, clf__reg_lambda=1.7891228625458846, clf__subsample=0.6457705718332348; total time= 0.3s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=0.8255063664935096, clf__colsample_bynode=0.9566459979367115, clf__colsample_bytree=0.7745652753956729, clf__gamma=9.034580483401264, clf__learning_rate=0.02796171154881776, clf__max_depth=2, clf__reg_alpha=2.3562893513108114, clf__reg_lambda=7.616125300822734, clf__subsample=0.5252342481879482; total time= 0.3s\n", + "[CV] END clf__colsample_bylevel=0.8255063664935096, clf__colsample_bynode=0.9566459979367115, clf__colsample_bytree=0.7745652753956729, clf__gamma=9.034580483401264, clf__learning_rate=0.02796171154881776, clf__max_depth=2, clf__reg_alpha=2.3562893513108114, clf__reg_lambda=7.616125300822734, clf__subsample=0.5252342481879482; total time= 0.3s\n", + "[CV] END clf__colsample_bylevel=0.8255063664935096, clf__colsample_bynode=0.9566459979367115, clf__colsample_bytree=0.7745652753956729, clf__gamma=9.034580483401264, clf__learning_rate=0.02796171154881776, clf__max_depth=2, clf__reg_alpha=2.3562893513108114, clf__reg_lambda=7.616125300822734, clf__subsample=0.5252342481879482; total time= 0.3s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=0.7160044460033754, clf__colsample_bynode=0.5634842539270097, clf__colsample_bytree=0.8894150401192538, clf__gamma=0.12840880628708476, clf__learning_rate=0.006917774244564682, clf__max_depth=4, clf__reg_alpha=9.964867597661469, clf__reg_lambda=9.039217490191113, clf__subsample=0.7399361526500796; total time= 0.3s\n", + "[CV] END clf__colsample_bylevel=0.7160044460033754, clf__colsample_bynode=0.5634842539270097, clf__colsample_bytree=0.8894150401192538, clf__gamma=0.12840880628708476, clf__learning_rate=0.006917774244564682, clf__max_depth=4, clf__reg_alpha=9.964867597661469, clf__reg_lambda=9.039217490191113, clf__subsample=0.7399361526500796; total time= 0.3s\n", + "[CV] END clf__colsample_bylevel=0.7160044460033754, clf__colsample_bynode=0.5634842539270097, clf__colsample_bytree=0.8894150401192538, clf__gamma=0.12840880628708476, clf__learning_rate=0.006917774244564682, clf__max_depth=4, clf__reg_alpha=9.964867597661469, clf__reg_lambda=9.039217490191113, clf__subsample=0.7399361526500796; total time= 0.3s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=0.6854728136721551, clf__colsample_bynode=0.9716292421559054, clf__colsample_bytree=0.9999681720272138, clf__gamma=9.269342703724346, clf__learning_rate=0.4165635668761467, clf__max_depth=5, clf__reg_alpha=9.90967391483027, clf__reg_lambda=9.617478139041276, clf__subsample=0.7406323564767542; total time= 0.3s\n", + "[CV] END clf__colsample_bylevel=0.6854728136721551, clf__colsample_bynode=0.9716292421559054, clf__colsample_bytree=0.9999681720272138, clf__gamma=9.269342703724346, clf__learning_rate=0.4165635668761467, clf__max_depth=5, clf__reg_alpha=9.90967391483027, clf__reg_lambda=9.617478139041276, clf__subsample=0.7406323564767542; total time= 0.3s\n", + "[CV] END clf__colsample_bylevel=0.6854728136721551, clf__colsample_bynode=0.9716292421559054, clf__colsample_bytree=0.9999681720272138, clf__gamma=9.269342703724346, clf__learning_rate=0.4165635668761467, clf__max_depth=5, clf__reg_alpha=9.90967391483027, clf__reg_lambda=9.617478139041276, clf__subsample=0.7406323564767542; total time= 0.3s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=0.7723018676832343, clf__colsample_bynode=0.7730488247401104, clf__colsample_bytree=0.912288322775457, clf__gamma=0.09283704456179322, clf__learning_rate=0.22456104337268815, clf__max_depth=3, clf__reg_alpha=0.13080555109971195, clf__reg_lambda=3.0680973538012397, clf__subsample=0.9696264100257488; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.7723018676832343, clf__colsample_bynode=0.7730488247401104, clf__colsample_bytree=0.912288322775457, clf__gamma=0.09283704456179322, clf__learning_rate=0.22456104337268815, clf__max_depth=3, clf__reg_alpha=0.13080555109971195, clf__reg_lambda=3.0680973538012397, clf__subsample=0.9696264100257488; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.7723018676832343, clf__colsample_bynode=0.7730488247401104, clf__colsample_bytree=0.912288322775457, clf__gamma=0.09283704456179322, clf__learning_rate=0.22456104337268815, clf__max_depth=3, clf__reg_alpha=0.13080555109971195, clf__reg_lambda=3.0680973538012397, clf__subsample=0.9696264100257488; total time= 0.3s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=0.5869045459755697, clf__colsample_bynode=0.8634774697005057, clf__colsample_bytree=0.9403618922982758, clf__gamma=1.8527618162736694, clf__learning_rate=0.06955243801357099, clf__max_depth=8, clf__reg_alpha=9.814121464631345, clf__reg_lambda=2.2241111004546306, clf__subsample=0.5050099833110352; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.5869045459755697, clf__colsample_bynode=0.8634774697005057, clf__colsample_bytree=0.9403618922982758, clf__gamma=1.8527618162736694, clf__learning_rate=0.06955243801357099, clf__max_depth=8, clf__reg_alpha=9.814121464631345, clf__reg_lambda=2.2241111004546306, clf__subsample=0.5050099833110352; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.5869045459755697, clf__colsample_bynode=0.8634774697005057, clf__colsample_bytree=0.9403618922982758, clf__gamma=1.8527618162736694, clf__learning_rate=0.06955243801357099, clf__max_depth=8, clf__reg_alpha=9.814121464631345, clf__reg_lambda=2.2241111004546306, clf__subsample=0.5050099833110352; total time= 0.4s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=0.6577260490846814, clf__colsample_bynode=0.9459504140934167, clf__colsample_bytree=0.6889735593644536, clf__gamma=0.0, clf__learning_rate=0.14138755527281946, clf__max_depth=8, clf__reg_alpha=8.909470446776664, clf__reg_lambda=10.0, clf__subsample=0.6548185101793; total time= 0.5s\n", + "[CV] END clf__colsample_bylevel=0.6577260490846814, clf__colsample_bynode=0.9459504140934167, clf__colsample_bytree=0.6889735593644536, clf__gamma=0.0, clf__learning_rate=0.14138755527281946, clf__max_depth=8, clf__reg_alpha=8.909470446776664, clf__reg_lambda=10.0, clf__subsample=0.6548185101793; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.6577260490846814, clf__colsample_bynode=0.9459504140934167, clf__colsample_bytree=0.6889735593644536, clf__gamma=0.0, clf__learning_rate=0.14138755527281946, clf__max_depth=8, clf__reg_alpha=8.909470446776664, clf__reg_lambda=10.0, clf__subsample=0.6548185101793; total time= 0.4s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=0.6760642200903499, clf__colsample_bynode=0.7217263801593097, clf__colsample_bytree=0.5, clf__gamma=0.0, clf__learning_rate=0.1302835423378258, clf__max_depth=3, clf__reg_alpha=9.815881203730958, clf__reg_lambda=0.0, clf__subsample=0.6358797096074176; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.6760642200903499, clf__colsample_bynode=0.7217263801593097, clf__colsample_bytree=0.5, clf__gamma=0.0, clf__learning_rate=0.1302835423378258, clf__max_depth=3, clf__reg_alpha=9.815881203730958, clf__reg_lambda=0.0, clf__subsample=0.6358797096074176; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.6760642200903499, clf__colsample_bynode=0.7217263801593097, clf__colsample_bytree=0.5, clf__gamma=0.0, clf__learning_rate=0.1302835423378258, clf__max_depth=3, clf__reg_alpha=9.815881203730958, clf__reg_lambda=0.0, clf__subsample=0.6358797096074176; total time= 0.4s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=0.5845839656611151, clf__colsample_bynode=0.7250250762103452, clf__colsample_bytree=0.9981700248106462, clf__gamma=9.556525989245547, clf__learning_rate=0.0010843112498718414, clf__max_depth=3, clf__reg_alpha=0.14735290535317305, clf__reg_lambda=9.238814536694226, clf__subsample=0.8995049367387801; total time= 0.3s\n", + "[CV] END clf__colsample_bylevel=0.5845839656611151, clf__colsample_bynode=0.7250250762103452, clf__colsample_bytree=0.9981700248106462, clf__gamma=9.556525989245547, clf__learning_rate=0.0010843112498718414, clf__max_depth=3, clf__reg_alpha=0.14735290535317305, clf__reg_lambda=9.238814536694226, clf__subsample=0.8995049367387801; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.5845839656611151, clf__colsample_bynode=0.7250250762103452, clf__colsample_bytree=0.9981700248106462, clf__gamma=9.556525989245547, clf__learning_rate=0.0010843112498718414, clf__max_depth=3, clf__reg_alpha=0.14735290535317305, clf__reg_lambda=9.238814536694226, clf__subsample=0.8995049367387801; total time= 0.4s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=0.5854967726735413, clf__colsample_bynode=0.7024935828670682, clf__colsample_bytree=0.5035777836647117, clf__gamma=9.849773665864356, clf__learning_rate=0.8756258419501888, clf__max_depth=8, clf__reg_alpha=7.504721094219438, clf__reg_lambda=5.911145882951871, clf__subsample=0.5683773486467666; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.5854967726735413, clf__colsample_bynode=0.7024935828670682, clf__colsample_bytree=0.5035777836647117, clf__gamma=9.849773665864356, clf__learning_rate=0.8756258419501888, clf__max_depth=8, clf__reg_alpha=7.504721094219438, clf__reg_lambda=5.911145882951871, clf__subsample=0.5683773486467666; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.5854967726735413, clf__colsample_bynode=0.7024935828670682, clf__colsample_bytree=0.5035777836647117, clf__gamma=9.849773665864356, clf__learning_rate=0.8756258419501888, clf__max_depth=8, clf__reg_alpha=7.504721094219438, clf__reg_lambda=5.911145882951871, clf__subsample=0.5683773486467666; total time= 0.4s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=0.5402378105451193, clf__colsample_bynode=0.604715085125622, clf__colsample_bytree=1.0, clf__gamma=2.659735482461985, clf__learning_rate=1.0, clf__max_depth=5, clf__reg_alpha=6.894319369891445, clf__reg_lambda=7.265511387449289, clf__subsample=0.568226551334247; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.5402378105451193, clf__colsample_bynode=0.604715085125622, clf__colsample_bytree=1.0, clf__gamma=2.659735482461985, clf__learning_rate=1.0, clf__max_depth=5, clf__reg_alpha=6.894319369891445, clf__reg_lambda=7.265511387449289, clf__subsample=0.568226551334247; total time= 0.3s\n", + "[CV] END clf__colsample_bylevel=0.5402378105451193, clf__colsample_bynode=0.604715085125622, clf__colsample_bytree=1.0, clf__gamma=2.659735482461985, clf__learning_rate=1.0, clf__max_depth=5, clf__reg_alpha=6.894319369891445, clf__reg_lambda=7.265511387449289, clf__subsample=0.568226551334247; total time= 0.4s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=0.5087587974541569, clf__colsample_bynode=0.8004961908213178, clf__colsample_bytree=0.9188630786243432, clf__gamma=4.638212225913446, clf__learning_rate=0.5792966022904099, clf__max_depth=8, clf__reg_alpha=1.5878836678255284, clf__reg_lambda=3.0728173518354436, clf__subsample=1.0; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.5087587974541569, clf__colsample_bynode=0.8004961908213178, clf__colsample_bytree=0.9188630786243432, clf__gamma=4.638212225913446, clf__learning_rate=0.5792966022904099, clf__max_depth=8, clf__reg_alpha=1.5878836678255284, clf__reg_lambda=3.0728173518354436, clf__subsample=1.0; total time= 0.3s\n", + "[CV] END clf__colsample_bylevel=0.5087587974541569, clf__colsample_bynode=0.8004961908213178, clf__colsample_bytree=0.9188630786243432, clf__gamma=4.638212225913446, clf__learning_rate=0.5792966022904099, clf__max_depth=8, clf__reg_alpha=1.5878836678255284, clf__reg_lambda=3.0728173518354436, clf__subsample=1.0; total time= 0.3s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=0.7157221399304734, clf__colsample_bynode=0.828021086306063, clf__colsample_bytree=0.9226383881368138, clf__gamma=0.0, clf__learning_rate=1.0, clf__max_depth=3, clf__reg_alpha=9.058785882891943, clf__reg_lambda=9.859891434716468, clf__subsample=0.5716700977212141; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.7157221399304734, clf__colsample_bynode=0.828021086306063, clf__colsample_bytree=0.9226383881368138, clf__gamma=0.0, clf__learning_rate=1.0, clf__max_depth=3, clf__reg_alpha=9.058785882891943, clf__reg_lambda=9.859891434716468, clf__subsample=0.5716700977212141; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.7157221399304734, clf__colsample_bynode=0.828021086306063, clf__colsample_bytree=0.9226383881368138, clf__gamma=0.0, clf__learning_rate=1.0, clf__max_depth=3, clf__reg_alpha=9.058785882891943, clf__reg_lambda=9.859891434716468, clf__subsample=0.5716700977212141; total time= 0.5s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=1.0, clf__colsample_bynode=0.8398024088381104, clf__colsample_bytree=1.0, clf__gamma=0.0, clf__learning_rate=0.12472446448987655, clf__max_depth=8, clf__reg_alpha=10.0, clf__reg_lambda=9.900646330789474, clf__subsample=1.0; total time= 0.5s\n", + "[CV] END clf__colsample_bylevel=1.0, clf__colsample_bynode=0.8398024088381104, clf__colsample_bytree=1.0, clf__gamma=0.0, clf__learning_rate=0.12472446448987655, clf__max_depth=8, clf__reg_alpha=10.0, clf__reg_lambda=9.900646330789474, clf__subsample=1.0; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=1.0, clf__colsample_bynode=0.8398024088381104, clf__colsample_bytree=1.0, clf__gamma=0.0, clf__learning_rate=0.12472446448987655, clf__max_depth=8, clf__reg_alpha=10.0, clf__reg_lambda=9.900646330789474, clf__subsample=1.0; total time= 0.5s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=1.0, clf__colsample_bynode=0.7648740843304054, clf__colsample_bytree=1.0, clf__gamma=0.0, clf__learning_rate=0.13509903788527342, clf__max_depth=5, clf__reg_alpha=8.919375149500015, clf__reg_lambda=2.481813646400672, clf__subsample=0.5; total time= 0.5s\n", + "[CV] END clf__colsample_bylevel=1.0, clf__colsample_bynode=0.7648740843304054, clf__colsample_bytree=1.0, clf__gamma=0.0, clf__learning_rate=0.13509903788527342, clf__max_depth=5, clf__reg_alpha=8.919375149500015, clf__reg_lambda=2.481813646400672, clf__subsample=0.5; total time= 0.5s\n", + "[CV] END clf__colsample_bylevel=1.0, clf__colsample_bynode=0.7648740843304054, clf__colsample_bytree=1.0, clf__gamma=0.0, clf__learning_rate=0.13509903788527342, clf__max_depth=5, clf__reg_alpha=8.919375149500015, clf__reg_lambda=2.481813646400672, clf__subsample=0.5; total time= 0.4s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=0.9358894420963616, clf__colsample_bynode=0.855282118547783, clf__colsample_bytree=1.0, clf__gamma=0.0, clf__learning_rate=0.08435283462541183, clf__max_depth=6, clf__reg_alpha=1.2079974432107585, clf__reg_lambda=5.793583799464579, clf__subsample=0.978466442740766; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.9358894420963616, clf__colsample_bynode=0.855282118547783, clf__colsample_bytree=1.0, clf__gamma=0.0, clf__learning_rate=0.08435283462541183, clf__max_depth=6, clf__reg_alpha=1.2079974432107585, clf__reg_lambda=5.793583799464579, clf__subsample=0.978466442740766; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.9358894420963616, clf__colsample_bynode=0.855282118547783, clf__colsample_bytree=1.0, clf__gamma=0.0, clf__learning_rate=0.08435283462541183, clf__max_depth=6, clf__reg_alpha=1.2079974432107585, clf__reg_lambda=5.793583799464579, clf__subsample=0.978466442740766; total time= 0.4s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=0.5091891994585076, clf__colsample_bynode=0.8942779420776591, clf__colsample_bytree=0.9585526976941942, clf__gamma=0.09704478950707737, clf__learning_rate=0.001082794871840973, clf__max_depth=5, clf__reg_alpha=9.274914215839157, clf__reg_lambda=2.1283026903659943, clf__subsample=0.7630999564945671; total time= 0.5s\n", + "[CV] END clf__colsample_bylevel=0.5091891994585076, clf__colsample_bynode=0.8942779420776591, clf__colsample_bytree=0.9585526976941942, clf__gamma=0.09704478950707737, clf__learning_rate=0.001082794871840973, clf__max_depth=5, clf__reg_alpha=9.274914215839157, clf__reg_lambda=2.1283026903659943, clf__subsample=0.7630999564945671; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.5091891994585076, clf__colsample_bynode=0.8942779420776591, clf__colsample_bytree=0.9585526976941942, clf__gamma=0.09704478950707737, clf__learning_rate=0.001082794871840973, clf__max_depth=5, clf__reg_alpha=9.274914215839157, clf__reg_lambda=2.1283026903659943, clf__subsample=0.7630999564945671; total time= 0.4s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=0.9667866472759579, clf__colsample_bynode=0.756589540431827, clf__colsample_bytree=0.5183109110604756, clf__gamma=0.6563749139348486, clf__learning_rate=0.8020231136861821, clf__max_depth=4, clf__reg_alpha=1.7742271736420614, clf__reg_lambda=1.6170592289744992, clf__subsample=0.9587460864107861; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.9667866472759579, clf__colsample_bynode=0.756589540431827, clf__colsample_bytree=0.5183109110604756, clf__gamma=0.6563749139348486, clf__learning_rate=0.8020231136861821, clf__max_depth=4, clf__reg_alpha=1.7742271736420614, clf__reg_lambda=1.6170592289744992, clf__subsample=0.9587460864107861; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.9667866472759579, clf__colsample_bynode=0.756589540431827, clf__colsample_bytree=0.5183109110604756, clf__gamma=0.6563749139348486, clf__learning_rate=0.8020231136861821, clf__max_depth=4, clf__reg_alpha=1.7742271736420614, clf__reg_lambda=1.6170592289744992, clf__subsample=0.9587460864107861; total time= 0.4s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=0.5225167054873755, clf__colsample_bynode=0.7203413284241602, clf__colsample_bytree=1.0, clf__gamma=10.0, clf__learning_rate=0.03681144114853299, clf__max_depth=4, clf__reg_alpha=0.0, clf__reg_lambda=6.01677944462046, clf__subsample=0.5880016600496364; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.5225167054873755, clf__colsample_bynode=0.7203413284241602, clf__colsample_bytree=1.0, clf__gamma=10.0, clf__learning_rate=0.03681144114853299, clf__max_depth=4, clf__reg_alpha=0.0, clf__reg_lambda=6.01677944462046, clf__subsample=0.5880016600496364; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.5225167054873755, clf__colsample_bynode=0.7203413284241602, clf__colsample_bytree=1.0, clf__gamma=10.0, clf__learning_rate=0.03681144114853299, clf__max_depth=4, clf__reg_alpha=0.0, clf__reg_lambda=6.01677944462046, clf__subsample=0.5880016600496364; total time= 0.4s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=0.6166765512396893, clf__colsample_bynode=0.8475533219148963, clf__colsample_bytree=0.7210162320615964, clf__gamma=0.0, clf__learning_rate=0.001, clf__max_depth=2, clf__reg_alpha=0.0, clf__reg_lambda=2.3346893450449215, clf__subsample=0.6837672488303974; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.6166765512396893, clf__colsample_bynode=0.8475533219148963, clf__colsample_bytree=0.7210162320615964, clf__gamma=0.0, clf__learning_rate=0.001, clf__max_depth=2, clf__reg_alpha=0.0, clf__reg_lambda=2.3346893450449215, clf__subsample=0.6837672488303974; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.6166765512396893, clf__colsample_bynode=0.8475533219148963, clf__colsample_bytree=0.7210162320615964, clf__gamma=0.0, clf__learning_rate=0.001, clf__max_depth=2, clf__reg_alpha=0.0, clf__reg_lambda=2.3346893450449215, clf__subsample=0.6837672488303974; total time= 0.4s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=0.9406437118721191, clf__colsample_bynode=0.7481377937916189, clf__colsample_bytree=0.5076126608722743, clf__gamma=0.389296454396082, clf__learning_rate=0.021406691167827296, clf__max_depth=4, clf__reg_alpha=4.469298231686083, clf__reg_lambda=3.9552062576301483, clf__subsample=0.6130527840407582; total time= 0.5s\n", + "[CV] END clf__colsample_bylevel=0.9406437118721191, clf__colsample_bynode=0.7481377937916189, clf__colsample_bytree=0.5076126608722743, clf__gamma=0.389296454396082, clf__learning_rate=0.021406691167827296, clf__max_depth=4, clf__reg_alpha=4.469298231686083, clf__reg_lambda=3.9552062576301483, clf__subsample=0.6130527840407582; total time= 0.4s\n", + "[CV] END clf__colsample_bylevel=0.9406437118721191, clf__colsample_bynode=0.7481377937916189, clf__colsample_bytree=0.5076126608722743, clf__gamma=0.389296454396082, clf__learning_rate=0.021406691167827296, clf__max_depth=4, clf__reg_alpha=4.469298231686083, clf__reg_lambda=3.9552062576301483, clf__subsample=0.6130527840407582; total time= 0.4s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=0.5806962212230957, clf__colsample_bynode=0.7586902863302571, clf__colsample_bytree=0.7552310835375295, clf__gamma=10.0, clf__learning_rate=0.001, clf__max_depth=6, clf__reg_alpha=7.911043668944454, clf__reg_lambda=9.156553339386216, clf__subsample=0.7459268575731307; total time= 0.5s\n", + "[CV] END clf__colsample_bylevel=0.5806962212230957, clf__colsample_bynode=0.7586902863302571, clf__colsample_bytree=0.7552310835375295, clf__gamma=10.0, clf__learning_rate=0.001, clf__max_depth=6, clf__reg_alpha=7.911043668944454, clf__reg_lambda=9.156553339386216, clf__subsample=0.7459268575731307; total time= 0.6s\n", + "[CV] END clf__colsample_bylevel=0.5806962212230957, clf__colsample_bynode=0.7586902863302571, clf__colsample_bytree=0.7552310835375295, clf__gamma=10.0, clf__learning_rate=0.001, clf__max_depth=6, clf__reg_alpha=7.911043668944454, clf__reg_lambda=9.156553339386216, clf__subsample=0.7459268575731307; total time= 0.6s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=1.0, clf__colsample_bynode=0.5, clf__colsample_bytree=0.8467569097961967, clf__gamma=0.0, clf__learning_rate=0.10115118530494382, clf__max_depth=6, clf__reg_alpha=0.0, clf__reg_lambda=0.0, clf__subsample=0.5; total time= 0.8s\n", + "[CV] END clf__colsample_bylevel=1.0, clf__colsample_bynode=0.5, clf__colsample_bytree=0.8467569097961967, clf__gamma=0.0, clf__learning_rate=0.10115118530494382, clf__max_depth=6, clf__reg_alpha=0.0, clf__reg_lambda=0.0, clf__subsample=0.5; total time= 0.9s\n", + "[CV] END clf__colsample_bylevel=1.0, clf__colsample_bynode=0.5, clf__colsample_bytree=0.8467569097961967, clf__gamma=0.0, clf__learning_rate=0.10115118530494382, clf__max_depth=6, clf__reg_alpha=0.0, clf__reg_lambda=0.0, clf__subsample=0.5; total time= 0.9s\n", + "Fitting 3 folds for each of 1 candidates, totalling 3 fits\n", + "[CV] END clf__colsample_bylevel=1.0, clf__colsample_bynode=0.8802262489618233, clf__colsample_bytree=0.6471340731814139, clf__gamma=0.0, clf__learning_rate=0.11747225832482089, clf__max_depth=5, clf__reg_alpha=10.0, clf__reg_lambda=0.18422807726505983, clf__subsample=1.0; total time= 0.6s\n", + "[CV] END clf__colsample_bylevel=1.0, clf__colsample_bynode=0.8802262489618233, clf__colsample_bytree=0.6471340731814139, clf__gamma=0.0, clf__learning_rate=0.11747225832482089, clf__max_depth=5, clf__reg_alpha=10.0, clf__reg_lambda=0.18422807726505983, clf__subsample=1.0; total time= 0.7s\n", + "[CV] END clf__colsample_bylevel=1.0, clf__colsample_bynode=0.8802262489618233, clf__colsample_bytree=0.6471340731814139, clf__gamma=0.0, clf__learning_rate=0.11747225832482089, clf__max_depth=5, clf__reg_alpha=10.0, clf__reg_lambda=0.18422807726505983, clf__subsample=1.0; total time= 0.7s\n" + ] + }, + { + "data": { + "text/html": [ + "
BayesSearchCV(cv=3,\n",
+       "              estimator=Pipeline(steps=[('encoder', TargetEncoder()),\n",
+       "                                        ('clf',\n",
+       "                                         XGBClassifier(base_score=None,\n",
+       "                                                       booster=None,\n",
+       "                                                       callbacks=None,\n",
+       "                                                       colsample_bylevel=None,\n",
+       "                                                       colsample_bynode=None,\n",
+       "                                                       colsample_bytree=None,\n",
+       "                                                       device=None,\n",
+       "                                                       early_stopping_rounds=None,\n",
+       "                                                       enable_categorical=False,\n",
+       "                                                       eval_metric=None,\n",
+       "                                                       feature_types=None,\n",
+       "                                                       feature_weights=None,\n",
+       "                                                       gamma=None,\n",
+       "                                                       grow_policy=N...\n",
+       "                             'clf__learning_rate': Real(low=0.001, high=1.0, prior='log-uniform', transform='normalize'),\n",
+       "                             'clf__max_depth': Integer(low=2, high=8, prior='uniform', transform='normalize'),\n",
+       "                             'clf__reg_alpha': Real(low=0.0, high=10.0, prior='uniform', transform='normalize'),\n",
+       "                             'clf__reg_lambda': Real(low=0.0, high=10.0, prior='uniform', transform='normalize'),\n",
+       "                             'clf__subsample': Real(low=0.5, high=1.0, prior='uniform', transform='normalize')},\n",
+       "              verbose=2)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ], + "text/plain": [ + "BayesSearchCV(cv=3,\n", + " estimator=Pipeline(steps=[('encoder', TargetEncoder()),\n", + " ('clf',\n", + " XGBClassifier(base_score=None,\n", + " booster=None,\n", + " callbacks=None,\n", + " colsample_bylevel=None,\n", + " colsample_bynode=None,\n", + " colsample_bytree=None,\n", + " device=None,\n", + " early_stopping_rounds=None,\n", + " enable_categorical=False,\n", + " eval_metric=None,\n", + " feature_types=None,\n", + " feature_weights=None,\n", + " gamma=None,\n", + " grow_policy=N...\n", + " 'clf__learning_rate': Real(low=0.001, high=1.0, prior='log-uniform', transform='normalize'),\n", + " 'clf__max_depth': Integer(low=2, high=8, prior='uniform', transform='normalize'),\n", + " 'clf__reg_alpha': Real(low=0.0, high=10.0, prior='uniform', transform='normalize'),\n", + " 'clf__reg_lambda': Real(low=0.0, high=10.0, prior='uniform', transform='normalize'),\n", + " 'clf__subsample': Real(low=0.5, high=1.0, prior='uniform', transform='normalize')},\n", + " verbose=2)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "opt.fit(X_train, y_train)" + ] + }, + { + "cell_type": "markdown", + "id": "780f95a5", + "metadata": {}, + "source": [ + "Evaluation and prediciton" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "82806480", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
Pipeline(steps=[('encoder',\n",
+       "                 TargetEncoder(cols=['job_type', 'marital', 'education',\n",
+       "                                     'default_status', 'housing_loan_status',\n",
+       "                                     'personal_loan_status', 'contact_type',\n",
+       "                                     'contact_month', 'contact_day_of_week',\n",
+       "                                     'previous_outcome'])),\n",
+       "                ('clf',\n",
+       "                 XGBClassifier(base_score=None, booster=None, callbacks=None,\n",
+       "                               colsample_bylevel=1.0,\n",
+       "                               colsample_bynode=0.8802262489618233,\n",
+       "                               colsample_...\n",
+       "                               gamma=0.0, grow_policy=None,\n",
+       "                               importance_type=None,\n",
+       "                               interaction_constraints=None,\n",
+       "                               learning_rate=0.11747225832482089, max_bin=None,\n",
+       "                               max_cat_threshold=None, max_cat_to_onehot=None,\n",
+       "                               max_delta_step=None, max_depth=5,\n",
+       "                               max_leaves=None, min_child_weight=None,\n",
+       "                               missing=nan, monotone_constraints=None,\n",
+       "                               multi_strategy=None, n_estimators=None,\n",
+       "                               n_jobs=None, num_parallel_tree=None, ...))])
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ], + "text/plain": [ + "Pipeline(steps=[('encoder',\n", + " TargetEncoder(cols=['job_type', 'marital', 'education',\n", + " 'default_status', 'housing_loan_status',\n", + " 'personal_loan_status', 'contact_type',\n", + " 'contact_month', 'contact_day_of_week',\n", + " 'previous_outcome'])),\n", + " ('clf',\n", + " XGBClassifier(base_score=None, booster=None, callbacks=None,\n", + " colsample_bylevel=1.0,\n", + " colsample_bynode=0.8802262489618233,\n", + " colsample_...\n", + " gamma=0.0, grow_policy=None,\n", + " importance_type=None,\n", + " interaction_constraints=None,\n", + " learning_rate=0.11747225832482089, max_bin=None,\n", + " max_cat_threshold=None, max_cat_to_onehot=None,\n", + " max_delta_step=None, max_depth=5,\n", + " max_leaves=None, min_child_weight=None,\n", + " missing=nan, monotone_constraints=None,\n", + " multi_strategy=None, n_estimators=None,\n", + " n_jobs=None, num_parallel_tree=None, ...))])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "opt.best_estimator_" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "84d0865a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "np.float64(0.7760446966697848)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "opt.best_score_" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "060795a0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.7609064484773256" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "opt.score(X_test, y_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "1bc301ca", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0, 0, 0, ..., 0, 0, 0], shape=(8238,))" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "opt.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "c4559bab", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0.9707873 , 0.02921269],\n", + " [0.909715 , 0.09028501],\n", + " [0.8761 , 0.12390002],\n", + " ...,\n", + " [0.93365276, 0.06634723],\n", + " [0.8354016 , 0.16459839],\n", + " [0.93391794, 0.06608208]], shape=(8238, 2), dtype=float32)" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "opt.predict_proba(X_test)" + ] + }, + { + "cell_type": "markdown", + "id": "bf4bdbb6", + "metadata": {}, + "source": [ + "Measuring Feature importance" + ] + }, + { + "cell_type": "markdown", + "id": "809e3b5c", + "metadata": {}, + "source": [ + "It plots the factors that contriubuted most." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "9b69fc8c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from xgboost import plot_importance\n", + "\n", + "opt.best_estimator_.steps\n", + "xgboost_step = opt.best_estimator_.steps[1]\n", + "xgboost_model = xgboost_step[1]\n", + "plot_importance(xgboost_model)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.18" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/python/sklearn.ipynb b/python/sklearn.ipynb new file mode 100644 index 0000000..1af04db --- /dev/null +++ b/python/sklearn.ipynb @@ -0,0 +1,409 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "fd34a325", + "metadata": {}, + "source": [ + "# A file for functions of scikit-learn(sklearn) library\n", + "(Note: These are all simple implementations)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "7d404571", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd # to handle dataframes\n", + "import sklearn as skl\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.preprocessing import StandardScaler\n", + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.metrics import classification_report , accuracy_score\n", + "from sklearn.neighbors import KNeighborsClassifier\n", + "from sklearn.svm import SVC\n" + ] + }, + { + "cell_type": "markdown", + "id": "cf06a9a6", + "metadata": {}, + "source": [ + "Reading the csv" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "10a208c2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
fLengthfWidthfSizefConcfConc1fAsymfM3LongfM3TransfAlphafDistclass
028.796716.00212.64490.39180.198227.700422.0110-8.202740.092081.8828g
131.603611.72352.51850.53030.377326.272223.8238-9.95746.3609205.2610g
2162.0520136.03104.06120.03740.0187116.7410-64.8580-45.216076.9600256.7880g
323.81729.57282.33850.61470.392227.2107-6.4633-7.151310.4490116.7370g
475.136230.92053.16110.31680.1832-5.527728.552521.83934.6480356.4620g
\n", + "
" + ], + "text/plain": [ + " fLength fWidth fSize fConc fConc1 fAsym fM3Long fM3Trans \\\n", + "0 28.7967 16.0021 2.6449 0.3918 0.1982 27.7004 22.0110 -8.2027 \n", + "1 31.6036 11.7235 2.5185 0.5303 0.3773 26.2722 23.8238 -9.9574 \n", + "2 162.0520 136.0310 4.0612 0.0374 0.0187 116.7410 -64.8580 -45.2160 \n", + "3 23.8172 9.5728 2.3385 0.6147 0.3922 27.2107 -6.4633 -7.1513 \n", + "4 75.1362 30.9205 3.1611 0.3168 0.1832 -5.5277 28.5525 21.8393 \n", + "\n", + " fAlpha fDist class \n", + "0 40.0920 81.8828 g \n", + "1 6.3609 205.2610 g \n", + "2 76.9600 256.7880 g \n", + "3 10.4490 116.7370 g \n", + "4 4.6480 356.4620 g " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cols = [\"fLength\", \"fWidth\", \"fSize\", \"fConc\", \"fConc1\", \"fAsym\", \"fM3Long\", \"fM3Trans\", \"fAlpha\", \"fDist\", \"class\"] # column names\n", + "# Reading the csv\n", + "df = pd.read_csv(\"magic04.data\", names=cols) # original file has no header, so we provide column names\n", + "df.head()\n" + ] + }, + { + "cell_type": "markdown", + "id": "f904afb3", + "metadata": {}, + "source": [ + "train test split" + ] + }, + { + "cell_type": "markdown", + "id": "4fd9c9e7", + "metadata": {}, + "source": [ + "we split the data into train and test. They can be in any ratio but normally we take 80/20 \n", + "X_train has features while y_train has the target result against features so the model can \n", + "know what type of result should be produced for what value" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "f61518fb", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " fLength fWidth fSize fConc fConc1 fAsym fM3Long fM3Trans \\\n", + "0 28.7967 16.0021 2.6449 0.3918 0.1982 27.7004 22.0110 -8.2027 \n", + "1 31.6036 11.7235 2.5185 0.5303 0.3773 26.2722 23.8238 -9.9574 \n", + "2 162.0520 136.0310 4.0612 0.0374 0.0187 116.7410 -64.8580 -45.2160 \n", + "3 23.8172 9.5728 2.3385 0.6147 0.3922 27.2107 -6.4633 -7.1513 \n", + "4 75.1362 30.9205 3.1611 0.3168 0.1832 -5.5277 28.5525 21.8393 \n", + "\n", + " fAlpha fDist \n", + "0 40.0920 81.8828 \n", + "1 6.3609 205.2610 \n", + "2 76.9600 256.7880 \n", + "3 10.4490 116.7370 \n", + "4 4.6480 356.4620 \n" + ] + } + ], + "source": [ + "X=df.drop(\"class\", axis=1) # drop the last column which is the target variable meaning we want to predict\n", + "y=df[\"class\"] # target variable\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n", + "print(X.head()) # Show the first 5 rows of training features\n" + ] + }, + { + "cell_type": "markdown", + "id": "ce509197", + "metadata": {}, + "source": [ + "Standard scalar" + ] + }, + { + "cell_type": "markdown", + "id": "68c783be", + "metadata": {}, + "source": [ + "Scale and normalize the data before actually training it. \n", + "This ensures that all featurs contribute equally to model. \n", + "And give a better result after training. " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "940cafaa", + "metadata": {}, + "outputs": [], + "source": [ + "scaler = StandardScaler()\n", + "X_scaled = scaler.fit_transform(X)\n", + "X_train_scaled = scaler.fit_transform(X_train)\n", + "X_test_scaled = scaler.transform(X_test)\n" + ] + }, + { + "cell_type": "markdown", + "id": "6b69c4ca", + "metadata": {}, + "source": [ + "Logistic Regresssion \n", + "Used for bianry classification e.g, email classification of spam or not spam" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "e3954e29", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " g 0.81 0.90 0.85 2460\n", + " h 0.76 0.60 0.67 1344\n", + "\n", + " accuracy 0.79 3804\n", + " macro avg 0.78 0.75 0.76 3804\n", + "weighted avg 0.79 0.79 0.79 3804\n", + "\n" + ] + } + ], + "source": [ + "# Use scaled data for training\n", + "model = LogisticRegression(max_iter=1000)\n", + "model.fit(X_train_scaled, y_train)\n", + "\n", + "y_pred = model.predict(X_test_scaled) # use scaled test data\n", + "print(classification_report(y_test, y_pred))" + ] + }, + { + "cell_type": "markdown", + "id": "a570f21c", + "metadata": {}, + "source": [ + "KNN Classifier \n", + "Classication based on nearest neighbours" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "a6fee560", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " g 0.81 0.90 0.85 2460\n", + " h 0.76 0.60 0.67 1344\n", + "\n", + " accuracy 0.79 3804\n", + " macro avg 0.78 0.75 0.76 3804\n", + "weighted avg 0.79 0.79 0.79 3804\n", + "\n", + "Accuracy: 0.7931125131440588\n" + ] + } + ], + "source": [ + "knn_model = KNeighborsClassifier(n_neighbors=5)\n", + "knn_model.fit(X_train_scaled, y_train)\n", + "y_pred = model.predict(X_test_scaled) # use scaled test data\n", + "print(classification_report(y_test, y_pred))\n", + "print(\"Accuracy:\", accuracy_score(y_test, y_pred))" + ] + }, + { + "cell_type": "markdown", + "id": "bae34d30", + "metadata": {}, + "source": [ + "Support Vector Classification" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "58453370", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/lib/python3/dist-packages/sklearn/base.py:493: UserWarning: X does not have valid feature names, but SVC was fitted with feature names\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " g 0.65 0.93 0.77 2460\n", + " h 0.40 0.08 0.14 1344\n", + "\n", + " accuracy 0.63 3804\n", + " macro avg 0.53 0.51 0.45 3804\n", + "weighted avg 0.56 0.63 0.55 3804\n", + "\n" + ] + } + ], + "source": [ + "model = SVC(kernel='linear')\n", + "model.fit(X_train, y_train)\n", + "y_pred = model.predict(X_test_scaled) # use scaled test data\n", + "print(classification_report(y_test, y_pred))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}