我正在尝试进行分类,其中一个文件完全是培训,另一个文件完全是测试。这是可能的?我尝试过:
<form>
<select name="users" onchange="showUser(this.value)">
<option value="">Select a person:</option>
<option value="1">Peter Griffin</option>
<option value="2">Lois Griffin</option>
<option value="3">Joseph Swanson</option>
<option value="4">Glenn Quagmire</option>
</select>
</form>
<div id="txtHint"><b>Person info will be listed here...</b></div>
我将test_size设置为零,因为我不想在这些文件中有分区。而且我还在训练和测试文件中应用了Count和TFIDF。
我的输出错误:
回溯(最近通话最近一次):
文件“ classif.py”,第34行,在 X_train,y_train = train_test_split(X,y,test_size = 0,random_state = 100)
ValueError:太多值无法解包(预期2)
答案 0 :(得分:5)
@Alexis明确指出并解决了train_test_split中遇到的错误。再一次,我也建议不要使用train_test_split,因为它除了洗牌之外不会做任何事情。
但是我想强调另一个重要的观点,即,如果要分开保存训练文件和测试文件,那么就不要单独使用矢量化程序。它将为训练和测试文件创建不同的列。示例:
cv = CountVectorizer()
train=['Hi this is stack overflow']
cv.fit(train)
cv.get_feature_names()
输出:
['hi', 'is', 'overflow', 'stack', 'this']
test=['Hi that is not stack overflow']
cv.fit(test)
cv.get_feature_names()
输出:
['hi', 'is', 'not', 'overflow', 'stack', 'that']
因此,单独安装它们将导致列不匹配。因此,您应该先合并训练文件和测试文件,然后再合并fit_transform矢量化器,否则,如果事先没有测试数据,则只能使用适合火车数据的矢量化器转换测试数据,这将忽略火车数据中不存在的单词
答案 1 :(得分:0)
因此,首先,对于出现的错误,只需按如下所示编写代码,即可正常工作。
X_train, y_train,_,_ = train_test_split(X, y, test_size = 0, random_state = 100)
X_test, y_test,_,_ = train_test_split(X_T, y_t, test_size = 0, random_state = 100)
它返回4组代码,预计您将有4个变量来接收它们。放置_
只是为了让所有人都知道您不在乎这些输出。
第二,我真的不知道你为什么要进行这种操作。如果您想对数据进行混洗,那不是最好的方法。而且您之前已经做过。