【问题标题】:scikit learn clf.fit / score model accuracyscikit 学习 clf.fit / 评分模型准确性
【发布时间】:2013-10-24 21:36:33
【问题描述】:

我正在建立一个模型clf

clf = MultinomialNB()
clf.fit(x_train, y_train)

然后我想使用分数查看我的模型准确性

clf.score(x_train, y_train)

结果是 0.92

我的目标是针对测试进行测试,所以我使用

clf.score(x_test, y_test)

这是我得到的0.77,所以我认为它会给我的结果与下面的代码相同

clf.fit(X_train, y_train).score(X_test, y_test)

我收到了0.54。有人可以帮我理解为什么0.77 > 0.54 吗?

【问题讨论】:

    标签: python machine-learning scikit-learn classification


    【解决方案1】:

    如果x_trainy_trainx_testy_test 在两种情况下都相同,则您必须得到相同的结果。这是一个使用 iris 数据集的示例,您可以看到两种方法得到相同的结果。

    >>> from sklearn.naive_bayes import MultinomialNB
    >>> from sklearn.cross_validation import train_test_split
    >>> from sklearn.datasets import load_iris
    >>> from copy import copy
    # prepare dataset
    >>> iris = load_iris()
    >>> X = iris.data[:, :2]
    >>> y = iris.target
    >>> X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
    # model
    >>> clf1 = MultinomialNB()
    >>> clf2 = MultinomialNB()
    >>> print id(clf1), id(clf2) # two different instances
     4337289232 4337289296
    >>> clf1.fit(X_train, y_train)
    >>> print clf1.score(X_test, y_test)
     0.633333333333
    >>> print clf2.fit(X_train, y_train).score(X_test, y_test)
     0.633333333333
    

    【讨论】:

    • 这就是我的想法,我的查询中可能有错误,因为数据太大了。奇怪的。感谢您的确认。我会再试一次。
    猜你喜欢
    • 2020-06-15
    • 2016-12-29
    • 2014-04-18
    • 2021-10-14
    • 2016-03-11
    • 2021-09-22
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    相关资源
    最近更新 更多