How to implement Logistic Regression from scratch with Python

Поделиться
HTML-код
  • Опубликовано: 13 сен 2022
  • In the third lesson of the Machine Learning from Scratch course, we will learn how to implement the Logistic Regression algorithm. It is quite similar to the Linear Regression implementation, just with an extra twist at the end.
    You can find the code here: github.com/AssemblyAI-Example...
    Previous lesson: • How to implement Linea...
    Next lesson: • How to implement Decis...
    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: ruclips.net/user/AssemblyAI?...
    🔥 We're hiring! Check our open roles: www.assemblyai.com/careers
    ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
    #MachineLearning #DeepLearning

Комментарии • 89

  • @sreehari.s6515
    @sreehari.s6515 Год назад +2

    went through when I first started video editing, now it's taking a whole new switch and learning soft will only boost my courage for the

  • @DanielRamBeats
    @DanielRamBeats 9 месяцев назад

    Thanks for sharing this, I am doing something similar in JavaScript. The part about calculating the gradients for backpropagation is very helpful!

  • @josiahtettey6315
    @josiahtettey6315 Год назад +9

    Best concise video on logistic regression I have seen so far

    • @AssemblyAI
      @AssemblyAI  Год назад +1

      That's great to hear, thanks Josiah!

  • @carloquinto9736
    @carloquinto9736 Год назад +1

    Great work! Thank you :)

  • @jaredwilliam7306
    @jaredwilliam7306 Год назад +7

    This was a great video, will there be one in the future that covers how to do this for multiple classes?

  • @sarvariabhinav
    @sarvariabhinav 2 месяца назад +1

    def sigmoid(x):
    x = np.clip(x, -500, 500)
    return (1/(1+np.exp(-x)))
    To avoid overflow runtime error as the return statement can reach large values

  • @ronakverma7070
    @ronakverma7070 Год назад +1

    Great work from @AssemblyAI 👍✨thank you from India.

  • @CarlosRedman3
    @CarlosRedman3 11 месяцев назад

    Love it. Keep up the good work

  • @purplefan204
    @purplefan204 Год назад

    Excellent video. Thanks.

  • @igorkuivjogifernandes3012
    @igorkuivjogifernandes3012 4 месяца назад

    Very good! Thanks for your videos!

  • @salonigandhi4807
    @salonigandhi4807 Год назад +7

    how is the derivative of loss function w.r.t weights same for cross entropy loss and MSE loss ?

  • @rizzbod
    @rizzbod Год назад +2

    Wow , what a great video, very helpful

  • @ricardoprietoalvarez1825
    @ricardoprietoalvarez1825 Год назад +19

    Great video, but my only dubt comes when J'() is calculated as the derivate of MSE and not as the derivate of the Cross Entropy, which is the loss function that we are using

    • @rbk5812
      @rbk5812 Год назад +1

      Found the answer yet? Please let us know if you do!

    • @GeorgeZoto
      @GeorgeZoto Год назад +1

      That's what I noticed too.

    • @zahraaskarzadeh5618
      @zahraaskarzadeh5618 Год назад

      Derivation of Cross Entropy looks like derivation of MSE but y^ is calculated differently.

    • @upranayak
      @upranayak 11 месяцев назад

      log loss

    • @HamidNourashraf
      @HamidNourashraf 8 месяцев назад

      We should start with Maximum Likelihood. Take the log. Then take derivative with respect to B (or W). Not sure how she took derivative. I guess she used MSE for classification problem instead of using Binary Cross Entropy. 🤔. Log L(B) = Sigma_{i=1}{N}((y_i*B*X_i - log(1 + exp(B*X_)).

  • @prodipsarker7884
    @prodipsarker7884 9 месяцев назад

    Studying CSE in GUB from Bangladesh , Love the way you teach the explanation & everything ; )

  • @luis96xd
    @luis96xd Год назад +3

    Amazing video, I'm liking so much this free course, I'm learning a lot, thanks! 😁💯😊🤗

  • @OmarAmil
    @OmarAmil Год назад +2

    need more algorithms , you are the best

  • @Shubham_IITR
    @Shubham_IITR Год назад +2

    AWESOME EXPLANATION THANKS A LOT !!

  • @prigithjoseph7018
    @prigithjoseph7018 Год назад

    I have a question, why can't you include accuracy function in class module?

  • @OmarKhaled-dw7oi
    @OmarKhaled-dw7oi Год назад

    Awesome work, also, great English !

  • @akhan344
    @akhan344 9 месяцев назад

    superb video! I am saying that because coding from scratch is important for me.

  • @sagarlokare5269
    @sagarlokare5269 Год назад

    What if you have categorical data? Like if different scale

  • @karimshow777
    @karimshow777 Год назад +2

    We should maximize likelihood or minimize minus likelihood, I think the cost function is missing a minus , Am i right ?

  • @mayankkathane553
    @mayankkathane553 10 месяцев назад

    why you have not used summation for dw for calculating error

  • @1000marcelo1000
    @1000marcelo1000 Год назад

    Amazing video!
    Can you add the plot of it?

  • @dasjoyabrata1990
    @dasjoyabrata1990 Год назад +1

    love your code 👍

  • @am0x01
    @am0x01 10 месяцев назад

    Hello @AssemblyAI, where can I find the slides?

  • @MrBellrick
    @MrBellrick 3 месяца назад

    with the partial derivatives, where did the multiple 2 go?

  • @lamluuuc9384
    @lamluuuc9384 11 месяцев назад +3

    The same 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
    It does not affect too much, but we follow the slide to not be confusing

    • @LouisDuran
      @LouisDuran 10 месяцев назад

      I noticed this as well. But adding in those *2 reduced the accuracy of my predictor from 92.98% to 88.59%

    • @armaanzshaikh1958
      @armaanzshaikh1958 Месяц назад +1

      But in bias why we are not using mean coz the formula says summation then it has 1/N too ?

  • @abdulazizibrahim2032
    @abdulazizibrahim2032 Год назад

    Please I want to build a personality assessment through cv analysis using this model, could you please help me?

  • @emanuelebernacchi4352
    @emanuelebernacchi4352 Год назад +1

    When you write the dw and db, shouldn't be (2 / n_samples)? There is the 2 in the derivative that you can take outside of the summation

    • @hitstar_official
      @hitstar_official 6 месяцев назад

      That's what I am thinking from previous video

  • @ffXDevon33
    @ffXDevon33 Год назад

    Is there a way to visualize this?

  • @nooneknows6274
    @nooneknows6274 Год назад

    Does this use regularization?

  • @khaledsrrr
    @khaledsrrr 11 месяцев назад

    Thanks 🙏 ❤

  • @LouisDuran
    @LouisDuran 10 месяцев назад +1

    I have seen other videos where people use a ReLU function instead of sigmoid. Would this logistic regression algorithm be an appropriate place to use ReLU instead of Sigmoid? If not, why not?

    • @mertsukrupehlivan
      @mertsukrupehlivan 10 месяцев назад +2

      Logistic regression typically uses the sigmoid activation function because it provides a probability interpretation and is mathematically suited for binary classification. ReLU is more commonly used in deep neural networks with hidden layers, not in logistic regression.

  • @pythoncoding9227
    @pythoncoding9227 Год назад

    Hi, does an increase in sample size increase the prediction accuracy?

    • @robzeng8691
      @robzeng8691 Год назад

      Look for statquest's Logistic regression playlist.

  • @justcodeitbro1312
    @justcodeitbro1312 Год назад

    wow you are an amazing teacher thanks alot god l love youtube !!!!!

  • @sagarlokare5269
    @sagarlokare5269 Год назад

    Relevant feature selection not shown

  • @md.alamintalukder3261
    @md.alamintalukder3261 Год назад

    You are superb

  • @anatoliyzavdoveev4252
    @anatoliyzavdoveev4252 9 месяцев назад

    Super 👏👏

  • @ayhanardal
    @ayhanardal 2 месяца назад

    how can find presentation file.

  • @subzero4579
    @subzero4579 11 месяцев назад

    Amazing

  • @nishchaybn1654
    @nishchaybn1654 Год назад

    Can we make this work for multiclass classification?

    • @nehamarne356
      @nehamarne356 Год назад

      yes you can use logistic regression for problems like digit recognition as well

  •  Год назад +2

    7:51 Why you didn't multiplied by 2 the derivatives?

    • @stanvanillo9831
      @stanvanillo9831 5 месяцев назад +1

      Technically you would have to but in the end it does not make a difference, you only effectively half your learning rate if you don't multiply by two.

    • @armaanzshaikh1958
      @armaanzshaikh1958 Месяц назад

      Same question arises for me too why it wasnt multiplied by 2 and for bias it took sum instead of mean ?

  • @luisdiego4355
    @luisdiego4355 Год назад

    Can it be used to predict house prices?

  • @qammaruzzamman9621
    @qammaruzzamman9621 Год назад

    My accuracy came to be around 40, even after tweaking with n_iters, lr couple of times, is that okay ?

    • @prateekcaire4193
      @prateekcaire4193 5 месяцев назад

      same

    • @prateekcaire4193
      @prateekcaire4193 5 месяцев назад

      I think we made the same stupid mistake where we did not loop through for n_iters. for _ in range(self.n_iters):. silly me

  • @tiwaritejaswo
    @tiwaritejaswo Год назад +1

    Why doesn't this algorithm work on the Diabetes dataset? I'm getting an accuracy of 0

  • @xhtml-xe7zg
    @xhtml-xe7zg 9 месяцев назад

    wish one day i will be in this level of coding

  • @mohammadnaweedmohammadi5936
    @mohammadnaweedmohammadi5936 8 месяцев назад

    I didn't know exactly why you imported Matplot Library

  • @noname-anonymous-v7c
    @noname-anonymous-v7c 6 месяцев назад

    7:09 The gradient should not have the coefficient 2 . 7:43 linear_pred there should be a minus sign before np.dot.

    • @noname-anonymous-v7c
      @noname-anonymous-v7c 6 месяцев назад

      The above mentioned issue does not have much effect on the predicting result though.

  • @gajendrasinghdhaked
    @gajendrasinghdhaked 8 месяцев назад

    make for multiclass also

  • @md.alamintalukder3261
    @md.alamintalukder3261 Год назад

    Like it most

  • @compilation_exe3821
    @compilation_exe3821 Год назад

    NICEEE ♥💙💙💚💚

  • @user-qo1xg5oq7e
    @user-qo1xg5oq7e 8 месяцев назад

    تو عالی هستی❤

  • @atenohin
    @atenohin 2 месяца назад

    But why are we using numpy here it's supposed to be from scratch

  • @moonlight-td8ed
    @moonlight-td8ed 9 месяцев назад

    A M A Z I N G

  • @WilliamDye-willdye
    @WilliamDye-willdye Год назад +2

    I haven't used enough Python yet to accept the soul-crushing inevitability that there's going to be "self." everywhere. I guess you could call it "self." hatred. Maybe ligatures could come to the rescue, replacing every instance with a small symbol. While we're at it, put in ligatures for double underscores and "numpy." (or in the case of this video, "np.").
    Yes, it's an aesthetic rant that is ultimately not a big deal, but gradient descent is a beautifully simple concept. The presenter does a great job of matching that simplicity with clean, easy to follow code. Maybe it's not such a bad thing to be irritated at the parts of her code which are inelegant only because the language doesn't give her better options.

  • @Semih-nd3sq
    @Semih-nd3sq Месяц назад

    Where is the backward propagation? In conclusion logistic regression is also a neural network

  • @mohammedamirjaved8418
    @mohammedamirjaved8418 Год назад

    ♥♥♥♥♥

  • @waisyousofi9139
    @waisyousofi9139 Год назад

    -1/N

  • @dang2395
    @dang2395 Год назад +2

    What is this witchcraft? I thought ML was supposed to be too hard to know wth is going on!

  • @Lucianull31
    @Lucianull31 Год назад +1

    Amazing video but you're going over too fast

    • @AssemblyAI
      @AssemblyAI  Год назад

      Thanks for the feedback Lucian!

  • @krrsh
    @krrsh 7 месяцев назад

    In predict(), is it X.T or just X for the linear_pred dot product?

  • @hoseinhabibi2385
    @hoseinhabibi2385 15 дней назад

    i got 0.94 accuracy with below code:
    import numpy as np
    from sklearn.model_selection import train_test_split
    from sklearn import datasets
    import matplotlib.pyplot as plt
    from sklearn.linear_model import LogisticRegression
    bc = datasets.load_breast_cancer()
    X, y = bc.data, bc.target
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1234)
    clf = LogisticRegression(penalty='l2',max_iter=10000)
    clf.fit(X_train,y_train)
    y_pred = clf.predict(X_test)
    def accuracy(y_pred, y_test):
    return np.sum(y_pred==y_test)/len(y_test)
    acc = accuracy(y_pred, y_test)
    print(acc)