我是webscraping并且我将我的utf-8保存到csv,清理它,现在我正在尝试创建我的训练和测试文件以便能够使用Facebooks fastText,现在这就是我所拥有的并且它正在给予我错了
from sklearn.cross_validation import train_test_split
y_all = df["normalized"]
X_all = df.drop('normalized', axis = 1)
X_train, X_test, y_train, y_test = train_test_split(X_all, y_all, `test_size=0.3, random_state=1)`
import fasttext as ft
classifier = ft.supervised(X_train, y_train)
这是它返回的错误,这是jupyter笔记本中的windows的fastText
TypeError Traceback (most recent call last)
<ipython-input-47-1f4fa41d367f> in <module>()
----> 1 classifier = ft.supervised(X_train, y_train)
fasttext/fasttext.pyx in fasttext.fasttext.supervised (fasttext/fasttext.cpp:6665)()
fasttext/fasttext.pyx in fasttext.fasttext.train_wrapper (fasttext/fasttext.cpp:4732)()
C:\Program Files\Anaconda3\lib\genericpath.py in isfile(path)
28 """Test whether a path is a regular file"""
29 try:
---> 30 st = os.stat(path)
31 except OSError:
32 return False
TypeError: argument should be string, bytes or integer, not DataFrame
答案 0 :(得分:0)
@ kwashington122我认为你使用监督的方式是错误的。 fasttext.supervised是一个分类器,它将应该包含标记数据的训练文件作为输入 X_train:
text1 label_x
text2 label_y
,您需要指定标签前缀,以便fasttext可以捕获您拥有的不同标签。
model = fasttext.supervised(X_train,'model', label_prefix='label_')
fasttext将在我的示例x和y中检测到2个标签(因为我将label_指定为标签的前缀)。
然后,为了在一组新数据上预测或测试分类器,您只需要这样做:
model.test(X_test)
或者如果您想预测文本或句子的标签,请执行以下操作:
model.predict(X_test) ## where text has no labels.
我的回答有点晚了抱歉只是在寻找问题的答案时遇到了问题。