Python Sklearn管道值错误:无法将字符串转换为浮点
我第一次玩sklearn和NLP,我想我了解我所做的一切,直到我不知道如何修复这个错误。以下是相关代码(主要改编自): 加载到数据框中的数据是经过预处理的文本,包括所有停止字、标点符号、unicode、大写字母等。这是我在分类器上调用fit时遇到的错误,其中。。。表示应在管道中矢量化的文档之一:Python Sklearn管道值错误:无法将字符串转换为浮点,python,scikit-learn,nlp,text-classification,Python,Scikit Learn,Nlp,Text Classification,我第一次玩sklearn和NLP,我想我了解我所做的一切,直到我不知道如何修复这个错误。以下是相关代码(主要改编自): 加载到数据框中的数据是经过预处理的文本,包括所有停止字、标点符号、unicode、大写字母等。这是我在分类器上调用fit时遇到的错误,其中。。。表示应在管道中矢量化的文档之一: ValueError: could not convert string to float: ... 我最初认为TfidfVectorizer()不工作,导致SVD算法出现错误,但在我从管道中提取每个
ValueError: could not convert string to float: ...
我最初认为TfidfVectorizer()不工作,导致SVD算法出现错误,但在我从管道中提取每个步骤并按顺序执行之后,相同的错误只出现在XGBClassifier.fit()上
更让我困惑的是,我试图在解释器中一步一步地将此脚本分割开来,但当我尝试导入read_文件或build_data_frame时,我的一个字符串出现了相同的ValueError,但这仅仅是在:
from classifier import read_files
我不知道这是怎么发生的,如果有人知道我的明显错误是什么,我会非常感激。我试图独自思考这些概念,但遇到这样的问题让我觉得自己无能为力。您的管道的第一部分是
功能联盟FeatureUnion
将并行地将它获得的所有数据传递给所有内部零件。FeatureUnion
的第二部分是包含单个StandardScaler
的管道。这就是错误的根源
这是您的数据流:
X --> classifier, Pipeline
|
| <== X is passed to FeatureUnion
\/
features, FeatureUnion
|
| <== X is duplicated and passed to both parts
______________|__________________
| |
| <=== X contains text ===> |
\/ \/
text, Pipeline words, Pipeline
| |
| <=== Text is passed ===> |
\/ \/
tfidf, TfidfVectorizer wscaler, StandardScaler <== Error
| |
| <==Text converted to floats |
\/ |
svd, TruncatedSVD |
| |
| |
\/____________________________\/
|
|
\/
clf, XGBClassifier
X-->分类器,管道
|
|太棒了,这太有用了。我不明白FeatureUnion并行化了它的输入。StandardScaler是另一个我仍在绞尽脑汁的难题。我读到很多分类器需要它来规范化数据,所以我保留了它
X --> classifier, Pipeline
|
| <== X is passed to FeatureUnion
\/
features, FeatureUnion
|
| <== X is duplicated and passed to both parts
______________|__________________
| |
| <=== X contains text ===> |
\/ \/
text, Pipeline words, Pipeline
| |
| <=== Text is passed ===> |
\/ \/
tfidf, TfidfVectorizer wscaler, StandardScaler <== Error
| |
| <==Text converted to floats |
\/ |
svd, TruncatedSVD |
| |
| |
\/____________________________\/
|
|
\/
clf, XGBClassifier