Python 从已经训练好的逻辑回归模型调用predict

Python 从已经训练好的逻辑回归模型调用predict,python,scikit-learn,Python,Scikit Learn,我训练了一个逻辑回归模型,用于文本数据的多重分类。我想从模型中生成一个样本预测,但是我得到了这个错误 ValueError: X has 30 features per sample; expecting 100000 下面是对文本数据进行矢量化的代码 tfidf_pipeline = Pipeline([ ('tfidf' ,TfidfVectorizer(max_features=50000, ngram_range=(1, 3), stop_words = 'english',

我训练了一个逻辑回归模型,用于文本数据的多重分类。我想从模型中生成一个样本预测,但是我得到了这个错误

ValueError: X has 30 features per sample; expecting 100000
下面是对文本数据进行矢量化的代码

tfidf_pipeline = Pipeline([
    ('tfidf' ,TfidfVectorizer(max_features=50000, ngram_range=(1, 3), stop_words = 'english', strip_accents= 'ascii',))])

preprocessor_pipeline = ColumnTransformer(
    transformers=[
    ('short_description', tfidf_pipeline,'short_description'),
    ('details', tfidf_pipeline,'details'),
])
下面是我试图运行的代码,但是上面出现了后一个错误

d = {'short_description' : ['[mitigated]  [ubl5] ssd slam station not working'],
    'details' : ['ssd slam station not working, unable to  take slam from the station.']}
df_test = pd.DataFrame(data=d)
X = df_test[['short_description', 'details']]
X_prep = preprocessor_pipeline.fit_transform(X)
y_p = lr.predict(X_prep)

培训和测试步骤的
预处理器管道必须相同

以下是一个最小的可复制示例:

将numpy导入为np
作为pd进口熊猫
从sklearn.feature\u extraction.text导入TfidfVectorizer
从sklearn.linear_模型导入逻辑回归
原始输入=[
“第一句话看起来像这样”,
“第二句话看起来像这样”,
“它将展示一些东西”,
]
矢量器=TfidfVectorizer(stop_words=“english”,strip_accents=“ascii”)
X=矢量器。拟合变换(原始输入)
y=np.array([0,0,1])
clf=逻辑回归()
clf.配合(X,y)
d={
“简短描述”:[“[缓解][ubl5]ssd slam站不工作”],
“详细信息”:[“ssd slam站不工作,无法从站获取slam。”,
}
df_测试=pd.数据帧(数据=d)
X_测试=矢量器。拟合变换(df_测试)
打印(clf.预测(X_检验))
结果:

Traceback (most recent call last):
  File "vectorizer_test.py", line 27, in <module>
    print(clf.predict(X_test))
  File "/home/hayesall/miniconda3/envs/stackoverflow/lib/python3.7/site-packages/sklearn/linear_model/_base.py", line 309, in predict
    scores = self.decision_function(X)
  File "/home/hayesall/miniconda3/envs/stackoverflow/lib/python3.7/site-packages/sklearn/linear_model/_base.py", line 289, in decision_function
    % (X.shape[1], n_features))
ValueError: X has 2 features per sample; expecting 6

培训和测试步骤的
预处理器管道必须相同

以下是一个最小的可复制示例:

将numpy导入为np
作为pd进口熊猫
从sklearn.feature\u extraction.text导入TfidfVectorizer
从sklearn.linear_模型导入逻辑回归
原始输入=[
“第一句话看起来像这样”,
“第二句话看起来像这样”,
“它将展示一些东西”,
]
矢量器=TfidfVectorizer(stop_words=“english”,strip_accents=“ascii”)
X=矢量器。拟合变换(原始输入)
y=np.array([0,0,1])
clf=逻辑回归()
clf.配合(X,y)
d={
“简短描述”:[“[缓解][ubl5]ssd slam站不工作”],
“详细信息”:[“ssd slam站不工作,无法从站获取slam。”,
}
df_测试=pd.数据帧(数据=d)
X_测试=矢量器。拟合变换(df_测试)
打印(clf.预测(X_检验))
结果:

Traceback (most recent call last):
  File "vectorizer_test.py", line 27, in <module>
    print(clf.predict(X_test))
  File "/home/hayesall/miniconda3/envs/stackoverflow/lib/python3.7/site-packages/sklearn/linear_model/_base.py", line 309, in predict
    scores = self.decision_function(X)
  File "/home/hayesall/miniconda3/envs/stackoverflow/lib/python3.7/site-packages/sklearn/linear_model/_base.py", line 289, in decision_function
    % (X.shape[1], n_features))
ValueError: X has 2 features per sample; expecting 6