Saving prediction results to CSV

前端 未结 3 1791
遥遥无期
遥遥无期 2020-12-08 17:02

I am storing the results from a sklearn regression model to the varibla prediction.

prediction = regressor.predict(data[[\'X\']])
print(prediction)


        
相关标签:
3条回答
  • 2020-12-08 17:06

    It is a very detailed solution cases like those but you can use it even in production.

    First Save the Model

    joblib.dump(regressor, "regressor.sav")
    

    Save columns in order

    pd.DataFrame(X_train.columns).to_csv("feature_list.csv", index = None)
    

    Save data types of train set

    pd.DataFrame(X_train.dtypes).reset_index().to_csv("data_types.csv", index = None)
    

    Using it again:

    feature_list = pd.read_csv("feature_list.csv")
    feature_list = pd.Index(list(feature_list["0"]))
    
    add_cols = list(feature_list.difference(X_test.columns))
    
    drop_cols = list(X_test.columns.difference(feature_list))
    
    for col in add_cols:
        X_test[col] = np.nan
    
    for col in drop_cols:
        X_test = X_test.drop(col, axis = 1)
    
    # reorder columns
    X_test = X_test[feature_list]
    
    types = pd.read_csv("data_types.csv")
    for i in range(len(types)):
        X_test[types.iloc[i,0]] = X_test[types.iloc[i,0]].astype(types.iloc[i,1])
    

    Make Predictions

    regressor = joblib.load("regressor.sav")
    predictions = regressor.predict(X_test)
    

    Save Prediction Results

    res = pd.DataFrame(predictions)
    res.index = X_test.index # its important for comparison
    res.columns = ["prediction"]
    res.to_csv("prediction_results.csv")
    

    Enjoy end to end model/prediction saver code!

    0 讨论(0)
  • 2020-12-08 17:09

    You can use the numpy.savetxt function:

    numpy.savetxt('C:/localpath/test.csv',prediction, ,delimiter=',')
    

    and to load a CSV file you can use numpy.genfromtxt function:

    numpy.genfromtxt('C:/localpath/test.csv', delimiter=',')
    
    0 讨论(0)
  • 2020-12-08 17:30

    You can use pandas. As it's said, numpy arrays don't have a to_csv function.

    import numpy as np
    import pandas as pd
    prediction = pd.DataFrame(predictions, columns=['predictions']).to_csv('prediction.csv')
    

    add ".T" if you want either your values in line or column-like.

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