使用字符串列表作为函数的循环

我有一系列机器学习模型

models = [ 'SVC', 'RandomForestClassifier', 'GradientBoostingClassifier']

我试图创建一个循环来遍历上述所有模型。下面的代码可以工作。

for i in models:        clf = SVC()                clf.fit(data_X_train, data_Y_train)        predictions = clf.predict(data_X_test)  # predictions 是包含 data_X_test 特征预测值(-1 或 1)的数组        predictions_dataframe = pd.DataFrame(predictions)  # 将数组转换为数据框                from sklearn.metrics import accuracy_score        y_predictions = clf.predict(data_X_test)  # 基于 x_test 预测 y        print("使用机器学习的准确率得分: " + str(accuracy_score(data_Y_test, y_predictions)))

我尝试了几种循环方法,但它们最终都报错,如下两种情况所示。

我得到的错误是

for i in models:        clf = print(i)()TypeError                                 Traceback (most recent call last)<ipython-input-43-d34dacb41464> in <module>      1 for i in models:----> 2         clf = print(i)()      3       4         clf.fit(data_X_train, data_Y_train)      5 TypeError: 'NoneType' object is not callable

或者

for i in models:        clf = i()---------------------------------------------------------------------------TypeError                                 Traceback (most recent call last)<ipython-input-44-316d0ec4eb4e> in <module>      1 for i in models:----> 2         clf = i()      3       4         clf.fit(data_X_train, data_Y_train)      5 TypeError: 'str' object is not callable

问题似乎是因为我在列表中使用了字符串,而实际上这是一个函数。

为什么字符串不能调用函数?我以为它在被调用后会变成函数。

我需要更改我的模型列表吗?


回答:

如果您已经有了模型实例,您可以将持有这些实例的变量放入列表中,然后对它们进行迭代。例如:

rfc = RandomForestClassifier()dtc = DecisionTreeClassifier()# 等等clfs = [rfc,dtc]for clf in clfs:     clf.fit(x_train, y_train)     # 等等

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注