Low score in Linear Regression with discrete attributes












0














I'm trying to do a linear regression in my dataframe. The dataframe is about apple applications, and I want to predict the notes of applications. The notes are in following format:



1.0
1.5
2.0
2.5
...
5.0


My code is:



atributos = ['size_bytes','price','rating_count_tot','cont_rating','sup_devices_num','num_screenshots','num_lang','vpp_lic']
atrib_prev = ['nota']

X = np.array(data_regress.drop(['nota'],1))
y = np.array(data_regress['nota'])

X = preprocessing.scale(X)

X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.2)

clf = LinearRegression()
clf.fit(X_train, y_train)

accuracy = clf.score(X_test, y_test)

print(accuracy)


But my accuracy is 0.046295306696438665. I think this occurs because the linear model is predicting real values, while my 'note' is real, but at intervals. I don't know how to round this values before the clf.score.










share|improve this question





























    0














    I'm trying to do a linear regression in my dataframe. The dataframe is about apple applications, and I want to predict the notes of applications. The notes are in following format:



    1.0
    1.5
    2.0
    2.5
    ...
    5.0


    My code is:



    atributos = ['size_bytes','price','rating_count_tot','cont_rating','sup_devices_num','num_screenshots','num_lang','vpp_lic']
    atrib_prev = ['nota']

    X = np.array(data_regress.drop(['nota'],1))
    y = np.array(data_regress['nota'])

    X = preprocessing.scale(X)

    X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.2)

    clf = LinearRegression()
    clf.fit(X_train, y_train)

    accuracy = clf.score(X_test, y_test)

    print(accuracy)


    But my accuracy is 0.046295306696438665. I think this occurs because the linear model is predicting real values, while my 'note' is real, but at intervals. I don't know how to round this values before the clf.score.










    share|improve this question



























      0












      0








      0







      I'm trying to do a linear regression in my dataframe. The dataframe is about apple applications, and I want to predict the notes of applications. The notes are in following format:



      1.0
      1.5
      2.0
      2.5
      ...
      5.0


      My code is:



      atributos = ['size_bytes','price','rating_count_tot','cont_rating','sup_devices_num','num_screenshots','num_lang','vpp_lic']
      atrib_prev = ['nota']

      X = np.array(data_regress.drop(['nota'],1))
      y = np.array(data_regress['nota'])

      X = preprocessing.scale(X)

      X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.2)

      clf = LinearRegression()
      clf.fit(X_train, y_train)

      accuracy = clf.score(X_test, y_test)

      print(accuracy)


      But my accuracy is 0.046295306696438665. I think this occurs because the linear model is predicting real values, while my 'note' is real, but at intervals. I don't know how to round this values before the clf.score.










      share|improve this question















      I'm trying to do a linear regression in my dataframe. The dataframe is about apple applications, and I want to predict the notes of applications. The notes are in following format:



      1.0
      1.5
      2.0
      2.5
      ...
      5.0


      My code is:



      atributos = ['size_bytes','price','rating_count_tot','cont_rating','sup_devices_num','num_screenshots','num_lang','vpp_lic']
      atrib_prev = ['nota']

      X = np.array(data_regress.drop(['nota'],1))
      y = np.array(data_regress['nota'])

      X = preprocessing.scale(X)

      X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.2)

      clf = LinearRegression()
      clf.fit(X_train, y_train)

      accuracy = clf.score(X_test, y_test)

      print(accuracy)


      But my accuracy is 0.046295306696438665. I think this occurs because the linear model is predicting real values, while my 'note' is real, but at intervals. I don't know how to round this values before the clf.score.







      pandas jupyter-notebook sklearn-pandas






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 14 '18 at 12:56









      Aqueous Carlos

      293213




      293213










      asked Nov 13 '18 at 0:10









      Giovanni BrogiatoGiovanni Brogiato

      1




      1
























          1 Answer
          1






          active

          oldest

          votes


















          0














          First, for regression models, clf.score() calculates R-squared value, not accuracy. So you would need to decide if you want to treat this problem as a classification problem (For some fixed number of target labels) or a regression problem (for a real-valued target)



          Secondly, if you insist on using regression models and not classification, you can call clf.predict() to first get the predicted values and then round off as you want to, and then call r2_score() on actual and predicted labels. Something like:



          # Get actual predictions
          y_pred = clf.predict(X_test)

          # You will need to implement the round function yourself
          y_pred_rounded = round(y_pred)

          # Call the appropriate scorer
          score = r2_score(y_test, y_pred_rounded)


          You can look at the sklearn documentation here for available metrics in sklearn.






          share|improve this answer





















            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53271929%2flow-score-in-linear-regression-with-discrete-attributes%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            First, for regression models, clf.score() calculates R-squared value, not accuracy. So you would need to decide if you want to treat this problem as a classification problem (For some fixed number of target labels) or a regression problem (for a real-valued target)



            Secondly, if you insist on using regression models and not classification, you can call clf.predict() to first get the predicted values and then round off as you want to, and then call r2_score() on actual and predicted labels. Something like:



            # Get actual predictions
            y_pred = clf.predict(X_test)

            # You will need to implement the round function yourself
            y_pred_rounded = round(y_pred)

            # Call the appropriate scorer
            score = r2_score(y_test, y_pred_rounded)


            You can look at the sklearn documentation here for available metrics in sklearn.






            share|improve this answer


























              0














              First, for regression models, clf.score() calculates R-squared value, not accuracy. So you would need to decide if you want to treat this problem as a classification problem (For some fixed number of target labels) or a regression problem (for a real-valued target)



              Secondly, if you insist on using regression models and not classification, you can call clf.predict() to first get the predicted values and then round off as you want to, and then call r2_score() on actual and predicted labels. Something like:



              # Get actual predictions
              y_pred = clf.predict(X_test)

              # You will need to implement the round function yourself
              y_pred_rounded = round(y_pred)

              # Call the appropriate scorer
              score = r2_score(y_test, y_pred_rounded)


              You can look at the sklearn documentation here for available metrics in sklearn.






              share|improve this answer
























                0












                0








                0






                First, for regression models, clf.score() calculates R-squared value, not accuracy. So you would need to decide if you want to treat this problem as a classification problem (For some fixed number of target labels) or a regression problem (for a real-valued target)



                Secondly, if you insist on using regression models and not classification, you can call clf.predict() to first get the predicted values and then round off as you want to, and then call r2_score() on actual and predicted labels. Something like:



                # Get actual predictions
                y_pred = clf.predict(X_test)

                # You will need to implement the round function yourself
                y_pred_rounded = round(y_pred)

                # Call the appropriate scorer
                score = r2_score(y_test, y_pred_rounded)


                You can look at the sklearn documentation here for available metrics in sklearn.






                share|improve this answer












                First, for regression models, clf.score() calculates R-squared value, not accuracy. So you would need to decide if you want to treat this problem as a classification problem (For some fixed number of target labels) or a regression problem (for a real-valued target)



                Secondly, if you insist on using regression models and not classification, you can call clf.predict() to first get the predicted values and then round off as you want to, and then call r2_score() on actual and predicted labels. Something like:



                # Get actual predictions
                y_pred = clf.predict(X_test)

                # You will need to implement the round function yourself
                y_pred_rounded = round(y_pred)

                # Call the appropriate scorer
                score = r2_score(y_test, y_pred_rounded)


                You can look at the sklearn documentation here for available metrics in sklearn.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 14 '18 at 14:25









                Vivek KumarVivek Kumar

                15.5k41953




                15.5k41953






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.





                    Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                    Please pay close attention to the following guidance:


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53271929%2flow-score-in-linear-regression-with-discrete-attributes%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    這個網誌中的熱門文章

                    Xamarin.form Move up view when keyboard appear

                    Post-Redirect-Get with Spring WebFlux and Thymeleaf

                    Anylogic : not able to use stopDelay()