python - 为什么函数以不同的格式和顺序返回结果
问题描述
此代码运行良好且可预期。制作拟合、预测和计数损失函数:
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 返回?如何让它像第一个街区一样?
- 为什么在具有固定 random_state 的相同数据处损失顺序会发生变化?
解决方案
问题出在 set.remove() 方法中,该方法不适用于可迭代。
推荐阅读
- javascript - F# 中的 Javascript onclick 替代方案 - 安全
- django - Django/wsgi 没有正确地提供媒体文件
- swiftui - SwiftUI 2 - 将动态纬度和经度附加到地图元素并注释
- sql - 如何找到总工作日或总工作时间?
- linux - 如何使用 bb 文件为 adb 二进制文件提供可执行权限
- sql - 查询以查找表值中的不同行
- node.js - AssertionError [ERR_ASSERTION]:子进程配置错误
- postgis - 如何在 deck.gl 中将超集数据显示为多边形
- python-3.x - IndexError:索引 21 超出轴 1 的范围,大小为 21 和索引问题
- powershell - PowerShell逐行读取csv列和相邻单元格