You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python报错SyntaxError: can't assign to operator及特征空值填充咨询

报错解决方案

你遇到的语法错误是Python变量命名规则不合法导致的:Python变量名仅允许包含字母、数字、下划线,且不能以数字开头,不能包含/这类运算符。你的代码中missing_/sqft_X_train、missing_/sqft_y_train、missing_/sqft_X_test三个变量名包含/,解释器会将/识别为除法运算符,因此抛出can't assign to operator错误。

你只需要将变量名中的/替换为下划线等合法字符即可,同时你查找空值索引的逻辑可以用pandas内置方法优化,修正后的代码参考:

# 优化空值索引查找,无需循环
missing_idx = data2[data2['Rupee/sq.ft'].isna()].index
non_missing_idx = data2[~data2['Rupee/sq.ft'].isna()].index

# 独立特征
missing_sqft_X_train = np.array([ 
    [data2['Bedrooms'][i],data2['Bathrooms'][i],data2['Condtion'][i],data2['Purchase Type'][i],data2['Real Estate Regulation Act'][i] ] 
    for i in non_missing_idx 
])

# 目标特征,如果你仅需要填充Rupee/sq.ft,这里可以只保留该列即可
missing_sqft_y_train = np.array([ 
    [data2['Rupee/sq.ft'][i],data2['Price (Lakhs)'][i],data2['Area'][i] ]
    for i in non_missing_idx
])

missing_sqft_X_test = np.array([ 
    [data2['Bedrooms'][i],data2['Bathrooms'][i],data2['Condtion'][i],data2['Purchase Type'][i],data2['Real Estate Regulation Act'][i] ] 
    for i in missing_idx 
])
特征依赖型空值的其他填充方法

当空值特征和其他特征存在明显依赖关系时,除了你用到的基于分类/回归模型预测填充的方案,还有以下常用的合适方案:

  • 分组统计填充:先按和目标特征相关性最高的分类特征分组,用分组内的均值、中位数、众数填充空值,比如按户型、所在区域分组后用同组的单位房价均值填充空值,精度远高于全局统计值填充。
  • K近邻填充(KNN Imputer):计算特征空间中距离空值样本最近的K个非空样本,用这K个样本的目标特征均值/众数填充空值,无需提前训练模型,适合小样本、特征相关性高的场景。
  • 多重插补(MICE):通过多轮迭代对每个存在缺失的特征分别基于其他特征建模填充,会考虑缺失值的不确定性,可输出多组填充结果供后续模型验证,是工业界处理相关缺失值的主流方案之一。
  • 树模型预测填充:用随机森林、XGBoost、LightGBM等树模型拟合非空样本的特征关系,树模型天然支持处理离散特征、非线性关系,拟合精度通常高于线性的SGD模型。

内容的提问来源于stack exchange,提问作者Akhil Sahukaru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 16:06:03