How to implement Linear Regression from scratch with Python

Sdílet
Vložit
  • čas přidán 12. 09. 2022
  • In the second lesson of the Machine Learning from Scratch course, we will learn how to implement the Linear Regression algorithm.
    You can find the code here: github.com/AssemblyAI-Example...
    Previous lesson: • How to implement KNN f...
    Next lesson: • How to implement Logis...
    Welcome to the Machine Learning from Scratch course by AssemblyAI.
    Thanks to libraries like Scikit-learn we can use most ML algorithms with a couple of lines of code. But knowing how these algorithms work inside is very important. Implementing them hands-on is a great way to achieve this.
    And mostly, they are easier than you’d think to implement.
    In this course, we will learn how to implement these 10 algorithms.
    We will quickly go through how the algorithms work and then implement them in Python using the help of NumPy.
    ▬▬▬▬▬▬▬▬▬▬▬▬ CONNECT ▬▬▬▬▬▬▬▬▬▬▬▬
    🖥️ Website: www.assemblyai.com/?...
    🐦 Twitter: / assemblyai
    🦾 Discord: / discord
    ▶️ Subscribe: czcams.com/users/AssemblyAI?...
    🔥 We're hiring! Check our open roles: www.assemblyai.com/careers
    ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
    #MachineLearning #DeepLearning

