【发布时间】:2015-08-26 21:07:12
【问题描述】:
我正在尝试在下面的脚本中使用TfidVectorizer 和partial_fit 技术来训练PassiveAggressiveClassifier:
代码更新:
a, ta = [], []
r, tr = [], []
g = []
vect = HashingVectorizer(ngram_range=(1,4))
model = PassiveAggressiveClassifier()
with open('files', 'rb') as f:
for line in f:
line = line.strip()
with open('gau-' + line + '.csv', 'rb') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
res = row['gau']
g.append(res)
cls = np.unique(g)
print(len(cls))
with open('gau-' + line + '.csv', 'rb') as csvfile:
reader = csv.DictReader(csvfile)
i = 0
j = True
for row in reader:
arr = row['text']
res = row['gau']
a.append(arr)
if(len(res) > 0):
r.append(int(res))
i = i + 1
if i % 400 == 0:
training_set = vect.fit_transform(a)
print(training_set.shape)
training_result = np.array(r)
model = model.partial_fit(
training_set, training_result, classes=cls)
a, r, i = [], [], 0
print(model)
testing_set = vect.transform(ta)
testing_result = np.array(tr)
predicted = model.predict(testing_set)
print "Result to be predicted: "+testing_result
print "Prediction: "+predicted
有多个 CSV 文件,每个文件包含 4k-5k 条记录,我尝试使用 partial_fit 函数一次容纳 400 条记录。当我运行这段代码时,我遇到了以下错误:
Result to be predicted: 1742
Prediction: 2617
我该如何解决这个问题?我的 CSV 文件中的记录是可变长度的。
更新:
将TfidVectorizer 替换为HashingVectorizer,我成功地创建了我的模型,但是现在在对我的测试数据执行预测时,生成的预测都是不正确的。
我的训练数据包含数百万行 csv 文件,每行最多包含 4k-5k 个文本单词。
那么我的方法有什么问题,即这些算法可以与我的数据一起使用吗?
【问题讨论】:
-
您的代码在
model = model.partial_fit行是否失败?还是之前发生的? -
它显然在第二个 partial_fit 因为我们有 2 个形状输出。问题是 tdif 输出有时大小不一样。有谁知道在矢量化器的每个变换中具有相同数量的特征的方法?
标签: machine-learning scikit-learn