【问题标题】:Number of features of the model must match the input. Model n_features is 40 and input n_features is 38模型的特征数量必须与输入相匹配。模型 n_features 为 40,输入 n_features 为 38
【发布时间】:2023-04-07 09:31:01
【问题描述】:

我收到此错误。请给我任何解决它的建议。这是我的代码。我从 train.csv 获取训练数据并从另一个文件 test.csv 测试数据。我是机器学习的新手,所以我不明白是什么问题。给我任何建议。

import quandl,math    
import numpy as np    
import pandas as pd    
import matplotlib.pyplot as plt
from matplotlib import style
import datetime
from sklearn.ensemble import RandomForestClassifier
from sklearn.preprocessing import LabelEncoder
from sklearn.feature_extraction.text import CountVectorizer
from sklearn import metrics
train = pd.read_csv("train.csv", index_col=None)
test = pd.read_csv("test.csv", index_col=None)
vectorizer = CountVectorizer(min_df=1)
X1 = vectorizer.fit_transform(train['question'])
Y1 = vectorizer.fit_transform(test['testing'])
X=X1.toarray()
Y=Y1.toarray()
#print(Y.shape)
number=LabelEncoder()
train['answer']=number.fit_transform(train['answer'].astype('str'))
features = ['question','answer']
y = train['answer']
clf=RandomForestClassifier(n_estimators=100)
clf.fit(X[:25],y)
predicted_result=clf.predict(Y[17])
p_result=number.inverse_transform(predicted_result)
f = open('output.txt', 'w')
t=str(p_result)
f.write(t)
print(p_result)

【问题讨论】:

    标签: python machine-learning scikit-learn random-forest sklearn-pandas


    【解决方案1】:

    您的代码存在多个问题。 但是与这个问题相关的是,您在训练和测试数据上都拟合了 CountVectorizer (vectorizer),这就是您获得不同功能的原因。

    你应该做的是:

    X1 = vectorizer.fit_transform(train['question'])
    
    # The following line is changed
    Y1 = vectorizer.transform(test['testing'])
    

    【讨论】:

    • @KapilSen 如果有帮助,请考虑接受答案。
    猜你喜欢
    • 2021-07-28
    • 2017-11-04
    • 2021-08-04
    • 2018-11-08
    • 2021-04-14
    • 2021-01-19
    • 2021-03-04
    • 2020-10-01
    • 1970-01-01
    相关资源
    最近更新 更多