Python 为什么函数返回不同格式和顺序的结果

Python 为什么函数返回不同格式和顺序的结果,python,pandas,scikit-learn,Python,Pandas,Scikit Learn,这段代码运行良好,值得期待。拟合、预测和计算损失函数: features = set(df_train_cat.columns) features.remove('SalePrice') features.remove('Id') X_train_cat = df_train_cat[features].values y_train_cat = df_train_cat.SalePrice.values X_train, X_val, y_tr

这段代码运行良好,值得期待。拟合、预测和计算损失函数:

    features = set(df_train_cat.columns)
    features.remove('SalePrice')
    features.remove('Id')

    X_train_cat = df_train_cat[features].values
    y_train_cat = df_train_cat.SalePrice.values

    X_train, X_val, y_train, y_val = train_test_split( X_train_cat, y_train_cat, test_size=0.33,                         random_state=17)


    regression = linear_model.Ridge(alpha=.5, random_state = 17)
    regression.fit(X_train,y_train)
    predictions = regression.predict(X_val)

    rmse = (mean_squared_error(y_val, predictions))**(1/2)

    mae = mean_absolute_error(y_val, predictions)

    print('RMSE on run = {}, MAE = {}'.format(rmse, mae))
    -------------------------------------------------------
    in returns: 
    RMSE on run = 27696.648368899852, MAE = 17553.925337213957
但当我尝试将其封装到函数中时,结果是不同的:

def regress_without_uncorrelated(delete_feture_list, data):
    features = set(data.columns)

    delete_feture_list = delete_feture_list + ['SalePrice', 'Id']
    if len(delete_feture_list) > 2:
        features.remove(set(delete_feture_list))


    X = data[features].values
    y = data.SalePrice.values

    X_train, X_val, y_train, y_val = train_test_split( X, y, test_size=0.33, random_state=17)

    regression = linear_model.Ridge(alpha=.5, random_state = 17)
    regression.fit(X_train,y_train)
    predictions = regression.predict(X_val)


    rmse = (mean_squared_error(y_val, predictions))**(1/2)
    mae = mean_absolute_error(y_val, predictions)
    print('rmse = {}, mae = {}'.format(rmse,  mae))
    return rmse, mae
    -------------------------------------
    result is:         
    rmse = 2.760396036595275e-08, mae = 1.7484699770097167e-08
问题:

  • 为什么结果返回e?如何使它像在第一个街区
  • 为什么在固定随机_状态下,相同数据的损失顺序会发生变化

  • 问题出在set.remove()方法中,该方法不适用于iterable