1 回答
TA贡献1831条经验 获得超10个赞
转换器需要一个形状为 (nxm) 的二维数组,其中 n 是样本数,m 是特征数,如果您查看features我想象的形状,它将显示:(m,).
重塑数组
一般来说,对于 shape 的特征数组(n,),您可以按照错误代码的建议进行操作并调用.reshape(-1,1)您的特征数组,-1 让它推断出额外的维度:数组的形状将为(n,m),其中对于 1 个特征案例m = 1。
Sklearn 转换器
综上所述,我认为您的代码和理解还有其他错误。
我将打印features屏幕,并检查它是你想要的,它看起来像要打印列表,除了所有的列名sale_price。我不熟悉SelectKBest但它需要一个(n,m)特征数组而不是特征的列名列表。
此外,target不应是目标列的名称,而是一个 shape 数组(n,),其值是训练实例的观察目标值。
我建议您在编写代码时检查文档(以前参考过),以确保使用正确的参数并按预期使用函数。
提取特征
您的数据似乎采用奇怪的格式(字典嵌套在熊猫 DF 中)。然而,这是一个明确的例子,说明我如何pd.DataFrame从 SKlearn 框架中的函数中提取特征。
housing_data = pd.DataFrame({'age': [1,5,1,10], 'size':[0,1,2,0],
'price':[190,100,50,100]
})
feature_arr = housing_data.drop('price', axis=1).values
target_values = housing_data['price']
打印feature_arr,你会希望看到你的问题。通常,您必须对数据进行预处理,例如删除 NaN 值或执行特征缩放。
添加回答
举报