如何使用sklearn Perceptron和DictVectorizer预测新数据

时间:2019-10-01 11:28:42

标签: python machine-learning scikit-learn perceptron

我已经使用sklearn训练了模型

    word      label
0   @paulwalk   O
1   It          O
2   's          O
3   the         O
4   view        O

训练数据的形状为(55725,2)

我已经训练了实体识别模型。代码段如下

X = train_data.drop('label', axis=1)
v = DictVectorizer()
X = v.fit_transform(X.to_dict('records'))
y = train_data.label.values

火车数据矩阵的形状为

print(x_train.shape) : (44580, 13794)

训练模型

x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
per = Perceptron(verbose = 10, max_iter = 5, n_jobs = -1)
per.partial_fit(x_train, y_train, classes)

在测试数据上测试模型可以提供良好的准确性

print(f1_score(per.predict(x_test), y_test, average="micro"))

0.95326589

现在一些新数据到了,我想检查我在这些新数据上的模型准确性。但出现以下错误。

X_new = v.fit_transform(data.to_dict('records'))
per.predict(X_new)
  

-------------------------------------------------- ---------------------------- ValueError Traceback(最近的呼叫   最后)   ----> 1个预测(X_new)

     

〜\ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-packages \ sklearn \ linear_model \ base.py   在预测中(自己,X)       279每个样品的预测类别标签。       280“”“   -> 281分= self.decision_function(X)       第282回       283个索引=(得分> 0).astype(np.int)

     

〜\ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-packages \ sklearn \ linear_model \ base.py   在decision_function(自己,X)中       260如果X.shape [1]!= n_features:       261提高ValueError(“ X每个样本具有%d个特征;期望%d”   -> 262%(X.shape [1],n_features))       263       264分= safe_sparse_dot(X,self.coef_.T,

     

ValueError:每个样本X具有5843个功能;期待17441

每个样本错误似乎都有一个特征。

那么我如何为每个样本的新数据获得相同的功能

0 个答案:

没有答案