在使用线性回归模型时,我将数据划分为训练集和测试集。然后,我使用以下公式计算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值。)还是完全发生了其他事情?
fit()只适合与训练同义的数据,即适合数据意味着训练数据。分数有点像测试或预测。
因此,应该使用不同的数据集来训练分类器和测试准确性一个人可以这样做。X_train,X_test,y_train,y_test=交叉验证。train_testrongplit(X,y,testrongize=0.2)clf=neighbors.KNeighborsClassifier()clf.fit(X_train,y_train)准确度=clf分数(X_test,y_test)