在使用线性回归模型时,我将数据拆分为训练集和测试集。然后,我使用以下方法计算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值。)还是完全发生的其他事情?
答案 0 :(得分: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) precision = clf.score(X_test,y_test)