首页 文章

sklearn .fit()和.score()之间的关系

提问于
浏览
1

在使用线性回归模型时,我将数据拆分为训练集和测试集 . 然后,我使用以下方法计算R ^ 2,RMSE和MAE:

lm.fit(X_train, y_train)
R2 = lm.score(X,y)
y_pred = lm.predict(X_test)
RMSE = np.sqrt(metrics.mean_squared_error(y_test, y_pred))
MAE = metrics.mean_absolute_error(y_test, y_pred)

我以为我正在为整个数据集计算R ^ 2(而不是比较训练和原始数据) . 但是,我了解到你必须在得分之前拟合模型,因此我不确定我是否对原始数据(在R2中输入)或我用来拟合模型的数据(X_train和y_train)进行评分) . 当我跑:

lm.fit(X_train, y_train)
lm.score(X_train, y_train)

我得到的结果与我得分X和y时得到的结果不同 . 所以我的问题是.score参数的输入与拟合的模型相比(从而使lm.fit(X,y); lm.score(X,y)原始数据的R ^ 2值和lm .fit(X_train,y_train); lm.score(X,y)基于.fit中创建的模型的原始数据的R ^ 2值 . )还是完全发生的其他事情?

1 回答

  • 0

    fit()只适合与训练同义的数据,适合数据意味着训练数据 . 得分就像测试或预测 .

    因此,应该使用不同的数据集来训练分类器并测试精确度 . 可以这样做 . X_train,X_test,y_train,y_test = cross_validation.train_test_split(X,y,test_size = 0.2)clf = neighbors.KNeighborsClassifier()clf.fit(X_train,y_train)accuracy = clf.score(X_test,y_test)

相关问题