gpt4 book ai didi

python - 尝试针对我的随机森林模型进行测试时,如何修复 “Number of features error”?

转载 作者:太空宇宙 更新时间:2023-11-04 02:00:09 25 4
gpt4 key购买 nike

我有一个训练有素的模型。我想找出新数据属于哪个类。我做了一些尝试,但遇到了一些问题。

with open('text_classifier', 'rb') as training_model:
model = pickle.load(training_model)
y_pred2 = model.predict(X_test)

这段代码有效

但是……

 new_test_data=["spor toto süper lig 30. hafta medipol bu akşam ev göztepe 
ile saat 20.30'da başla mücadele suat arslanboğa arslanboğa yardımcı
serka ok ve ismail şencan"]
tfidfconverter = TfidfVectorizer()
new_test_data = tfidfconverter.fit_transform(new_test_data).toarray()
model.predict(new_test_data)

我遇到这样的错误

Number of features of the model must match the input. Model n_features is 9671 and input n_features is 25

The code block I'm training with

data = load_files(r"...\docs",encoding="utf-8")
X, y = data.data, data.target
tfidfconverter = TfidfVectorizer(min_df=3, max_df=0.7)
X = tfidfconverter.fit_transform(X).toarray()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,
random_state=0)
classifier = RandomForestClassifier(n_estimators=1000, random_state=0)
classifier.fit(X_train, y_train)
y_pred2 = classifier.predict(X_test)

最佳答案

我相信您需要在数据中指定要在训练模型时实际用作特征的参数。看起来您的训练模型正在使用行条目而不是每一列作为特征。这可以通过读入数据然后转身并将其转换为 CSV 然后再次读入来解决。但是,如果您已经知道数据的结构,则无需执行此步骤。基本上,您只需要知道数据列的名称。此方法需要 Pandas 模块。这是一些代码...

    data = load_files(r"...\docs",encoding="utf-8")
data.to_csv('train_data.csv', encoding = 'utf-8', index = False)

然后从 CSV 中读回训练数据...

    train_data = pd.read_csv('train_data.csv')

现在,当您调用 train_test_split 方法时,您应该指定要用作数据特征的内容。这通常是数据表中的列,因为这些是收集来分析的指标。我定义函数来拆分数据并构建指定特征的模型,因为我认为它更容易理解,但您也可以直接调用函数。

    def split_dataset(dataset, train_percentage, feature_headers, target_header):
train_x, test_x, train_y, test_y = train_test_split(dataset[feature_headers],
dataset[target_header], train_size = train_percentage)
return train_x, test_x, train_y, test_y

def random_forest_classifier(features, target):
model = RandomForestClassifier(n_estimators = 500, oob_score = True, n_jobs
=-1,random_state = 1, min_impurity_decrease = .01)
model.fit(features, target)
return model

现在您已准备好使用您的数据调用函数。

    train_x, test_x, train_y, test_y = split_dataset(train_data, 0.80, 
train_data.columns[0:24], train_data.columns[-1])

trained_model = random_forest_classifier(train_x,train_y)

您现在应该能够使用这 25 个特征对您训练的模型进行预测。

关于python - 尝试针对我的随机森林模型进行测试时,如何修复 “Number of features error”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55874232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com