【问题标题】:How to solve "AttributeError: 'KNeighborsClassifier' object has no attribute 'n_samples_fit_'"?如何解决“AttributeError:'KNeighborsClassifier'对象没有属性'n_samples_fit_'”?
【发布时间】:2020-11-12 03:37:06
【问题描述】:

我正在使用 KNeighborsClassifier 用著名的鸢尾花数据集对花朵进行分类。

我已经完成了培训,现在将其部署为网络应用程序。

但问题是,当我在本地测试应用程序时,它会显示这一点,

AttributeError: 'KNeighborsClassifier' object has no attribute 'n_samples_fit_'

我google了很多,还是找不到解决办法。

应用在这里,https://github.com/josephofiowa/GA_iris,顺便说一句不是我写的。

我在这里找到了一个帖子,但它是关于图像识别https://github.com/pliablepixels/zmeventnotification/issues/188 我不确定它是否相关,但我仍然在这里发布。说是版本问题,怎么降级呢?

谢谢你们!

from flask import Flask, render_template, session, redirect, url_for
from flask.ext.wtf import Form
from wtforms import IntegerField, StringField, SubmitField, SelectField, DecimalField
from wtforms.validators import Required
import pickle
from sklearn import datasets

# Initialize Flask App
app = Flask(__name__)


print("loading my model")
with open('model.pkl', 'rb') as handle:
    machine_learning_model = pickle.load(handle)
print("model loaded")


# Initialize Form Class
class theForm(Form):
    param1 = DecimalField(label='Sepal Length (cm):', places=2, validators=[Required()])
    param2 = DecimalField(label='Sepal Width (cm):', places=2, validators=[Required()])
    param3 = DecimalField(label='Petal Length (cm):', places=2, validators=[Required()])
    param4 = DecimalField(label='Petal Width (cm):', places=2, validators=[Required()])
    submit = SubmitField('Submit')


@app.route('/', methods=['GET', 'POST'])
def home():
    print(session)
    form = theForm(csrf_enabled=False)
    if form.validate_on_submit():  # activates this if when i hit submit!
        # Retrieve values from form
        session['sepal_length'] = form.param1.data
        session['sepal_width'] = form.param2.data
        session['petal_length'] = form.param3.data
        session['petal_width'] = form.param4.data
        # Create array from values
        flower_instance = [[(session['sepal_length']),(session['sepal_width']),(session['petal_length']),(session['petal_width'])]]

        # Return only the Predicted iris species
        flowers = ['setosa', 'versicolor', 'virginica']
        session['prediction'] = flowers[machine_learning_model.predict(flower_instance)[0]]

        # Implement Post/Redirect/Get Pattern
        return redirect(url_for('home'))

    return render_template('home.html', form=form, **session)


# Handle Bad Requests
@app.errorhandler(404)
def page_not_found(e):
    return render_template('404.html'), 404

app.secret_key = 'super_secret_key_shhhhhh'
if __name__ == '__main__':
    app.run(debug=True)

【问题讨论】:

  • 欢迎堆栈溢出。请花一些时间做tour 并学习如何How to Ask。您的帖子包含指向可能会更改、无法复制等的图像或存储库的链接。在此处发布您迄今为止拥有的相关代码并说明哪里出了问题。
  • 谢谢罗纳德,我编辑了这个问题,希望现在更清楚了。

标签: flask web-applications classification attributeerror knn


【解决方案1】:

尝试使用 machine_learning_model.knn_.n_samples_fit_=flower_instance.shape[0]

最近在其中一个中尝试过类似的解决方案

【讨论】:

  • 谢谢@Sayantan 你能告诉我更多关于它的信息吗?就像这个语法在哪里?或者我应该用哪个来代替它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-23
  • 2017-11-08
  • 1970-01-01
  • 1970-01-01
  • 2021-05-26
相关资源
最近更新 更多