解决crs_matrix未定义错误:Kaggle入侵检测项目稀疏矩阵问题
问题解决:crs_matrix未定义错误及可用矩阵构建方案
错误原因
你代码中存在拼写错误:scipy.sparse提供的稀疏矩阵类是csr_matrix(Compressed Sparse Row),而非crs_matrix,这是导致name 'crs_matrix' is not defined错误的直接原因。
修正后的代码方案
方案1:直接修正拼写并拼接
你已正确导入csr_matrix和hstack,只需修正拼写即可完成矩阵构建:
X_train_sparse_new = csr_matrix(hstack((X_train_sparse, new_feat_train['year_month_scaled'].values.reshape(-1,1))))
方案2:更高效的稀疏矩阵处理(推荐)
hstack默认返回COO格式稀疏矩阵,而CSR格式在切片、矩阵乘法等操作上效率更高(你的get_auc_lr_valid函数用到了切片逻辑),因此可以显式转换为CSR格式:
# 将密集特征转为稀疏矩阵 new_feat_sparse = csr_matrix(new_feat_train['year_month_scaled'].values.reshape(-1,1)) # 拼接后转为CSR格式 X_train_sparse_new = hstack((X_train_sparse, new_feat_sparse)).tocsr()
可用性验证
修正后的X_train_sparse_new可直接传入get_auc_lr_valid函数:
- scikit-learn的
LogisticRegression原生支持稀疏矩阵输入,无需额外转换 - CSR格式的稀疏矩阵对切片操作(
X[:train_len, :])的处理效率最优,完全匹配函数的计算需求
内容的提问来源于stack exchange,提问作者catauggie
相关产品推荐
相关产品推荐

