【问题标题】:AttributeError: 'str' object has no attribute 'fit' - PysparkAttributeError:“str”对象没有属性“fit”-Pyspark
【发布时间】:2019-07-11 01:41:34
【问题描述】:

我正在尝试在 PySpark3 中运行以下脚本并收到以下错误消息。我正在使用这与格式化有关,但我不知道如何去做。任何帮助将非常感激。

train,test = df.randomSplit([0.7,0.3])

models = ["LinearRegression()","DecisionTreeRegressor()","RandomForestRegressor()","GBTRegressor()"]

for model in models:

    # Fit our model
    M = model
    fitModel = M.fit(train)

    # Load the Summary
    trainingSummary = fitModel.summary

#     trainingSummary.residuals.show()
    print("Training RMSE: %f" % trainingSummary.rootMeanSquaredError)
    print("Training r2: %f" % trainingSummary.r2)

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-15-d0b941a7170e> in <module>()
      8     # Fit our model
      9     M = model
---> 10     fitModel = M.fit(train)
     11 
     12     # Load the Summary

AttributeError: 'str' object has no attribute 'fit'

【问题讨论】:

    标签: python-3.x pyspark


    【解决方案1】:

    你必须修改你的模型

    models = [LinearRegression, DecisionTreeRegressor, RandomForestRegressor, GBTRegressor]
    

    由于您当前的定义,它们绝对是一个字符串。更好的方法是在列表中添加模块并在每个循环中实例化它。

    重要的是models = ["LinearRegression()"]里面的元素是String,而不是没有任何方法的对象。

    【讨论】:

    • 恐怕我不完全了解您的解决方案 Duy。可以扩展一下吗?
    • 所以很遗憾这种方法行不通。我使用此方法收到以下错误:“NameError: name 'LinearRegression' is not defined”在创建模型列表的第 3 行。
    【解决方案2】:

    我觉得这种方式其实效率更高....

    这样您仍然可以遍历列表。

    def ClassTrainEval(model):
    
        fitModel = model.fit(train)
    
        # Load the Summary
        trainingSummary = fitModel.summary
    
        print("Training RMSE: %f" % trainingSummary.rootMeanSquaredError)
        print("Training r2: %f" % trainingSummary.r2)
    
    models = [LogisticRegression(),NaiveBayes(),OneVsRest(),LinearSVC()] 
    
    for model in models:
        ClassTrainEval(classifier)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-10
      • 2021-10-04
      相关资源
      最近更新 更多