【问题标题】:Saving prediction results to CSV将预测结果保存到 CSV
【发布时间】:2016-04-24 05:05:52
【问题描述】:

我将 sklearn 回归模型的结果存储到变量预测中。

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

预测输出的值如下所示

[ 266.77832991  201.06347505  446.00066136  499.76736079  295.15519906
  214.50514991  422.1043505   531.13126879  287.68760191  201.06347505
  402.68859792  478.85808879  286.19408248  192.10235848]

然后我尝试使用 to_csv 函数将结果保存到本地 CSV 文件:

prediction.to_csv('C:/localpath/test.csv')

但我得到的错误是:

AttributeError: 'numpy.ndarray' object has no attribute 'to_csv'

我正在使用 Pandas/Numpy/SKlearn。关于基本修复的任何想法?

【问题讨论】:

    标签: python numpy pandas scikit-learn


    【解决方案1】:

    您可以使用熊猫。 据说,numpy 数组没有 to_csv 函数。

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

    如果您希望您的值在行或列中,请添加“.T”。

    【讨论】:

    • 如果我想与来自X_test 的唯一标识符(“id”列,而不是索引)合并,预测结果会正确匹配每一行吗?如:output=pd.DataFrame(data={"id":X_test["id"],"Prediction":y_pred})output.to_csv(path_or_buf="..\\output\\results.csv",index=False,quoting=3,sep=';')
    • 如果 X_test 与 y_pred 的长度相同,则答案是肯定的。
    【解决方案2】:

    你可以使用numpy.savetxt函数:

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

    要加载 CSV 文件,您可以使用 numpy.genfromtxt 函数:

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

    【讨论】:

    • 我在加载后重塑了我的数据,即:“pred_train = np.genfromtxt('encoded1.csv', delimiter=" ").reshape(-1, 1)", 是不是有如何保存和加载数据而不考虑重塑数据?
    【解决方案3】:

    这是一个非常详细的解决方案案例,但您甚至可以在生产中使用它。

    首先保存模型

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

    按顺序保存列

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

    保存训练集的数据类型

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

    再次使用:

    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])
    

    做出预测

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

    保存预测结果

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

    享受端到端模型/预测保护程序代码!

    【讨论】:

      猜你喜欢
      • 2019-06-21
      • 1970-01-01
      • 2019-06-19
      • 2019-03-25
      • 1970-01-01
      • 1970-01-01
      • 2014-01-25
      • 2014-02-20
      • 2011-03-21
      相关资源
      最近更新 更多