1 回答

TA贡献1998条经验 获得超6个赞
我认为您在这里做错的是您将 NaN 值传递给算法,处理 NaN 值是预处理数据的主要步骤之一。因此,也许您需要将 NaN 值转换为 0 并预测何时具有 Landsize = 0 (这与逻辑上具有 NaN 值相同,因为 landsize 不能为 0 )。
我认为你做错的另一件事是:
x_train = data[data['Landsize'].notnull()].drop(columns='Landsize')
y_train = data[data['Landsize'].notnull()]['Landsize']
x_test = data[data['Landsize'].isnull()].drop(columns='Landsize')
y_test = data[data['Landsize'].isnull()]['Landsize']
您正在为训练集和测试集分配相同的数据。你也许应该这样做:
X = data[data['Landsize'].notnull()].drop(columns='Landsize')
y = data[data['Landsize'].notnull()]['Landsize']
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
添加回答
举报