Komentáře • 72

  • @MU_2000
    @MU_2000 Před 25 dny +1

    Thank you for this video. Before i wached it i spend a couple of day to understand how to make custome code without frameworks ))

  • @Artificial_Intelligence_AI

    This channel is amazing ❤. This is the type of content a lot of instructors forget to teach you when you’re learning ML but this girl explains everything very well from scratch. Congratulations for your content and I hope to watch more of your videos, you deserve more views for this incredible job.

  • @markkirby2543
    @markkirby2543 Před 8 měsíci +2

    This is amazing. Thank you so much for all your clear explanations. You really know you stuff, and you make learning this complex material fun and exciting.

  • @afizs
    @afizs Před rokem +6

    I have used Linear Regression many times, but never implemented from scratch. Thanks for an awesome video. Waiting for the next one.

  • @bendirval3612
    @bendirval3612 Před rokem +6

    Wow, that really was from scratch. And the hardest way possible. But it's perfect for teaching python. Thanks!

  • @1000marcelo1000
    @1000marcelo1000 Před rokem +1

    Amazing video! I learned so much from it! Congrats!!!
    Could explain more detailed all of this and show next steps like "where" and "how" this can be implemented further in some scenarios?

  • @ayo4590
    @ayo4590 Před rokem +1

    Thank you so much, this video really helped me get started with understanding machine learning algorithms. I would love if you could do a video on how you would modify the algorithm for multivariate linear regression.

  • @luis96xd
    @luis96xd Před rokem +3

    Amazing video, I liked the code and the explanations, it was easy to read and understand, thanks! 😁👍👏💯

  • @l4dybu9
    @l4dybu9 Před rokem +5

    Thank u so much for this video. 💖💖
    It's makes us feel more confident when we know how to do it drom scratch than using libraries ✨

  • @kreativeworld2073
    @kreativeworld2073 Před rokem

    Thank you so much.
    It really helped me understand the entire concept:)

  • @lamluuuc9384
    @lamluuuc9384 Před 10 měsíci +11

    I think there is a problem of missing the 2 multiplication in calculating dw, db in the .fit() method:
    dw = (1/n_samples) * np.dot(X.T, (y_pred-y)) * 2
    db = (1/n_samples) * np.sum(y_pred-y) * 2
    If we follow the slides, it's not absolutely wrong but it can affect the learning rate

    • @priyanshumsharma4276
      @priyanshumsharma4276 Před 8 měsíci

      No, after derivation, there is no square.

    • @zh7866
      @zh7866 Před 7 měsíci

      The comment suggests multiplication with 2 based on derivation rule NOT square

    • @jhicks2306
      @jhicks2306 Před 4 měsíci

      Agree with this! Also, thanks, Misra, for the awesome video series.

    • @surajsamal4161
      @surajsamal4161 Před 3 měsíci +2

      @@priyanshumsharma4276 he's not talking about the square he's talking about the square which came down cause of derivative

  • @tienshinhan8189
    @tienshinhan8189 Před 5 měsíci

    I rarely bother commenting because I'm rarely impressed. This video was amazing. I love that you're showing theory and OOP. Usually I see basic definitions and code all in one script.

  • @AbuAl7sn1
    @AbuAl7sn1 Před 4 dny

    thanks lady .. that was easy

  • @GeorgeZoto
    @GeorgeZoto Před rokem +4

    Another amazing video! Slight typo in the definition of matrix multiplication and =dw part as well as an omission on the constant 2 (which does not effect calculations much) in the code when you define the gradients but other than that this is beautiful 😃

  • @compilation_exe3821
    @compilation_exe3821 Před rokem +2

    YOU guys are AWWWWESOME

  • @m.bouanane4455
    @m.bouanane4455 Před 5 měsíci +1

    The gradient calculation lacks the multiplication by coefficient 2, I guess.

  • @sajinsanthosh9536
    @sajinsanthosh9536 Před rokem +1

    followed the tutorial exactly right, but still different. Using trial version. Thank you*

  • @alexisadr
    @alexisadr Před rokem

    Thank you!

  • @parthaguha4705
    @parthaguha4705 Před rokem

    Awesome explanation😇

  • @omaramil5103
    @omaramil5103 Před rokem

    Thank you ❤

  • @harry-ce7ub
    @harry-ce7ub Před 4 měsíci +1

    Do you not need to np.sum() the result of np.dot(x, (y_pred-y)) in dw as well as multiply by 2?

  • @srinivasanshanmugam9527
    @srinivasanshanmugam9527 Před 5 měsíci

    Thanks for this video, May I know , why we need to run in a for loop for 1000 iterations?

  • @akifarslan6022
    @akifarslan6022 Před rokem +1

    Güzel video

  • @MahmouudTolba
    @MahmouudTolba Před rokem

    your code is clean

  • @KumR
    @KumR Před 4 měsíci

    Wow... Awesome.. Do you have something like this for Deep learning algo ?

  • @traagshorts4617
    @traagshorts4617 Před rokem

    How did you fit the dimensions for the test and weights in the predict function

  • @LouisDuran
    @LouisDuran Před 3 měsíci

    WHat check could be added in the case that the model is not converging to the best fit within the n_iters value?

  • @user-qo1xg5oq7e
    @user-qo1xg5oq7e Před 7 měsíci

    ادامه بده دختر کارت عالیه ممنون ازت

  • @mohamedsadeksnoussi8479
    @mohamedsadeksnoussi8479 Před rokem +3

    The content is really insightful, but for dw and db, should it be (2/n_samples) instead of (1/n_samples) ?

    • @adarshtiwari7395
      @adarshtiwari7395 Před rokem +2

      did you figure out why she used the equations without 2 in the video?

    • @mohamedsadeksnoussi8479
      @mohamedsadeksnoussi8479 Před rokem +4

      Hi@@adarshtiwari7395, unfortunately no. But (2/n_samples) appears to be correct.
      I checked out other resources and all of them used (2/n_samples).
      You can even try it by yourselves, (1/n_samples) doesn't affect the model behavior (performance), but from my point of view, it's incorrect.

    • @prashantkumar7390
      @prashantkumar7390 Před rokem +1

      @@adarshtiwari7395 It doesn't change our actual optimisation problem, I mean when the mean_square_loss is minimised, any scalar*mean_square_loss will be minimised. Hence using 2 or not doesn't make a difference at all.

    • @mohammedabdulhafeezkhan4633
      @mohammedabdulhafeezkhan4633 Před rokem +1

      @@prashantkumar7390 But it is better to use 2 in the equation, even though it's a constant and doesn't affect the outcome in a major way.

    • @prashantkumar7390
      @prashantkumar7390 Před rokem

      @@mohammedabdulhafeezkhan4633 it doesn't affect the outcome AT ALL.

  • @user-xh2di1kv3f
    @user-xh2di1kv3f Před 8 měsíci

    your explanation is amazing and I see how linear regression works however this only works with 1 feature
    and if you want to implement it with more than one it will fail.

  • @rbodavan8771
    @rbodavan8771 Před rokem +1

    how you designed your video templets is awesome.
    but it would be good for learner if you also post it on kaggle notebook and link it each other. sometimes it's happened to me like best to read then watch. let me know your thought

    • @AssemblyAI
      @AssemblyAI  Před rokem +1

      You can find the code in our github repo. The link is in the description :)

  • @user-do7jv6fk3z
    @user-do7jv6fk3z Před 3 měsíci +1

    I am not sure if you copied this code from Patrick Loeber. He has a youtube video with the same code posted years ago. If you did, please give credit to Patrick.
    This is the name of his video: Linear Regression in Python - Machine Learning From Scratch 02 - Python Tutorial

  • @surendrakakani7014
    @surendrakakani7014 Před 10 měsíci

    I have taken input(200 ,1) while executing above program i am getting y_pred as (200,200) can and geting dw shape as (1,200) but dw should be (1,1) right any body explaing is that correct

  • @user-qo1xg5oq7e
    @user-qo1xg5oq7e Před 7 měsíci

    لطفا ویدیو های بیشتری بسازید

  • @tiagosilva856
    @tiagosilva856 Před rokem +1

    Where did you put the "2" of the mathematical formula in dw and db on phyton?

    • @mgreek31
      @mgreek31 Před rokem

      the 2 is a scaling factor that can be omitted.

    • @tiagosilva856
      @tiagosilva856 Před rokem

      @@mgreek31 ty. I understand. But omitting that don't change the performance? M.S.E still be the same if we don't ommite the "2"?

    • @mgreek31
      @mgreek31 Před rokem

      @@tiagosilva856 MSE will still be the same. intuitively if you multiply the 2 in the formula it scales the x for all values of x, therefore removing it will affect the whole dataset in the same way as if nothing happened

  • @prigithjoseph7018
    @prigithjoseph7018 Před rokem

    Hi can you please upload, presentation file also

  • @gechimmchanel2917
    @gechimmchanel2917 Před rokem +1

    Has anyone encountered the same situation as me when given a larger dataset with about 4 weights and 200 rows, the result predicts -inf or NaN , anyone have a way to fix this??

    • @gechimmchanel2917
      @gechimmchanel2917 Před rokem

      [-inf -inf -inf] -inf
      [-inf -inf -inf] -inf
      [-inf -inf -inf] -inf
      result của weight and bias :))

  • @okefejoseph6825
    @okefejoseph6825 Před měsícem

    Is there a way I can get the slide?

  • @2122345able
    @2122345able Před 5 měsíci

    where is the part where gradient decent is being coded , how the code will know when to stop ?

  • @shivamdubey4783
    @shivamdubey4783 Před rokem

    can you plzz explain why we took x.T transpose

    • @0xmatriksh
      @0xmatriksh Před rokem +2

      It is because we are doing dot product of two matrices here. So we need two matrices to be in the form of mxn and nxp, that means the number of columns in first matrix should be same as the number of rows in second matrix.
      And here,
      Suppose number of rows of X is n(which is same as y)
      But the n is number of rows for both of them so we transpose X to make n in column to match the n of mxn and nxp(like explained above) to successfully dot product them

  • @jinxiong2973
    @jinxiong2973 Před rokem

    how to improve my attention span , I have good ideas and soft that I tNice tutorialnk up , the problem is putting it down in fruit loops and knowing

  • @hiteshmistry413
    @hiteshmistry413 Před rokem

    Thank you very much, You made Linear Regression very easy for me. Here is how the linear regression training looks like in action "czcams.com/video/2QqLl_wpfSo/video.html"

  • @hannukoistinen5329
    @hannukoistinen5329 Před 7 měsíci

    Forget Python!!! It's just fashionable right now. R is much, much better!!!