训练情感分析逻辑回归模型触发ValueError的解决方法
报错根因
传入逻辑回归模型的特征features是经过基础清洗的原始文本字符串,并非模型要求的数值型特征矩阵。scikit-learn的所有线性模型(包括逻辑回归)仅支持浮点/整数类型的数值输入,因此触发字符串转浮点失败的报错,不需要删除对应文本数据。
修复流程
- 完成文本向量化转换:你目前只做了去停用词、转小写、去标点的基础文本清洗,还缺少最核心的「文本转数值向量」步骤,这是NLP任务训练机器学习模型的必要环节。
可以直接使用scikit-learn内置的TF-IDF工具完成转换,参考代码:from sklearn.feature_extraction.text import TfidfVectorizer # 初始化TF-IDF向量化器 tfidf = TfidfVectorizer() # 传入你预处理好的文本列,输出数值型特征矩阵(默认是csr稀疏格式,节省内存) features = tfidf.fit_transform(preprocessed_text_series) - 执行特征标准化:由于TF-IDF输出的是稀疏矩阵,标准化时需要关闭均值中心化参数,避免破坏稀疏格式造成内存溢出,参考代码:
from sklearn.preprocessing import StandardScaler scaler = StandardScaler(with_mean=False) scaled_features = scaler.fit_transform(features) - 传入模型训练:将标准化后的数值特征和标签传入逻辑回归即可正常训练
from sklearn.linear_model import LogisticRegression lr_model = LogisticRegression() lr_model.fit(scaled_features, target)
注意:不要尝试直接将清洗后的字符串强制转换为浮点类型,纯文本本身没有直接对应浮点值的语义逻辑,必须通过词袋、TF-IDF、词嵌入等方式完成文本到数值向量的映射,才能输入模型训练。
内容的提问来源于stack exchange,提问作者ChelseaSupencheck
相关产品推荐
相关产品推荐

