ValueError: continuous-multioutput is not supported

前端 未结 2 616
我在风中等你
我在风中等你 2021-01-18 15:39

I want to run several regression types (Lasso, Ridge, ElasticNet and SVR) on a dataset with around 5,000 rows and 6 features. Linear regression. Use GridSearchCV for cross v

相关标签:
2条回答
  • 2021-01-18 16:29

    The end goal is to evaluate the performance of the model, you can use the model.evaluate method:

    _,accuracy = model.evaluate(our_data_feat, new_label2,verbose=0.0)
    print('Accuracy:%.2f'%(accuracy*100))
    

    This will give you the accuracy value.

    0 讨论(0)
  • 2021-01-18 16:38

    First let's replicate the problem.

    First import the libraries needed:

    import numpy as np
    import pandas as pd 
    from sklearn.preprocessing import StandardScaler
    from sklearn.cross_validation import train_test_split
    from sklearn import linear_model
    from sklearn.grid_search import GridSearchCV
    

    Then create some data:

    df = pd.DataFrame(np.random.rand(5000,11))
    y = df.iloc[:,-5:]  # last 5 columns
    X = df.iloc[:,:-5]  # Except for last 5 columns
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.8, random_state=0)
    

    Now we can replicate the error and also see options which do not replicate the error:

    This runs OK

    gs = GridSearchCV(linear_model.Lasso(), {'alpha': [0.95]}, n_jobs= 1, cv=5, verbose=1)
    print gs.fit(X_train, y_train) 
    

    This does not

    gs = GridSearchCV(linear_model.Lasso(), {'alpha': [0.95]}, n_jobs= 1, cv=5, verbose=1, scoring='recall')
    gs.fit(X_train, y_train) 
    

    and indeed the error is exactly as you have above; 'continuous multi-output is not supported'.

    If you think about the recall measure, it is to do with binary or categorical data - about which we can define things like false positives and so on. At least in my replication of your data, I used continuous data and recall simply is not defined. If you use the default score it works, as you can see above.

    So you probably need to look at your predictions and understand why they are continuous (i.e. use a classifier instead of regression). Or use a different score.

    As an aside, if you run the regression with only one set of (column of) y values, you still get an error. This time it says more simply 'continuous output is not supported', i.e. the issue is using recall (or precision) on continuous data (whether or not it is multi-output).

    0 讨论(0)
提交回复
热议问题